谷歌colab訓練自己的資料集YOLOv3

CCCCCCCCCCxy 發表於 2020-12-04

自己電腦的GPU不支援cuda,所以嘗試使用谷歌的Colabortory,免費提供GPU,最長執行時間12小時,因此一般需要掛載到谷歌雲盤上,儲存檔案。

資料集

目標檢測的資料集需要自己手動標註目標物體位置並對應生成xml檔案表示目標框的位置,本文簡單介紹windows系統下標註工具LabelImg的使用。
LabelImg下載連結:LabeIImg
下載好labelImg-master.zip後解壓得到如下圖所示。
在這裡插入圖片描述
shift+右擊空白處開啟powershell視窗
輸入兩個命令Pyrcc5 -o resources.py resources.qrc
python labelImg.py
可能會出現no module named libs.resources這樣的錯誤,將resources.py拷貝到同級的libs目錄下就可以解決了。再輸入第二條命令就可以執行成功了。具體使用可以參考這篇windows下使用labelImg標註影像
在這裡插入圖片描述
本次採用的資料集是紅細胞的檢測,已經標註好的資料連結:已標註好的細胞資料連線,Annotations檔案是已經標註好目標框的xml檔案,JPEGImages是jpg圖片檔案。
在這裡插入圖片描述

colab使用

首先需要建立一個谷歌雲盤賬號,右鍵空白處->更多->Google Colabortory,相應目錄下會生成一個.ipynb檔案,下次使用可直接右鍵此檔案以Google Colabortory方式開啟。如果沒有Googel Colabortory選項,點選關聯更多應用新增。
在這裡插入圖片描述
首先訓練自己的資料集需要掛載谷歌雲盤,方便檔案的傳輸。點選連結進去,複製程式碼到下面框中即可。
在這裡插入圖片描述
掛載成功如下圖
在這裡插入圖片描述
下面介紹一些簡單的檔案操作:
在這裡插入圖片描述
設定GPU模式

在這裡插入圖片描述
在這裡插入圖片描述

配置檔案

首先clone專案構建Darknet,輸入以下命令
在這裡插入圖片描述

在這裡插入圖片描述
構建好後,右側檔案如下圖:
在這裡插入圖片描述

上傳並構建資料集

將剛才下載好的資料集上傳到/darknet/data/目錄下,在谷歌雲盤中相應目錄下空白處右擊上傳即可,修改資料集名字為yolov3。

在這裡插入圖片描述點進Yolov3,建立imagesets和labels兩個空資料夾,imagesets存放圖片路徑,labels存放目標框位置。
在這裡插入圖片描述
imagesets路徑編寫在這裡插入圖片描述生成的txt檔案內容如下,每張圖片的完整路徑。

在這裡插入圖片描述
分割資料集為訓練集和測試集,分割後圖片的名字存在imagesets下

在這裡插入圖片描述
imagesets下的檔案

在這裡插入圖片描述
在這裡插入圖片描述
從xml檔案中提取目標框座標,並存入labels資料夾裡,生成train.txt和test.txt,與上面生成的不一樣,這裡是圖片的完整路徑

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
生成的labels檔案內容如下:

在這裡插入圖片描述

配置檔案

在/darknet/data/目錄下建立rbc.data和rbc.names檔案,如下:
在這裡插入圖片描述
在這裡插入圖片描述
網路結構配置,將/darknet/cfg/目錄下的yolov3.cf檔案基礎上改,可以將yolov3.cf檔案複製重新命名為yolov3_custom.cfg再存到cfg目錄下。修改地方如下,如何修改可參考Yolov3 win10+vs17 執行及訓練自己的資料集
在這裡插入圖片描述

在這裡插入圖片描述

開始訓練

下載預訓練權重
在這裡插入圖片描述
訓練,第一行是防止Permission denied錯誤。這裡注意前面構建資料的檔案一定要放對路徑,不然會報奇奇怪怪的錯。訓練產生的權重檔案自動儲存在/darknet/backup中
在這裡插入圖片描述
如中間因不明原因停止可以檢視backup目錄下最後一次權重是多少(比如yolov3_custom_700.weights),然後執行如下程式碼就可以了。
在這裡插入圖片描述