安装与测试
最近YOLOv5最新更新升级到v6.x版本,工程简便性有提升了一大步,本教程教你基于YOLOv5框架如何训练一个自定义对象检测模型,首先需要下载对应版本:
https://github.com/ultralytics/yolov5/releases/tag/v6.1
鼠标滚到最下面下载源码zip包:
https://github.com/ultralytics/yolov5/archive/refs/tags/v6.1.zip
下载完成之后解压缩到:
D:pythonyolov5-6.1
首先运行下面命令行完成依赖库的安装:

python detect.py --weights yolov5s.pt --source dataimageszidane.jpg
运行结果如下:

数据集准备与制作
自己百度收集了一个无人机与飞鸟的数据集,其中训练集270张图像,测试集26张图像。

使用labelImg工具完成标注,工具下载地址:
https://gitee.com/opencv_ai/opencv_tutorial_data/tree/master/tools
YOLOv5要求的数据集目录结构如下:

Left top right bottom
转换为
Center_x, center_y, width, height
并归一化到0~1之间,这部分我写了一个脚本来完成label标签的生成,把xml的标注信息转换为YOLOv5的labels文件,这样就完成了数据集制作。最后需要创建一个dataset.ymal文件,放在与data文件夹同一层,它的内容如下:# train and val datasets (image directory or *.txt file with image paths)train: uav_bird_training/data/images/train/val: uav_bird_training/data/images/valid/# number of classesnc: 2# class namesnames: ['bird', 'drone']
三:模型训练
制作好数据集之后,模型训练就成为一件很简单事情,一条命令行搞定。运行下面的命令行:
python train.py --img 640 --batch 4 --epochs 25 --data uav_bird_trainingdataset.yaml --weights yolov5s.pt
其中uav_bird_training文件夹里是制作好的数据集。这样就开始训练,训练过程中可以通过tensorboard来查看可视化的结果,




PR曲线说明训练效果还错!
不同框架与硬件平台推理比较
YOLOv5的6.x版本支持不同框架模型导出与推理,看下图:

测试,分别截图如下:-OpenCV DNN-OpenVINO-ONNXRUNTIME-TensorRT
OpenCV DNN推理速度

OpenVINO平台上的推理速度

ONNXRUNTIME GPU推理速度

TensorRT框架部署-FP32版本模型推理统计:

YOLOv5的6.x版本,是支持TensorRT 量化到FP16模型直接导出的,但是不支持INT8量化生成,所以自己实现了导出量化INT8版本,测试结果如下:
python detect.py --weights uav_bird_training/uav_bird_int8.engine --data uav_bird_training/dataset.yaml --source D:/bird/bird_fly.mp4
TensorRT框架部署-INT8版本模型推理统计:

最终比较:

番外篇:C++推理与比较
使用C++部署时候,前后处理都改成了基于OpenCV 完成,使用CPU完成前后处理,OpenVINO+CPU运行速度截图如下:

OpenCV DNN + CUDA版本推理

TensorRT-FP32模型推理速度

TensorRT-INT8模型推理速度

最后把自定义训练导出的模型转换为TensorRT Engine文件之后,部署到了我的一块Jetson Nano卡上面,实现了边缘端的部署,有图有真相:

审核编辑 :李倩
-
检测模型
+关注
关注
0文章
17浏览量
7402 -
数据集
+关注
关注
4文章
1230浏览量
26046
原文标题:YOLOv5新版本6.x 自定义对象检测-从训练到部署
文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
技术分享 | RK3588基于Yolov5的目标识别演示
在k230上使用yolov5检测图像卡死,怎么解决?
完整指南:如何使用树莓派5、Hailo AI Hat、YOLO、Docker进行自定义数据集训练?
HarmonyOS应用自定义键盘解决方案
在K230上部署yolov5时 出现the array is too big的原因?
RV1126 yolov8训练部署教程
请问如何在imx8mplus上部署和运行YOLOv5训练的模型?
YOLOv5类中rgb888p_size这个参数要与模型推理和训练的尺寸一致吗?一致会达到更好的效果?
使用OpenVINO™ 2021.4在CPU和MYRIAD上进行自定义对象检测,为什么结果差异巨大?
使用OpenVINO™ 2021.4将经过训练的自定义PyTorch模型加载为IR格式时遇到错误怎么解决?
【米尔RK3576开发板评测】+项目名称YOLOV5目标检测
【ELF 2学习板试用】ELF2开发板(飞凌嵌入式)部署yolov5s的自定义模型
think-cell;自定义think-cell(一)

基于YOLOv5框架如何训练一个自定义对象检测模型
评论