前言
YOLOV4模型訓練流程和V3基本類似,不過仍然有一些需要注意的地方,否則很容易遇到各種問題。
訓練
1)去AlexeyAB github上獲取源代碼
2)代碼編譯,這個和yolo3編譯差不多的。
3)重點講一下yolov4.cfg
在cfg子目錄下有yolov4.cfg和yolov4-custom.cfg。AlexeyAB建議基於yolov4-custom.cfg來對自己數據集進行模型訓練。需要修改的地方:
a)batch=64 subdivisions=16的修改: YOLOV4訓練相對V3更耗顯存,所以這兩個值要根據顯存使用情況進行相應調整。
b)max_batches=xxx: 作者建議這個值設成 classes_num * 2000,比如說數據集一共有3個類型,那麼max_batches=6000。不過我個人建議可以根據測試情況來適當加大些。
c)steps=xxx,x
xx: 作者建議這兩個值分別設成max_batches的80%和90%.
d)network size的width和height值 要分別設成 32的倍數。經典的有416x416 608x608等。
e)YOLOV4仍然有3個yolo層。每個yolo層裏面的classes值要和我們自己數據集類型數目相對應。
f)將每個yolo層前面的conv層裏面filters值改成(classes + 5)x3
4)數據集準備和V3一樣的,主要是注意預訓練模型需要換成下面這個:
yolov4.conv.137 ,其下載鏈接爲:https://drive.google.com/open?id=1JKF-bdIklxOOVy-2Cr5qdvjgGpmGfcbp
5)最後就是訓練命令,注意下參數。可以參考下面:
./darknet detector train xxx/xxx_2019_12.data /work/xxx/yolov4-custom.cfg ../xxx/yolov4.conv.137 -clear -dont_show