前一篇博文「PyTorch YOLOv5 個人防護裝置檢測模型訓練」內有教大家如何透過roboflow網站尋找YOLOv5格式的資料集;如果網站內沒有想要的資料集,此時就需要自行製作素材並手動框選物件進行標注如果有幾千張或上萬張的數據時可能需要標注幾天幾夜才能完成,非常浪費時間;因此於網路上看到有大神利用YOLOv5搭配labelGo工具進行自動標注,利用此工具可以節省大家在數據標注的時間,以下將教大家如何使用labelGo這套工具。
由於labelGo的自動標注是利用YOLOv5模型進行協助,因此我們在以下教學會需準備少量的數據資料進行YOLOv5模型訓練,再將訓練好YOLOv5模型透過Auto Label進行自動標注。
註:當labelGo及YOLOv5安裝完畢後需要進行”labelGo檔案修改”,labelGo的自動標注功能才能正常使用。
2.1 各位看官們可以回顧筆者之前寫的Anaconda搭配CUDA及cuDNN安裝及介紹(Win10平台),裡面有教大家如何於Window 10上架設Anaconda環境及安裝CUDA與cuDNN。
2.2 創建Anaconda虛擬環境並安裝Python 3.8
命令提示字元中進行創建一個新的Anaconda虛擬環境:
創建名稱為labelGo且python版本為3.8的Anaconda虛擬環境,並進入labelGo虛擬環境(圖1)。
|
(圖1) |
2.3 labelGo環境建置與標注教學
a. 進入labelGo-Yolov5AutoLabelImg Releases的Github網站,下載目前最新版本labelGo_for_yolov5_v6的Source Code(圖2)。
(圖2) |
b. 解壓縮檔案並使用labelGo虛擬環境進入資料夾內(圖3)。
(圖3) |
c. 透過以下指令進行labelGo環境安裝,安裝完成後可見(圖4)
pip install -r requirements.txt
|
|
(圖4) |
d. 輸入以下指令開啟labelGo,完成後可見(圖5)
python labelGo.py
|
|
(圖5) |
e. 由於labelGo是架構在labelImg上,因此基本操作都與labelImg一樣,主要增加了Auto Label功能(圖6)。
|
(圖6) |
f. 使用Auto Label功能之前,我們需要先準備一個YOLOv5的模型,模型訓練前,需要將自行拍攝的影片素材,利用網路提供的” MP4轉JPG - 在線轉換圖像文件”工具進行影像轉圖片,再利用labelGo進行訓練資料標記。
首先進入labelGo-Yolov5AutoLabelImg-5_v5_source\data資料夾內修改”predefined_classes.txt”(圖7),將內容修改成標記的名稱 (圖8),再開啟labelGo.py,使用工具欄Create RectBox對於訓練資料部分進行手動框選,並選擇YOLO資料格式;筆者此範例有918張圖片需要標記,分為兩個資料夾,一個是用來讓YOLOv5進行模型訓練(200張),另一個是剩餘尚未標注的資料夾(718張)。
首先進行手動框選200張,用於YOLOv5進行前期模型訓練(圖9、10),後續的718張可利用已訓練好的YOLOv5前期模型再搭配Auto Label進行協助標注。
|
(圖7) |
|
(圖8) |
|
(圖9) |
|
(圖10) |
g. 接下來先進行YOLOv5模型訓練,訓練完模型才可執行Auto Label功能。
2.4 YOLOv5訓練環境建置
a. 進入yolov5 Releases網站,下載YOLOv5 v6.2版本的Source Code(圖11、12)。
|
(圖11) |
|
(圖12) |
b. 解壓縮檔案並使用labelGo虛擬環境進入資料夾內(圖13)。
|
(圖13) |
c. 透過以下指令進行環境安裝,安裝完成後可見(圖14)
pip install -r requirements.txt
|
|
(圖14) |
3.1 我們於2.3章節已先框選200張的標注資料集,我們需要先建立一個YOLOv5訓練格式的.yaml檔案並設定相關參數(圖15)。
|
|
|
|
(圖15) |
|
3.2 於下方連結,下載yolov5s.pt預訓練權重進行訓練,如(圖16)所示。
https://github.com/ultralytics/yolov5/releases
|
(圖16) |
3.3 執行下方指令進行模型訓練,訓練完成(圖17)後會於yolov5-6.2\runs\train\exp3\weights資料夾內產生best.pt檔案(圖18)。
python train.py --epoch 50 --data D:/labelGo_test/labelGo_test.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt
|
(圖17) |
|
(圖18) |
- labelGo檔案修改
由於執行labelGo的Auto Label功能時會出現” Can't get attribute 'DetectionModel' on <module 'models.yolo'>”錯誤問題(圖19),因此需要作以下修改。
|
(圖19) |
-
- 將yolov5-6.2資料夾內的utils資料夾複製到labelGo-Yolov5AutoLabelImg-5_v5_source資料夾內(圖20)。
|
(圖20) |
-
- 將yolov5-6.2\models資料夾內的yolo.py,複蓋到labelGo-Yolov5AutoLabelImg-5_v5_source\libs\models資料夾內(圖21)。
|
(圖21) |
python labelGo.py
|
-
- 點擊Open Dir,選擇剩下尚未標記的數據圖像的資料夾(圖22、23)。
|
(圖22) |
|
(圖23) |
-
- 點擊Auto Label,會提示是否將原有的標注文件刪除,點選”Yes” (圖24、25)。
|
(圖24) |
|
(圖25) |
-
- 選擇訓練好的YOLOv5模型best.pt檔案(圖26)。
|
(圖26) |
-
- 成功執行自動標注功能(圖27),可於命令提示字元看到總共標記幾筆數據(圖28)。
|
(圖27) |
|
(圖28) |
結語
透過以上的教學,相信各位已經能夠成功地透過labelGo對資料集進行自動標注,大家可以自己動手做過一遍,透過這樣有如魔法般的工具,將可節省各位標注的時間,有問題的看官們歡迎聯繫我,我們一同討論。
喜歡我的帖子,請幫我按個”收藏”,我們下回見。
評論
lmx1689
2023年1月8日
lmx1689
2023年1月7日