基于 PyTorch实现YOLOv5

2023-11-17

The First Article

前言

本文记录基于PyTorch实现Github作者ultralytics的YOLOv5-tag v5.0的迁移学习大致流程,使用自制数据集(100张图片)。如有不对之处请批评指正,欢迎提出宝贵意见和建议,若需源码或者有疑问请留言。
Email:sunshilin_22@163.com

实现环境

使用Anaconda的虚拟环境安装以下包和其他包参考requirements.txt
Python 3.6 +PyTorch 1.10.2+opencv 4.5.4.60 +PyCharm 2021.3.2
GPU:NAVIDIA GeForce GTX 1050 Ti(4GB)

基本流程

一般分为以下四步:数据准备、建立模型、训练模型、模型评估。

数据准备

数据集包括实际场景的 100 幅图像(从百度图片下载相应图片)。使用labelImg图像标注工具,VOC格式标注图像生成标签label的xml文件,再利用脚本将标签label的xml文件转为txt文件、将数据集划分为训练集、验证集、测试集(81:9:10)。标签有七类:danger(未佩戴头盔或帽子), hat(帽子), person(人), Electric cars(电动车), car(除电动车以外的车), Helmet(头盔), bicycle(自行车)。这里展示训练集图片:

建立模型

从 Github上下载YOLOv5模型( yolov5 tag v5.0传送门.)进行迁移学习,修改模型配置文件,使用中规模网络配置yolov5m.yaml和预训练模型权重yolov5m.pt。

python train.py --img 640 --batch 16 --epochs 300 --data ./dataset/data.yaml --cfg models/yolov5m.yaml --weights yolov5m.pt --device 0

训练模型

训练结果如下图所示,训练完的模型在验证集下map达到82.2%,查准率90.9%,召回率72.8%。
在这里插入图片描述
验证集的正确标签如下图所示。
在这里插入图片描述
验证集的预测标签如下图所示。
在这里插入图片描述
模型在测试集表现如下图所示。训练完的模型在测试集下map达到81.7%,查准率81%,召回率79.2%。
在这里插入图片描述
测试集的正确标签如下图所示。

模型评估

如下图所示,模型在训练集、验证集是否准确预测出边框的损失值稳定收敛;模型在训练集、验证集的边框中是否准确预测出是否有物体的损失值呈现两张不同状态:训练集的损失值伴随着波动收敛、验证集的损失值迅速收敛并逐渐发散;模型在训练集、验证集的存在物体边框中是否准确预测出物体所属类别的损失值呈现两张不同状态:训练集的损失值稳定收敛、验证集的损失值迅速收敛后并上下波动;查准率与召回率在大约190轮时下降了约0.2,之后逐渐升高;Map在200轮之后趋于稳定。
results.png:
在这里插入图片描述
如下图所示,PR曲线中P表示precision(查准率),R表示recall(召回率),其代表的是精准率与召回率的关系。PR曲线下围成的面积即AP,所有类别AP平均值即Map。people的AP最低,hat和bicycle的AP最高。
PR_curve.png:
在这里插入图片描述

图片预测

在这里插入图片描述

视频预测

test2s

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于 PyTorch实现YOLOv5 的相关文章

随机推荐

  • VS-Qt环境下dll

    首先 不得不承认的是 Qt中的数据类型使用很方便 当我们的主框架是基于Qt的时候也就没必要刻意追求辅助函数所在的dll是Win32的 如果原功能函数就是只使用标准库及基础类型 那也可以在Qt框架中调用 这不是本篇的重点 我们之所以要使用Qt
  • GetOpenFilename的基本用法

    GetOpenFilename 一 概述基本语法 Application GetOpenFilename 方法 显示标准的 打开 对话框 并获取用户文件名 而不必真正打开任何文件 只是把打开文件名称返回程序 GetOpenFilename相
  • httpClient 几种超时问题

    HttpClient的有3种超时时间 分别是 1 java view plaincopyprint ConnManagerParams setTimeout params 1000 ConnManagerParams setTimeout
  • [论文阅读] (21)S&P21 Survivalism: Systematic Analysis of Windows Malware Living-Off-The-Land (经典离地攻击)

    娜璋带你读论文 系列主要是督促自己阅读优秀论文及听取学术讲座 并分享给大家 希望您喜欢 由于作者的英文水平和学术能力不高 需要不断提升 所以还请大家批评指正 非常欢迎大家给我留言评论 学术路上期待与您前行 加油 前一篇从个人角度介绍USEN
  • python字典取值的几种方法

    Python 字典 dictionary 是一种可变容器模型 可以存储任意数量的任意类型的数据 字典中的每个元素由一个键和一个值组成 键和值之间用冒号分隔 字典通常用于存储键值对的数据 例如在数据库中存储记录 以下是 Python 字典取值
  • Unity将屏幕坐标转为世界坐标的思路

    1 使用ScreenToWorldPoint将获取的屏幕位置直接转成世界坐标 坑1 获取的屏幕坐标Input mousePosition是一个2d坐标 z轴值为0 这个z值是相对于当前camera的 为零表示z轴与相机重合了 因此给Scre
  • Floyd算法

    Floyd算法又称为插点法 是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法 与Dijkstra算法类似 该算法名称以创始人之一 1978年图灵奖获得者 斯坦福大学计算机科学系教授罗伯特 弗洛伊德命名 Dijkstra算法
  • Unsatisfied dependency expressed through field ‘userMapper‘问题解决

    SSM框架练手 mapper层 Autowire创建bean怎么也不成功 报错 org springframework beans factory UnsatisfiedDependencyException Error creating
  • JS 两个对象数组根据id去重 / 取补集

    let arr1 id 1 name a id 2 name b id 3 name c let arr2 id 1 name a let newArr arr1 filter item gt arr2 some val gt item1
  • 硬盘运行与“AHCI 模式”还是“IDE 模式” 分类: 生活百科 ...

    如今SATA硬盘越来越流行 最新购买或者组装的电脑 基本都安装新一代的SATA硬盘 由于绝大多数BIOS初始设置是 IDE模式 安装的windows XP和vista系统 并没有运行发挥最大性能的 AHCI模式 到底自己的系统是否运行与 A
  • SQL语句详解(四)——SQL联表查询

    今天我们继续给大家介绍MySQL相关知识 本文主要内容是SQL联表查询 一 SQL联表查询简介 在前文SQL语句详解 三 SQL子查询中 我们给大家介绍了SQL子查询的相关知识和使用示例 实际上 如果涉及到SQL多个表之间的查询 使用SQL
  • Java面向对象——图书管理系统(小白也能看的懂!)

    文章目录 一 功能介绍 二 JAVA面向对象思想 包的分装 1 book包 2 user包 较复杂 3 operation包 接口包 三 代码框架的搭建 1 book包 Book类 2 book包 BookList类 3 operation
  • 手机如何远程控制挂机宝? 影云挂机宝

    首先我们需要知道挂机宝是什么 挂机宝就相当于云电脑 24小时在线挂机 1 手机远程的话我们需要用到一个软件 微软远程桌面 远程桌面软件很多 这个随意 喜欢用哪个都行 安卓下载 https www lanzous com i2i8bti 密码
  • android Jar文件的数字签名

    转自 http hubingforever blog 163 com blog static 17104057920118104058241 JAR文件可以用 jarsigner工具或者直接通过 java securityAPI 签名 签名
  • 利用ChatGPT提高代码质量的5种方法

    本文首发于公众号 更AI power ai 欢迎关注 编程 AI干货及时送 5个可以提升你日常工作效率的ChatGPT特性 如何利用它提高代码质量 ChatGPT已经彻底改变了开发代码的方式 然而 大多数软件开发人员和数据专业人员仍然没有使
  • 坐标移动Python

    A 向左移动 D 向右移动 W 向上移动 S 向下移动 从 0 0 点开始移动 输入 合法坐标为A 或者D或者W或者S 数字 两位以内 非法坐标点需要进行丢弃 如AA10 A1A YAD 等 flag input split for ite
  • python如何快速采集美~女视频?无反爬

    人生苦短 我用python 这次康康能给大家整点好看的不 环境使用 Python 3 8 Pycharm mou歌浏览器 mou歌驱动 gt 驱动版本要和浏览器版本最相近 lt 大版本一样 小版本最相近 gt 模块使用 requests g
  • ARM Mbed网络监控温度

    硬件 软件 介绍 温度测量是最基本 最常执行的测量之一 它可以是房间的温度 人的温度或设备的温度 能够通过Internet远程监视温度具有许多潜在的重要应用 例如 许多老人独自生活 如果他们生病了 可能要过一段时间才能发现他们处于危机中 如
  • 蜡笔小新学java

    javase基础 javase基础持续更新中 标识符 基本数据类型 随机数 算数运算符 Scanner扫描枪 赋值运算符 扩展赋值运算符 关系运算符 逻辑运算符 三元运算符 流程控制语句 if语法 switch语句 流程控制语句之循环结构
  • 基于 PyTorch实现YOLOv5

    目录 The First Article 前言 实现环境 基本流程 数据准备 建立模型 训练模型 模型评估 图片预测 视频预测 The First Article 前言 本文记录基于PyTorch实现Github作者ultralytics的