在自定義的資料集上訓練YOLOv5詳細教程分享

重磅乾貨,第一時間送達

在自定義的資料集上訓練YOLOv5詳細教程分享

YOLO系列的目標檢測模型隨著YOLOv5的引入變得越來越強大了。在這篇文章中,我們將介紹如何訓練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詳細教程分享

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等)。

上傳後,你可以選擇預處理和增強步驟:

在自定義的資料集上訓練YOLOv5詳細教程分享

為BCCD示例資料集選擇設定

然後,單擊 Generate 和 Download,你將可以選擇YOLOv5 Pythorch格式了。

在自定義的資料集上訓練YOLOv5詳細教程分享

選擇“YOLO v5 Pythorch”

當出現提示時,一定要選擇“Show Code Snippet”,這將輸出一個下載curl指令碼,這樣你就可以輕鬆地將資料以正確的格式移植到Colab中。

正在Colab中下載…

在自定義的資料集上訓練YOLOv5詳細教程分享

下載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詳細教程分享

訓練定製的YOLOv5探測器。它訓練得很快!

在訓練期間,你可以看 mAP@0。5 來了解你的探測器是如何執行的,請參閱這篇文章。

https://blog。roboflow。ai/what-is-mean-average-precision-object-detection/

評估定製YOLOv5檢測器的效能

現在我們已經完成了訓練,我們可以透過檢視驗證指標來評估訓練過程的執行情況。訓練指令碼將刪除tensorboard日誌,我們將其視覺化:

在自定義的資料集上訓練YOLOv5詳細教程分享

在我們的自定義資料集上視覺化tensorboard結果

如果你因為一些原因不能把張量視覺化,可以用utils。plot_result來繪製並儲存為result。png。

在自定義的資料集上訓練YOLOv5詳細教程分享

你需要在驗證評估分數達到其最高點處獲取訓練好的模型權重。

視覺化YOLOv5訓練資料

在訓練過程中,我們可以視覺化真實訓練資料和增強後的訓練資料。

在自定義的資料集上訓練YOLOv5詳細教程分享

我們的真實訓練資料

在自定義的資料集上訓練YOLOv5詳細教程分享

我們的訓練資料採用自動YOLOv5增強

物件測試影象執行YOLOv5推斷

現在我們利用我們訓練好的模型,對測試影象進行推理。訓練完成後,模型權重將儲存到 weights/。

推理過程,我們呼叫這些權重和一個指定模型置信度的conf(要求的置信度越高,預測越少)、以及一個推理源。源可以接受一個包含影象、單個影象、影片檔案以及裝置的網路攝像頭埠的目錄。對於原始碼,我將移到。

推理時間非常快,在我們的 Tesla P100 上,YOLOv5s 達到了每秒142幀!!

在自定義的資料集上訓練YOLOv5詳細教程分享

以142 FPS(0。007s/影象)的速度推斷YOLOv5s

最後,我們在測試影象上視覺化我們的檢測器推斷結果。

在自定義的資料集上訓練YOLOv5詳細教程分享

測試影象的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講

交流群