0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于YOLOv5框架如何訓(xùn)練一個自定義對象檢測模型

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 作者:OpenCV學(xué)堂 ? 2022-09-21 10:10 ? 次閱讀

安裝與測試

最近YOLOv5最新更新升級到v6.x版本,工程簡便性有提升了一大步,本教程教你基于YOLOv5框架如何訓(xùn)練一個自定義對象檢測模型,首先需要下載對應(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)行下面命令行完成依賴庫的安裝:

3e0f0b56-38bb-11ed-ba43-dac502259ad0.png

等待一段時間,完成全部安裝之后,運(yùn)行測試:
python detect.py --weights yolov5s.pt --source dataimageszidane.jpg
運(yùn)行結(jié)果如下:

3e18a346-38bb-11ed-ba43-dac502259ad0.jpg

數(shù)據(jù)集準(zhǔn)備與制作

自己百度收集了一個無人機(jī)與飛鳥的數(shù)據(jù)集,其中訓(xùn)練集270張圖像,測試集26張圖像。

3e281af6-38bb-11ed-ba43-dac502259ad0.png

使用labelImg工具完成標(biāo)注,工具下載地址:

https://gitee.com/opencv_ai/opencv_tutorial_data/tree/master/tools

YOLOv5要求的數(shù)據(jù)集目錄結(jié)構(gòu)如下:

3e3b0706-38bb-11ed-ba43-dac502259ad0.png

其中images是所有圖像的集合,labels是所有標(biāo)簽信息集合。train表示訓(xùn)練集、valid表示測試集。這里需要注意的是,labels信息中的標(biāo)簽信息YOLO格式標(biāo)注框需要把原始標(biāo)注信息的標(biāo)注框格式從:
Left top right bottom

轉(zhuǎn)換為

Center_x, center_y, width, height
并歸一化到0~1之間,這部分我寫了一個腳本來完成label標(biāo)簽的生成,把xml的標(biāo)注信息轉(zhuǎn)換為YOLOv5的labels文件,這樣就完成了數(shù)據(jù)集制作。最后需要創(chuàng)建一個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 classesnc: 2
# class namesnames: ['bird', 'drone']

三:模型訓(xùn)練

制作好數(shù)據(jù)集之后,模型訓(xù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é)果,

3e496bc0-38bb-11ed-ba43-dac502259ad0.png

3e578bce-38bb-11ed-ba43-dac502259ad0.png

3e64e6fc-38bb-11ed-ba43-dac502259ad0.png

3e720558-38bb-11ed-ba43-dac502259ad0.png

PR曲線說明訓(xùn)練效果還錯!

不同框架與硬件平臺推理比較

YOLOv5的6.x版本支持不同框架模型導(dǎo)出與推理,看下圖:

3e7e15b4-38bb-11ed-ba43-dac502259ad0.png

這里分別導(dǎo)出模型為ONNX、XML、engien格式之后,使用同一段視頻在我的筆記本上(CPUi7, GPU3050ti):在下面四種推理框架上運(yùn)行
-OpenCV DNN-OpenVINO-ONNXRUNTIME-TensorRT
測試,分別截圖如下:

OpenCV DNN推理速度

3e921726-38bb-11ed-ba43-dac502259ad0.png

OpenVINO平臺上的推理速度

3e9dd070-38bb-11ed-ba43-dac502259ad0.png

ONNXRUNTIME GPU推理速度

3eb19182-38bb-11ed-ba43-dac502259ad0.png

TensorRT框架部署-FP32版本模型推理統(tǒng)計(jì):

3ec34c88-38bb-11ed-ba43-dac502259ad0.png

YOLOv5的6.x版本,是支持TensorRT 量化到FP16模型直接導(dǎo)出的,但是不支持INT8量化生成,所以自己實(shí)現(xiàn)了導(dǎo)出量化INT8版本,測試結(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ì):

3ecf9524-38bb-11ed-ba43-dac502259ad0.png

最終比較:

3edd3c2e-38bb-11ed-ba43-dac502259ad0.png

注意:以上結(jié)果是基于Python語言上測試結(jié)果(前后處理都使用pytorch完成)

番外篇:C++推理與比較

使用C++部署時候,前后處理都改成了基于OpenCV 完成,使用CPU完成前后處理,OpenVINO+CPU運(yùn)行速度截圖如下:

3f0609a6-38bb-11ed-ba43-dac502259ad0.png

OpenCV DNN + CUDA版本推理

3f168a10-38bb-11ed-ba43-dac502259ad0.png

TensorRT-FP32模型推理速度

3f2ca642-38bb-11ed-ba43-dac502259ad0.png

TensorRT-INT8模型推理速度

3f3d0b04-38bb-11ed-ba43-dac502259ad0.png

最后把自定義訓(xùn)練導(dǎo)出的模型轉(zhuǎn)換為TensorRT Engine文件之后,部署到了我的一塊Jetson Nano卡上面,實(shí)現(xiàn)了邊緣端的部署,有圖有真相:

3f48ca48-38bb-11ed-ba43-dac502259ad0.png

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 檢測模型
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    7300
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1197

    瀏覽量

    24592

原文標(biāo)題:YOLOv5新版本6.x 自定義對象檢測-從訓(xùn)練到部署

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RK3588 技術(shù)分享 | 在Android系統(tǒng)中使用NPU實(shí)現(xiàn)Yolov5分類檢測-迅為電子

    RK3588 技術(shù)分享 | 在Android系統(tǒng)中使用NPU實(shí)現(xiàn)Yolov5分類檢測-迅為電子
    的頭像 發(fā)表于 08-23 14:58 ?468次閱讀
    RK3588 技術(shù)分享 | 在Android系統(tǒng)中使用NPU實(shí)現(xiàn)<b class='flag-5'>Yolov5</b>分類<b class='flag-5'>檢測</b>-迅為電子

    NVIDIA NeMo加速并簡化自定義模型開發(fā)

    如果企業(yè)希望充分發(fā)揮出 AI 的力量,就需要根據(jù)其行業(yè)需求量身定制的自定義模型。
    的頭像 發(fā)表于 07-26 11:17 ?629次閱讀
    NVIDIA NeMo加速并簡化<b class='flag-5'>自定義</b><b class='flag-5'>模型</b>開發(fā)

    YOLOv5的原理、結(jié)構(gòu)、特點(diǎn)和應(yīng)用

    YOLOv5(You Only Look Once version 5)是種基于深度學(xué)習(xí)的實(shí)時目標(biāo)檢測算法,它屬于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的范疇。下面我將詳細(xì)介紹
    的頭像 發(fā)表于 07-03 09:23 ?3766次閱讀

    maixcam部署yolov5s 自定義模型

    maixcam部署yolov5s 自定義模型 本博客將向你展示零基礎(chǔ)步步的部署好自己的yolov5s
    發(fā)表于 04-23 15:43

    鴻蒙ArkUI實(shí)例:【自定義組件】

    組件是 OpenHarmony 頁面最小顯示單元,頁面可由多個組件組合而成,也可只由組件組合而成,這些組件可以是ArkUI開發(fā)框架
    的頭像 發(fā)表于 04-08 10:17 ?544次閱讀

    YOLOv8+PyQT5打造細(xì)胞計(jì)數(shù)與識別應(yīng)用說明

    YOLOv8對象檢測模型基于自定義數(shù)據(jù)集訓(xùn)練紅白細(xì)胞檢測
    的頭像 發(fā)表于 01-15 17:22 ?970次閱讀
    <b class='flag-5'>YOLOv8+PyQT5</b>打造細(xì)胞計(jì)數(shù)與識別應(yīng)用說明

    YOLOv8實(shí)現(xiàn)旋轉(zhuǎn)對象檢測

    YOLOv8框架在在支持分類、對象檢測、實(shí)例分割、姿態(tài)評估的基礎(chǔ)上更近步,現(xiàn)已經(jīng)支持旋轉(zhuǎn)對象
    的頭像 發(fā)表于 01-11 10:43 ?1541次閱讀
    <b class='flag-5'>YOLOv</b>8實(shí)現(xiàn)旋轉(zhuǎn)<b class='flag-5'>對象</b><b class='flag-5'>檢測</b>

    基于YOLOv8實(shí)現(xiàn)自定義姿態(tài)評估模型訓(xùn)練

    Hello大家好,今天給大家分享下如何基于YOLOv8姿態(tài)評估模型,實(shí)現(xiàn)在自定義數(shù)據(jù)集上,完成自定義姿態(tài)評估
    的頭像 發(fā)表于 12-25 11:29 ?2624次閱讀
    基于<b class='flag-5'>YOLOv</b>8實(shí)現(xiàn)<b class='flag-5'>自定義</b>姿態(tài)評估<b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>

    如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)工件切割點(diǎn)位置預(yù)測

    Hello大家好,今天給大家分享下如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)工件切割點(diǎn)位置預(yù)測,主要是通過對YOLOv8姿態(tài)評估模型
    的頭像 發(fā)表于 12-22 11:07 ?682次閱讀
    如何基于深度學(xué)習(xí)<b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>實(shí)現(xiàn)工件切割點(diǎn)位置預(yù)測

    如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)圓檢測與圓心位置預(yù)測

    Hello大家好,今天給大家分享下如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)圓檢測與圓心位置預(yù)測,主要是通過對YOLOv8姿態(tài)評估
    的頭像 發(fā)表于 12-21 10:50 ?1572次閱讀
    如何基于深度學(xué)習(xí)<b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>實(shí)現(xiàn)圓<b class='flag-5'>檢測</b>與圓心位置預(yù)測

    在C++中使用OpenVINO工具包部署YOLOv5-Seg模型

    YOLOv5兼具速度和精度,工程化做的特別好,Git clone到本地即可在自己的數(shù)據(jù)集上實(shí)現(xiàn)目標(biāo)檢測任務(wù)的訓(xùn)練和推理,在產(chǎn)業(yè)界中應(yīng)用廣泛。開源社區(qū)對YOLOv5支持實(shí)例分割的呼聲高漲
    的頭像 發(fā)表于 12-21 10:17 ?1953次閱讀
    在C++中使用OpenVINO工具包部署<b class='flag-5'>YOLOv5</b>-Seg<b class='flag-5'>模型</b>

    基于YOLOv8的自定義醫(yī)學(xué)圖像分割

    YOLOv8是種令人驚嘆的分割模型;它易于訓(xùn)練、測試和部署。在本教程中,我們將學(xué)習(xí)如何在自定義數(shù)據(jù)集上使用
    的頭像 發(fā)表于 12-20 10:51 ?674次閱讀
    基于<b class='flag-5'>YOLOv</b>8的<b class='flag-5'>自定義</b>醫(yī)學(xué)圖像分割

    【愛芯派 Pro 開發(fā)板試用體驗(yàn)】愛芯元智AX650N部署yolov8s 自定義模型

    愛芯元智AX650N部署yolov8s 自定義模型 本博客將向你展示零基礎(chǔ)步步的部署好自己的yolov8s
    發(fā)表于 11-24 20:40

    NVIDIA 加快企業(yè)自定義生成式 AI 模型開發(fā)

    的業(yè)務(wù)數(shù)據(jù)進(jìn)行自定義。 如今,免費(fèi)、開源的大語言模型對企業(yè)來說就像是頓“自助餐”。但對于構(gòu)建自定義生成式 AI 應(yīng)用的開發(fā)者來說,這頓“大餐”可能會讓他們應(yīng)接不暇,因?yàn)樗麄冃枰獫M足各
    的頭像 發(fā)表于 11-16 21:15 ?525次閱讀
    NVIDIA 加快企業(yè)<b class='flag-5'>自定義</b>生成式 AI <b class='flag-5'>模型</b>開發(fā)

    【愛芯派 Pro 開發(fā)板試用體驗(yàn)】愛芯元智AX650N部署yolov5s 自定義模型

    愛芯元智AX650N部署yolov5s 自定義模型 本博客將向你展示零基礎(chǔ)步步的部署好自己的yolov5s
    發(fā)表于 11-16 19:34