重磅乾貨,第一時間送達
YOLO系列的目標檢測模型隨著YOLOv5的引入變得越來越強大了。在這篇文章中,我們將介紹如何訓練YOLOv5為你識別自己定製的物件。
本文我們使用公共血細胞檢測資料集,你可以自己匯出,也可以在自己自定義資料上使用本教程。
公共血細胞檢測資料集:https://public。roboflow。ai/object-detection/bccd
為了訓練檢測器,我們採取以下步驟:
安裝YOLOv5依賴項
下載自定義YOLOv5物件檢測資料
定義YOLOv5模型配置和架構
訓練一個定製的YOLOv5檢測器
評估YOLOv5效能
視覺化YOLOv5訓練資料
對測試影象使用YOLOv5進行推斷
匯出並儲存YOLOv5權重以供將來使用
YOLOv5的新技術點
就在兩個月前,我們對googlebrain引入EfficientDet感到非常興奮,並寫了一些關於EfficientDet的部落格文章。我們認為這個模型可能會超越YOLO家族在實時目標探測領域的突出地位,但事實證明我們錯了。
三週內,YOLOv4在Darknet框架下發布,我們還寫了很多關於YOLOv4技術解析的文章。
在寫這些文章的幾個小時之前,YOLOv5釋出了,我們發現它非常清晰明瞭。
YOLOv5是在Ultralytics-Pythorch框架中編寫的,使用起來非常直觀,推理速度非常快。事實上,我們和許多人經常將YOLOv3和YOLOv4 Darknet權重轉換為Ultralytics PyTorch權重,以便使用更輕的庫來更快地進行推理。
YOLOv5比YOLOv4表現更好嗎?我們很快會向你介紹,在此之前你需要已經對YOLOv5和YOLOv4有了初步的瞭解。
YOLOv5與EfficientDet的效能對比
YOLOv4顯然沒有在YOLOv5儲存庫中進行評估,也就是說,YOLOv5更易於使用,而且它在我們最初執行的定製資料上表現非常出色。
我們建議你在 YOLOv5 Colab Notebook 中同時進行接下來的操作。
https://colab。research。google。com/drive/1gDZ2xcTOgR39tGGs-EZ6i3RTs16wmzZQ
安裝YOLOv5環境
首先我們克隆YOLOv5儲存庫並安裝依賴項,這會設定我們的程式設計環境,準備好執行物件檢測訓練和推理命令。
然後,我們可以看看谷歌Colab免費提供給我們的訓練環境。
你會從谷歌Colab收到一個 Tesla P100 GPU。以下是我收到的:
GPU可以讓我們加快訓練時間,Colab預裝了和。如果你嘗試在本地使用本教程,可能需要執行其他步驟來設定YOLOv5。
下載自定義YOLOv5物件檢測資料
在本教程中,我們將從Roboflow下載YOLOv5格式的自定義物件檢測資料。在本教程中,我們使用公共血細胞檢測資料集訓練YOLOv5檢測血流中的細胞,你可以使用公共血細胞資料集或上傳你自己的資料集。
Roboflow:https://roboflow。ai/
公共血細胞資料集:https://public。roboflow。ai/object-detection/bccd
關於標記工具的說明
如果你有未標記的影象,則首先需要標記它們。對於免費的開源標籤工具,我們推薦你閱讀
LabelImg入門
或
CVAT註釋工具入門
的教程指南。嘗試標記約50幅影象再繼續本教程,因為在以後提高模型的效能的過程中,你將需要新增更多標籤。
https://blog。roboflow。ai/getting-started-with-labelimg-for-labeling-object-detection-data/
https://blog。roboflow。ai/getting-started-with-cvat/
一旦你標記了資料,要將資料移動到Roboflow中,請建立一個免費帳戶,然後你可以以任何格式拖動資料集:(VOC XML、COCO JSON、TensorFlow物件檢測CSV等)。
上傳後,你可以選擇預處理和增強步驟:
為BCCD示例資料集選擇設定
然後,單擊 Generate 和 Download,你將可以選擇YOLOv5 Pythorch格式了。
選擇“YOLO v5 Pythorch”
當出現提示時,一定要選擇“Show Code Snippet”,這將輸出一個下載curl指令碼,這樣你就可以輕鬆地將資料以正確的格式移植到Colab中。
正在Colab中下載…
下載YOLOv5格式的自定義物件資料集
匯出將會建立一個名為data。yaml的YOLOv5。yaml檔案,指定YOLOv5 images資料夾、YOLOv5 labels資料夾的位置以及自定義類的資訊。
定義YOLOv5模型配置和架構
接下來,我們為我們的定製物件檢測器編寫一個模型配置檔案。在本教程中,我們選擇了最小、最快的YOLOv5基本模型,你也可以從其他YOLOv5模型中選擇,包括:
YOLOv5s
YOLOv5m
YOLOv5l
YOLOv5x
你也可以在此步驟中編輯網路結構,但一般不需要這樣做。以下是YOLOv5模型配置檔案,我們將其命名為:
訓練定製YOLOv5探測器
我們的和檔案已經準備好了,我們庫開始訓練了!
為了開始訓練,我們使用以下選項執行訓練命令:
img
:定義輸入影象大小
batch
:確定batch大小
epochs
:定義epochs。(注:通常,3000+很常見!)
data
:設定yaml檔案的路徑
cfg
:指定我們的模型配置
weights
:指定權重的自定義路徑。(注意:你可以從Ultralytics Google Drive資料夾下載權重)
name
:結果名稱
nosave
:只儲存最後的檢查點
cache
:快取影象以加快訓練速度
執行訓練命令:
訓練定製的YOLOv5探測器。它訓練得很快!
在訓練期間,你可以看 mAP@0。5 來了解你的探測器是如何執行的,請參閱這篇文章。
https://blog。roboflow。ai/what-is-mean-average-precision-object-detection/
評估定製YOLOv5檢測器的效能
現在我們已經完成了訓練,我們可以透過檢視驗證指標來評估訓練過程的執行情況。訓練指令碼將刪除tensorboard日誌,我們將其視覺化:
在我們的自定義資料集上視覺化tensorboard結果
如果你因為一些原因不能把張量視覺化,可以用utils。plot_result來繪製並儲存為result。png。
你需要在驗證評估分數達到其最高點處獲取訓練好的模型權重。
視覺化YOLOv5訓練資料
在訓練過程中,我們可以視覺化真實訓練資料和增強後的訓練資料。
我們的真實訓練資料
我們的訓練資料採用自動YOLOv5增強
物件測試影象執行YOLOv5推斷
現在我們利用我們訓練好的模型,對測試影象進行推理。訓練完成後,模型權重將儲存到 weights/。
推理過程,我們呼叫這些權重和一個指定模型置信度的conf(要求的置信度越高,預測越少)、以及一個推理源。源可以接受一個包含影象、單個影象、影片檔案以及裝置的網路攝像頭埠的目錄。對於原始碼,我將移到。
推理時間非常快,在我們的 Tesla P100 上,YOLOv5s 達到了每秒142幀!!
以142 FPS(0。007s/影象)的速度推斷YOLOv5s
最後,我們在測試影象上視覺化我們的檢測器推斷結果。
測試影象的YOLOv5推理
匯出並儲存YOLOv5權重以將來推斷
既然我們定製的YOLOv5物體檢測器已經透過驗證,我們需要從Colab中取出權重,用於實時計算機視覺任務,為此我們匯入一個Google驅動器模組並將其傳送出去。
結論
我們希望你可以訓練屬於你自己的定製YOLOv5檢測器!
使用 YOLOv5 非常方便,而且訓練迅速,推理迅速,表現出色。讓我們把它弄出來!
參考連結:https://blog。roboflow。ai/how-to-train-yolov5-on-a-custom-dataset/
下載1:OpenCV-Contrib擴充套件模組中文版教程
下載2:Python視覺實戰專案52講
下載3:OpenCV實戰專案20講
交流群