概述
yolo在目標檢測領域是非常有代表性的模型,它速度快識別效果也很精準,是實時檢測模型中應用最廣泛的。yolo的原理和代碼是很容易獲得的,且有各式各樣的教程,但是模型怎么使用的教程相對比較少。本文講解如何使用yolov5模型訓練自己的模型,同時也包含了如何標注自己的數據。
標注自己的數據
首先要收集自己的要訓練的數據,可以通過網絡收集或者自己拍攝的途徑獲得。收集好圖片之后就要進行圖片的標注,這里推薦使用labelimg標注工具標注,可以自行在網絡搜索獲得。安裝完成labelimg標注軟件之后,打卡標注軟件,軟件內部如下圖所示。
在標注之前我們要將搜集的圖片存放在一個文件夾下,然后新建一個文件夾用來存放標注文件。點擊軟件左上角的"Open Dir"圖標打開自己存放圖片的路徑,接著點擊"Change Save Dir"圖標打開剛剛創建的保存標注文件的路徑。然后點擊下圖箭頭指向的地方,點擊切換為"YOLO"圖標(代表使用yolo格式存儲,便于后續訓練)。
完成上述操作之后就可以開始標注圖片了。按w新建標注框,編輯標簽名稱,保存后就成功標注了第一張圖片。
保存后查看標注文件保存的路徑會看到新建了兩個文件,classes.txt代表類別,另一個代表剛剛標注的文件對應的類別和坐標信息和原圖片名稱相對應。
在代碼中配置自己的標注文件
標注就演示到這里了。這里只演示了單張的圖片的標注,實際的項目中樣本量至少也要幾十張,多張標注方式和這個一樣。
標注完成數據之后要劃分訓練數據集和驗證數據集,可以按8:2的比例劃分。劃分時候的目錄結構可以參考下圖。
標注完數據之后就要進行訓練了,yolov5使用的是ultralytics版本的代碼,可以自行在github中下載。打卡工程文件之后找到下圖所示的data路徑,新建一個自己的yaml文件,
打開新建的yaml文件,將自己的圖片數據和對應標注文件劃分好訓練和驗證的路徑填寫在“train”和“val”后,代碼如下:
train: D:\mydata\train# 訓練數據的路徑
val: D:\mydata\val# 驗證數據的路徑# Classes
names:0: fire #這里填寫自己標注的類別名稱。
訓練自己的數據集
經過以上操作數據集的標注和配置文件的編寫就完成了,接下來要進行到訓練步驟了。當然在訓練模型之前要配置好自己的代碼環境,在項目根目錄下可以找到requirements.txt文件,根據里面的對應的軟件包名稱完成環境配置。配置好環境之后,我們找到yolov5項目文件的根目錄,在終端中打開。在終端中輸入以下命令,–data后加自己的創建的yaml文件,–weight代表預訓練權重 使用yolov5s.pt文件即可,–cfg代表模型配置文件使用yolov5s.yaml即可,–batch-size 代表同時訓練的圖片張數(如果顯卡的顯存較小,適當寫小一點,在硬件支持的條件下越大越好),–epochs代表訓練的輪次。
python train.py --data mydata.yaml --weight yolov5s.pt --cfg yolov5s.yaml --batch-size 10 --epochs 100
如沒有問題就開始訓練了,終端會輸出訓練的進度。
訓練結束之后終端里會輸出生成的pt文件存放路徑,以及這次訓練的精度的統計,還有存放這次訓練的結果路徑,可以通過這些數據回顧整個訓練過程。保存的pt文件可以為自己模型推理和預測。
用訓練的模型pt文件進行預測
訓練完自己的數據集之后得到了pt文件,這個文件可以預測自己的目標檢測對象,預測在yolov5中使用的detect.py文件,和上文一樣在終端中打開項目文件的根目錄,在終端中輸入以下命令。–weight使用自己的pt文件,–source 代表用來預測的圖片或視頻的路徑。
python detect.py --weight fire.pt --source D:\video\fire.mp4
執行上述代碼之后會進行預測,在對應的結果目錄找到預測的結果便能知曉模型效果。下圖為火焰檢測的效果。