如果想從無到有訓練出 YOLOv4 的模型參數該如何做?
預先準備好的條件:
A. 程式環境為windows + darknet 執行檔環境.
B. 圖檔已經準備好, labels 檔案也已經準備好, classes 的名稱檔也已準備(coco.names)
C. YOLO4.cfg, coco.data, 可在原來的source code 的目錄中找到, copy 一份出來改成可以區分跟原來不同的檔名
開始動手了!
一.資料的準備與安排
最後的目錄結構
XX
+--- images
+--- trainIMG
+--- ValIMG
+--- Labels
+--- trainIMG
+--- ValIMG
以上紫色是default 會去找的目錄, 所以 labels 這目錄名稱不能修改
所有要訓練的影像放在trianIMG, ValidIMG 中 (目錄名稱可以自行決定) 或只效在同一個目錄
二. 如何產生 imglist file.
Cmd : 使用dosbox 的command line
Dir d:\XX\images\trainIMG /s/b > trainLst.txt
Dir d:\XX\images\ValIMG /s/b > ValLst.txt
#利用dir, and redirection to a file
直接使用image 目錄建立檔案LIST
# images, labels 裡面可以不分 train 或是val file, 可以放在起在 images 目錄中就行, 因為定義檔在trainsLST.txt 已有檔案的pathname
三. 修改環境檔案中的目錄定義.
使用darknet 習慣的命名方式 dataset_name.data
例如: mycoco.data
使用notepad 打開mycoco.data
classes= 80
train = D:/YOLO_DATA/trainLst.txt
#train = E:/MSCOCO/5k.txt
valid = D:/YOLO_DATA/valLst.txt
names = d:/data/coco.names
backup = backupCOCO
eval=coco
backupCoco 是output model 所存放的位置, 這是相對darknet.exe 的目錄以下的目錄名稱
coco.names 是依序列出class 的名稱, 如: class有80 個, 則.names就應有80行
四. model定義檔.
使用darknet 習慣的命名方式 'yolo4.cfg' 通常放在cfg 目錄中
例如: myyolo4.cfg
4.1 如果要改變classes 的個數, 則要打開此檔案做修改
如: 在mycoco.data 中的classes 從80 改為20
則要改6個地方
找到[yolo] 共3個地方
[yolo] 中的classes 改20
往上一個的[convolutional] 的filters 改為75
Filters 的公式為: (class+5)*3. 所以原來80 255,
記得3套[yolo]都要改
4.2 如果GPU 跑不動了, 或發生錯誤
[net] 中的
subdivisions=64 (從16 改為64)
其中還有一些training 的參數可調整, 目前尚未清楚理解, 將來補充說明
五. 執行 darknet
在dosbox command line 下, 切換到darknet.exe目錄
darknet detector train d:/xx/mycoco.data d:/xx/myyolov4-c.cfg yolov4.conv.137
我的例子, d:\xx==d:\YOLO_DATA
/// 下載 yolov4.137
https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.conv.137
六. 建議放設定檔案的位置
XX: data Set 的名稱
XX/trainLst.txt
XX/ValLst.txt
XX/mycoco4.cfg
Xx/mycoco.data
XX/coco.name
七. coco dataset 下載
https://cocodataset.org/#download
2014 Train images [83K/13GB]
2014 Val images [41K/6GB]
解壓到以上所述的目錄
其他相關文章
darknet.exe 使用說明-訓練命令發生錯誤 -Create 6 permanent cpu-threads. -任性學習
留言列表