YOLOv5搭配LabelGo進行自動標記

  1. 前言

前一篇博文「PyTorch YOLOv5 個人防護裝置檢測模型訓練」內有教大家如何透過roboflow網站尋找YOLOv5格式的資料集;如果網站內沒有想要的資料集,此時就需要自行製作素材並手動框選物件進行標注如果有幾千張或上萬張的數據時可能需要標注幾天幾夜才能完成,非常浪費時間;因此於網路上看到有大神利用YOLOv5搭配labelGo工具進行自動標注,利用此工具可以節省大家在數據標注的時間,以下將教大家如何使用labelGo這套工具。

 

由於labelGo的自動標注是利用YOLOv5模型進行協助,因此我們在以下教學會需準備少量的數據資料進行YOLOv5模型訓練,再將訓練好YOLOv5模型透過Auto Label進行自動標注。

:labelGoYOLOv5安裝完畢後需要進行”labelGo檔案修改”,labelGo的自動標注功能才能正常使用。 

  1. 關開發環境工具安裝labelGoYOLOv5訓練環境建置

2.1 各位看官們可以回顧筆者之前寫的Anaconda搭配CUDAcuDNN安裝及介紹(Win10平台),裡面有教大家如何於Window 10上架設Anaconda環境及安裝CUDAcuDNN

2.2 創建Anaconda虛擬環境並安裝Python 3.8

命令提示字元中進行創建一個新的Anaconda虛擬環境:

創建名稱labelGopython版本為3.8Anaconda虛擬環境,並進入labelGo虛擬環境(1)

(1)


2.3
labelGo環境建置與標注教學

a. 進入labelGo-Yolov5AutoLabelImg ReleasesGithub網站,下載目前最新版本labelGo_for_yolov5_v6Source 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的模型,模型訓練前,需要將自行拍攝的影片素材,利用網路提供的 MP4JPG - 在線轉換圖像文件工具進行影像轉圖片,再利用labelGo進行訓練資料標記。

    首先進入labelGo-Yolov5AutoLabelImg-5_v5_source\data資料夾內修改”predefined_classes.txt”(7),將內容修改成標記的名稱 (8),再開啟labelGo.py,使用工具欄Create RectBox對於訓練資料部分進行手動框選,並選擇YOLO資料格式;筆者此範例有918張圖片需要標記,分為兩個資料夾,一個是用來讓YOLOv5進行模型訓練(200),另一個是剩餘尚未標注的資料夾(718)

    首先進行手動框選200張,用於YOLOv5進行前期模型訓練(910),後續的718張可利用已訓練好的YOLOv5前期模型再搭配Auto Label進行協助標注。

 

(7)

 

(8)

 

(9)

 

(10)

g. 接下來先進行YOLOv5模型訓練,訓練完模型才可執行Auto Label功能。

 

2.4 YOLOv5訓練環境建置

a. 進入yolov5 Releases網站,下載YOLOv5 v6.2版本的Source Code(1112)

(11)

(12)


b. 解壓縮檔案並使用labelGo虛擬環境進入資料夾內(13)

(13)


c.
透過以下指令進行環境安裝,安裝完成後可見(14)

         pip install -r requirements.txt

 

(14)

  1. YOLOv5模型訓練

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)

  1. labelGo檔案修改

由於執行labelGoAuto Label功能時會出現” Can't get attribute 'DetectionModel' on <module 'models.yolo'>錯誤問題(19),因此需要作以下修改。

(19)


    1. yolov5-6.2資料夾內的utils資料夾複製到labelGo-Yolov5AutoLabelImg-5_v5_source資料夾內(20)

(20)


    1. yolov5-6.2\models資料夾內的yolo.py,複蓋到labelGo-Yolov5AutoLabelImg-5_v5_source\libs\models資料夾內(21)

(21)

 

  1. 使用labelGoAuto Label功能
    1. 進入labelGo虛擬環境
    2. 輸入以下指令開啟labelGo
         python labelGo.py
    1. 點擊Open Dir,選擇剩下尚未標記的數據圖像的資料夾(2223)

(22)

 

(23)


    1. 點擊Auto Label,會提示是否將原有的標注文件刪除,點選”Yes” (2425)

(24)

 

(25)

 

    1. 選擇訓練好的YOLOv5模型best.pt檔案(26)

(26)


    1. 成功執行自動標注功能(27),可於命令提示字元看到總共標記幾筆數據(28)

(27)

 

(28)

 

結語

透過以上的教學,相信各位已經能夠成功地透過labelGo對資料集進行自動標注,大家可以自己動手做過一遍,透過這樣有如魔法般的工具,將可節省各位標注的時間,有問題的看官們歡迎聯繫我,我們一同討論。

 

喜歡我的帖子,請幫我按個”收藏”,我們下回見。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論

lmx1689

lmx1689

2023年1月8日
問題解決了 他不可以使用舊版的YOLOv5訓練出的best.pt 一定要使用yolov5-6.2訓練出的best.pt才有辦法讀取
lmx1689

lmx1689

2023年1月7日
他出現無法成功autolabel以下為錯誤報告 Traceback (most recent call last): File "c:/Users/lmx16/Desktop/py3.8/labelGo-Yolov5AutoLabelImg-5_v5_source/labelGo.py", line 1388, in auto_label run(**vars(opt)) File "C:\Users\lmx16\Desktop\py3.8\venv\lib\site-packages\torch\autograd\grad_mode.py", line 27, in decorate_context return func(*args, **kwargs) File "c:\Users\lmx16\Desktop\py3.8\labelGo-Yolov5AutoLabelImg-5_v5_source\libs\autoLabeler.py", line 65, in run [f.write(name+"\n") for name in names] File "c:\Users\lmx16\Desktop\py3.8\labelGo-Yolov5AutoLabelImg-5_v5_source\libs\autoLabeler.py", line 65, in [f.write(name+"\n") for name in names] TypeError: unsupported operand type(s) for +: 'int' and 'str'