你將識訓
掌握Windows系統基于深度學習的目標檢測訓練自己的資料集方法
掌握labelImg影像標注方法
掌握YOLOv4資料集整理方法
掌握YOLOv4訓練、測驗、性能統計方法
掌握訓練好的網路模型在前端軟體的測驗與應用
掌握前端軟體把檢測結果傳給PLC或機器人的通訊方法
適用人群
對人工智能機器視覺與對YOLOv4目標檢測感興趣的朋友們和從業者
軟體環境:
Windows7或10 x64; cuda 10.2; cudnn7.6.5; Python3.7; VisualStudio2019; OpenCV4.3;MVS;智能AI影像檢測系統
YOLOv4來了!速度和精度雙提升!
與 YOLOv3 相比,新版本的 AP (精度)和 FPS (每秒幀率)分別提高了 10% 和 12%,
YOLOv4不僅識別目標效果出眾,而且在缺陷檢測方面也有獨到之處,本人剛好有個磁塊的缺口裂縫缺陷的檢測專案,本著試試看的想法用,學習一下YOLOv4,結果效果出奇的好,解決傳統視覺無法解決的背景干擾與誤判問題,現在把整個專案實施方法記錄一下供大家參考,并把推理部分做成app可執行檔案,供大家評鑒,歡迎交流溝通,


YOLO系列是基于深度學習的端到端實時目標檢測方法,本文將手把手地教大家使用labelImg標注和使用YOLOv4訓練自己的資料集,
本文的YOLOv4訓練軟體使用AlexyAB/darknet的原版軟體在OpenCV4.3和VisualStudio2019編譯出來(末尾提供以編譯好軟體,不會編譯的朋友可以直接用,下一步開發一個更友好的軟體給大家,敬請關注),在Windows系統上做專案演示,包括:安裝軟體環境、安裝YOLOv4、標注自己的資料集、整理自己的資料集、修改組態檔、訓練自己的資料集、安裝前端推理軟體,測驗訓練出的網路模型、邏輯判斷、檢測結果與PLC輸出,
本文的前端推理軟體采用VisualStudio2015開發; 集成了OpenCV4.4及多種機器視覺演算法與sql資料庫、modbus、三菱mc協議、http等通訊功能,可以在免GPU下運行,i5處理器速度在100ms以內,基本可以滿足實時性的要求,
安裝軟體環境
找一臺獨立顯卡的主機,我的配置是windows10 64bit I5 8G,GeForce 1650S 4G顯存(這里訓練YOLOv4 Tiny就夠了,訓練YOLOv4標準版方法相同,顯存要8G以上),
安裝cuda10.2,下載地址CUDA Toolkit 10.2 Download | NVIDIA Developer

安裝后可以打開nvidia的控制面板的系統資訊,如下

解壓縮本文附件中下載的訓練開發包(根據AlexyAB/darknet的原版軟體在OpenCV4.3和VisualStudio2019編譯出來)到本地電腦中,路徑保持和我電腦一樣,

把自己要訓練的圖片集復制到darknet-master-V4\VOCdevkit\VOC2009\JPEGImages中,圖片需要彩色圖片,附件里已經有一份磁鐵缺陷的資料集,


給圖片標記缺陷位置和型別:打開LabelImg軟體(附件中可以下載)

在LabelImg中點擊“Open Dir”打開資料集圖片所在的檔案夾為darknet-master-V4\VOCdevkit\VOC2009\JPEGImages,如下圖

在LabelImg中點擊“Change Save Dir”按鈕,選擇保存標簽資料的路徑為E:\ylhwork\pycharm\darknet-master-V4\VOCdevkit\VOC2009\Annotations,如下圖

配置好路徑后,就可以開始標記了,軟體的右下角會目錄下的圖片串列,點擊軟體左側的 左右箭頭可以切換下一張圖片查看標記,軟體左下角按鈕可以添加編輯標記,

標簽名字暫時只能用中文,標簽的名字要記住,后面還要用,本專案定義了三類標簽,名字分別為rip、gap、label,如圖

有缺陷的要標記,沒有缺陷的圖片或者不想訓練的圖片,不用標記,把所有圖片都標記完后,進行下一步轉化作業

標記好的圖片和標記資料轉化成可訓練模式都放在一個python腳本里,需要先裝一個python程式(下一步我會開發一個更友好的軟體,敬請關注),本文附件提供下載,在安裝完python的電腦里,用文本編輯器打開E:/ylhwork/pycharm/darknet-master-V4/VOCdevkit/VOC2009/helmet-label.py,編輯classes的內容要與標記的名字和數量一樣

運行python的腳本程式:python.exe E:/ylhwork/pycharm/darknet-master-V4/VOCdevkit/VOC2009/helmet-label.py,或者在python的IDE里點擊run

如果運行成功的話,標記的作業就完成了,在E:\ylhwork\pycharm\darknet-master-V4\VOCdevkit\VOC2009\labels檔案夾下會出現轉化好的檔案

離最后訓練的作業只需要最后2步了,編輯組態檔:在\darknet-master-V4\build\darknet\x64\cfg下,復制一個yolov4-tiny-xxx-train.cfg作為你的組態檔,搜索[yolo]關鍵字附近,修改classes的實際數量和filters的數量為(3*classes+5),如下圖

修改分類名稱: 在\darknet-master-V4\build\darknet\x64\data下開打names檔案進行編輯,內容和次序要和python腳本里的名稱一致

修改data檔案:darknet-master-V4\build\darknet\x64\data下復制一個data檔案,檢查圖片路徑、names路徑等是否與前面設定一致

所有配置資訊保存好后,為訓練命令建一條命令腳本yolov4_tiny_train_magnate.cmd;訓練命令格式為:
darknet.exe detector train data/magnate.data cfg/yolov4-tiny-magnate-train.cfg yolov4-tiny.conv.29 -gups 0,1,2,3

所有預備作業都做完了,點擊yolov4_tiny_train_magnate.cmd檔案,軟體開始執行訓練命令,正常會顯示一張圖表界面和一個不斷重繪資料的命令列界面

如果有問題,幾分鐘內就會報錯,一般的錯誤主要是檔案找不到或者記憶體不夠等,請仔細檢查以上步驟的所有檔案名和路徑,如果是記憶體不夠,可以修改cfg組態檔中前幾行中的
batch和subdivisions的數字后,再試,
如果資料一直在重繪,恭喜你成功了,一般訓練需要幾個小時(看主機配置),我一般讓他跑一晚上,明天早上來看,請保證硬碟有2G以上空余空間,幾個小時后,比較完美的表格圖片樣子應該是不斷收斂的曲線,如下圖

查看訓練出來的模型檔案:\darknet-master-V4\build\darknet\x64\backup下會有多問weights檔案,一般最后一個是最好的

訓練結束了,現在可以測驗訓練結果了,復制一份剛才訓練的cfg組態檔yolov4-tiny-magnate-train.cfg為yolov4-tiny-magnate-test.cfg,修改3,4,6,7行后保存

保存yolov4-tiny-magnate-test.cfg,magnate.names和yolov4-tiny-magnate-train_last.weights三個檔案備用,
現在用編譯好的前端可執行軟體來測驗訓練效果(可以在無GPU電腦中運行),下載程式后依次安裝VC運行庫,MVS驅動和應用程式

雙擊智能AI影像軟體中exe可執行檔案,打開前端軟體,如果提示缺少dll檔案,可能是你沒有安裝vc運行庫或mvs驅動庫,請先安裝前兩步

打開軟體進入主界面后,點擊切換到設定模式,先添加測驗影像來源,我們先選擇檔案影像測驗,測驗ok后,可以把檔案改成相機影像

在檔案影像工具里,我們選擇檔案路徑模式,把訓練時的檔案夾路徑添加進來后

點確定回到設定界面時,再點擊工具追加按鈕,添加一個深度識別工具,點擊追加

在深度識別工具里,添加剛才yolov4-tiny-magnate-test.cfg,magnate.names和yolov4-tiny-magnate-train_last.weights路徑到設定界面中



在標簽設定界面里,設定每個標簽對應的現實名,我們喜歡修改成中文名,點擊執行檢測按鈕,可以參考執行效果

點擊確定后,回到設定主界面,點擊運行按鈕可以測驗執行效果,我們再添加OK/NG判斷邏輯,在設定主界面點擊IO按鈕,添加CCD判定條件和綜合判定條件


點擊確定按鈕,回到設定主界面,點擊運行按鈕,測驗整體運行效果

測驗效果OK后,保存整個專案檔案到硬碟中,可以下次或在實際專案中用

總結:
訓練后的模型在前端推理軟體里,在純i5以上CPU下,識別時間小于100ms,在gpu環境下識別時間小于10ms,肉眼可見的缺陷99%都識別出來,取得了比較的好的檢測效果,本前端軟體稍作修改后,即可用于實際專案中,
不足:
目前訓練環境目前還不夠優化,下一步會開發一個一步到位的更加高效的訓練軟體,敬請關注,用了一個下午終于把整個專案程序說明了,操作說明和軟體有不足之處還請大家多多包涵和評判,共同進步,
附件:
本文所有軟體例程和資料集下載地址,鏈接:https://pan.baidu.com/s/1YPjR_TPJYLmriXNVnNbgZg 提取碼:52ai
其他下載地址:[以下隱藏,回復后可見]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/198070.html
標籤:java
下一篇:美團大資料查詢技術
