安裝與測(cè)試
最近YOLOv5最新更新升級(jí)到v6.x版本,工程簡(jiǎn)便性有提升了一大步,本教程教你基于YOLOv5框架如何訓(xùn)練一個(gè)自定義對(duì)象檢測(cè)模型,首先需要下載對(duì)應(yīng)版本:
https://github.com/ultralytics/yolov5/releases/tag/v6.1
鼠標(biāo)滾到最下面下載源碼zip包:
https://github.com/ultralytics/yolov5/archive/refs/tags/v6.1.zip
下載完成之后解壓縮到:
D:pythonyolov5-6.1
首先運(yùn)行下面命令行完成依賴庫(kù)的安裝:等待一段時(shí)間,完成全部安裝之后,運(yùn)行測(cè)試:
python detect.py --weights yolov5s.pt --source dataimageszidane.jpg
運(yùn)行結(jié)果如下:
數(shù)據(jù)集準(zhǔn)備與制作
自己百度收集了一個(gè)無人機(jī)與飛鳥的數(shù)據(jù)集,其中訓(xùn)練集270張圖像,測(cè)試集26張圖像。
使用labelImg工具完成標(biāo)注,工具下載地址:
https://gitee.com/opencv_ai/opencv_tutorial_data/tree/master/tools
YOLOv5要求的數(shù)據(jù)集目錄結(jié)構(gòu)如下:
其中images是所有圖像的集合,labels是所有標(biāo)簽信息集合。train表示訓(xùn)練集、valid表示測(cè)試集。這里需要注意的是,labels信息中的標(biāo)簽信息YOLO格式標(biāo)注框需要把原始標(biāo)注信息的標(biāo)注框格式從:
Left top right bottom
轉(zhuǎn)換為
Center_x, center_y, width, height
并歸一化到0~1之間,這部分我寫了一個(gè)腳本來完成label標(biāo)簽的生成,把xml的標(biāo)注信息轉(zhuǎn)換為YOLOv5的labels文件,這樣就完成了數(shù)據(jù)集制作。最后需要?jiǎng)?chuàng)建一個(gè)dataset.ymal文件,放在與data文件夾同一層,它的內(nèi)容如下:# 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 classes
nc: 2
# class names
names: ['bird', 'drone']
三:模型訓(xùn)練
制作好數(shù)據(jù)集之后,模型訓(xùn)練就成為一件很簡(jiǎn)單事情,一條命令行搞定。運(yùn)行下面的命令行:
python train.py --img 640 --batch 4 --epochs 25 --data uav_bird_trainingdataset.yaml --weights yolov5s.pt
其中uav_bird_training文件夾里是制作好的數(shù)據(jù)集。這樣就開始訓(xùn)練,訓(xùn)練過程中可以通過tensorboard來查看可視化的結(jié)果,
PR曲線說明訓(xùn)練效果還錯(cuò)!
不同框架與硬件平臺(tái)推理比較
YOLOv5的6.x版本支持不同框架模型導(dǎo)出與推理,看下圖:
這里分別導(dǎo)出模型為ONNX、XML、engien格式之后,使用同一段視頻在我的筆記本上(CPUi7, GPU3050ti):在下面四種推理框架上運(yùn)行
測(cè)試,分別截圖如下:-OpenCV DNN
-OpenVINO
-ONNXRUNTIME
-TensorRT
OpenCV DNN推理速度
OpenVINO平臺(tái)上的推理速度
ONNXRUNTIME GPU推理速度
TensorRT框架部署-FP32版本模型推理統(tǒng)計(jì):
YOLOv5的6.x版本,是支持TensorRT 量化到FP16模型直接導(dǎo)出的,但是不支持INT8量化生成,所以自己實(shí)現(xiàn)了導(dǎo)出量化INT8版本,測(cè)試結(jié)果如下:
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版本模型推理統(tǒng)計(jì):
最終比較:
注意:以上結(jié)果是基于Python語(yǔ)言上測(cè)試結(jié)果(前后處理都使用pytorch完成)
番外篇:C++推理與比較
使用C++部署時(shí)候,前后處理都改成了基于OpenCV 完成,使用CPU完成前后處理,OpenVINO+CPU運(yùn)行速度截圖如下:
OpenCV DNN + CUDA版本推理
TensorRT-FP32模型推理速度
TensorRT-INT8模型推理速度
最后把自定義訓(xùn)練導(dǎo)出的模型轉(zhuǎn)換為TensorRT Engine文件之后,部署到了我的一塊Jetson Nano卡上面,實(shí)現(xiàn)了邊緣端的部署,有圖有真相:
審核編輯 :李倩
-
檢測(cè)模型
+關(guān)注
關(guān)注
0文章
17瀏覽量
7306 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1208瀏覽量
24689
原文標(biāo)題:YOLOv5新版本6.x 自定義對(duì)象檢測(cè)-從訓(xùn)練到部署
文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論