安裝與測試
最近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瀏覽量
7420 -
數據集
+關注
關注
4文章
1236瀏覽量
26190
原文標題: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訓練部署教程
基于YOLOv5框架如何訓練一個自定義對象檢測模型
評論