基于 PyTorch实现YOLOv5
目录
- The First Article
- 前言
- 实现环境
- 基本流程
- 数据准备
- 建立模型
- 训练模型
- 模型评估
- 图片预测
- 视频预测
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
基于 PyTorch实现YOLOv5相关推荐
- 基于Pytorch对YOLOV5 进行简易实现
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 这篇文章主要针对于YOLOV5-Pytorch版本的网络结构代码进行实现,简化代码的理解并简化配置文件 ...
- YOLOv5 它来了!基于 PyTorch,体积比 YOLOv4 小 90%,速度却超 2 倍!
贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI YOLOv4还没有退热,YOLOv5已经发布! 6月9日,Ultralytics公司开源了YOLOv5,离上一次YOLOv4发布不到50天 ...
- 惊!YOLOv5重磅来袭!还是基于Pytorch实现?
关注上方"深度学习技术前沿",选择"星标公众号", 技术干货,第一时间送达! [导读]继4月24日YOLOv4重磅来袭之后,YOLOv4中一大波tricks还没 ...
- Python基于深度学习yolov5的扑克牌识别
Python基于深度学习yolov5的扑克牌识别(附带源码) 源程序来源于本人参与开发的一个网络扑克牌小游戏的图像识别.AI分析,AI出牌的小项目,做完后和大家分享一下扑克牌自动识别模块制作的过程. ...
- 睿智的目标检测56——Pytorch搭建YoloV5目标检测平台
睿智的目标检测56--Pytorch搭建YoloV5目标检测平台 学习前言 源码下载 YoloV5改进的部分(不完全) YoloV5实现思路 一.整体结构解析 二.网络结构解析 1.主干网络Backb ...
- windows下基于libtorch的yolov5 6.0的c++部署
windows下基于libtorch的yolov5 6.0的c++部署 1.概述 libtorch是pytorch的C++版本,在需要多进程.提高推理速度等需求下会比python语言更具有优势.本文根 ...
- 基于pytorch量化感知训练(mnist分类)--浮点训练vs多bit后量化vs多bit量化感知训练效果对比
基于pytorch量化感知训练–浮点训练vs多bit后量化vs多bit量化感知训练效果对比 代码下载地址:下载地址 灰色线是量化训练,橙色线是后训练量化,可以看到,在 bit = 2.3 的时候,量化 ...
- 基于pytorch后量化(mnist分类)---浮点训练vs多bit后量化vs多bit量化感知训练效果对比
基于pytorch后量化(mnist分类)-浮点训练vs多bit后量化vs多bit量化感知训练效果对比 代码下载地址:下载地址 试了 bit 数为 1-8 的准确率,得到下面这张折线图: 发现,当 b ...
- 基于pytorch的模型稀疏训练与模型剪枝示例
基于pytorch的模型稀疏训练与模型剪枝示例 稀疏训练+模型剪枝代码下载地址:下载地址 CIFAR10-VGG16BN Baseline Trained with Sparsity (1e-4) P ...
最新文章
- TOF摄像机可以替代Flash激光雷达吗?
- 面试定心丸:AI知识点备忘录(包括ML、DL、Python、Pandas等)
- php 表单处理,用PHP提交from表单的处理方法
- PingingLab传世经典系列《CCNA完全配置宝典》-2.5 RIPv2基本配置
- 美图HTTPS优化探索与实践
- ORACLE -- ORA-12520
- QQ登录JS SDK教程,调用openapi接口
- JS的forEach和map方法的区别
- poj1833 排列
- kubernetes视频教程笔记 (25)-集群调度-调度过程说明
- 经典的EDA设计软件Protel99SE
- RBF神经网络学习及实践
- mac 解决sudo: no valid sudoers sources found, quitting
- 思科认证华为认证的区别
- cocos2d关于延时的实现
- Linux线程操作以及相关知识
- 51单片机 DHT11+LCD12864温湿度显示 + Proteus仿真
- Linux 【Linux下VI语法】
- 基于vue的todolist案例
- 微机原理与接口技术 重点详解与章节总结——8086微处理器系统结构