Yolov4模型訓練規則和技巧

Yolov4模型訓練技巧總結

Training Yolo v4 (and v3):

AlexeyAB官方github介紹:

訓練對應的yolov4.cfg,cfg/yolov4-custom.cfg,cfg/yolov4-tiny.cfg,需下載對應的yolov4.conv.137,yolov4-tiny.conv.29 預訓練模型

How to improve object detection:

1、修改cfg文件中設置 random=1 ,多尺度訓練

2、提高網絡分辨率,修改cfg文件中的尺寸(height=608,width=608 或者 任何32的倍數),這將會提高精度

3、檢查要檢測的每個目標在數據集中是否都被強制標記 - 數據集中的所有目標都應該有標籤。大部分訓練的問題是數據集中有錯誤標籤

4、我的loss很高,map很低,訓練錯了嗎?

​ 在訓練命令結尾加上 -show_imgs,訓練是否能看到正確的目標標註框,如果不能——你的訓練數據是錯誤的

5、保證樣本的多樣性。對於您想要檢測的每個對象 - 在訓練數據集中必須有至少1個相似且大致相同的對象:形狀、對象的側面、相對大小、旋轉角度、傾斜、光照。理想情況下,數據集應包括在以下方面各不相同的對象:縮放,旋轉,照明,從不同的側面,在不同的背景上。

6、希望您的訓練數據集包括您不想檢測的 未標記的對象的圖像

7、標記物體最好的方法是什麼:只標記物體可見的部分,還是標記物體可見和重疊的部分,還是標記比整個物體稍多一點(有一點間隙)?按你喜歡的方式標記-你希望它如何被檢測到,就如何標記

8、對於訓練的每張圖片中有大量的目標,在.cfg文件最後的yolo層或region層加上max = 200或更高的值,YoloV3可以檢測到的全局最大對象數爲0.0615234375* (寬度 * 高度),其中寬度和高度是cfg-file中[net]部分的參數

9、yolov4.cfg文件 對於小目標的訓練(小目標是指:在圖像被調整到416x416後小於16x16的目標)

  • 設置 layers = 23 而不是 layers = 54 :https://github.com/AlexeyAB/darknet/blob/6f718c257815a984253346bba8fb7aa756c55090/cfg/yolov4.cfg#L895

  • 設置 stride = 4 而不是 https://github.com/AlexeyAB/darknet/blob/6f718c257815a984253346bba8fb7aa756c55090/cfg/yolov4.cfg#L892

  • 設置 stride = 4 而不是 https://github.com/AlexeyAB/darknet/blob/6f718c257815a984253346bba8fb7aa756c55090/cfg/yolov4.cfg#L989

10、for training for both small and large objects use modified models:

  • Full-model: 5 yolo layers https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3_5l.cfg
  • Tiny-model: 3 yolo layers: https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-tiny_3l.cfg
  • YOLOv4: 3 yolo layers: https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov4-custom.cfg

11、如果您訓練模型將左右對象區分爲單獨的類(比如,在路牌上左轉/右轉,左轉/右轉)需要禁用翻轉數據增強:https://github.com/AlexeyAB/darknet/blob/3d2d0a7c98dbc8923d9ff705b81ff4f7940ea6ff/cfg/yolov3.cfg#L17

12、一般規則-你的訓練數據集應該包括這樣一組相對大小的對象,你想檢測:

13、每一個:對象的模型,側面,力,比例,每30度的轉彎和傾角-這些是不同的對象從內部的神經網絡的視角。因此,要檢測的不同對象越多,就應該使用越複雜的網絡模型。

14、爲了使檢測框更加準確,可以在每個[yolo]層中添加3個參數ignore_thresh = .9 iou_normalizer=0.5 iou_loss=giou,它將增加[email protected],但減少[email protected]

爲了加速訓練(降低檢測精度),在cfg文件中設置第136層的param stopbackward=1

15、除非你是神經檢測網絡的專家 - 否則需要根據數據集的寬度和高度重新計算anchers從cfg-file:

./darknet detector calc_anchors data/voc.data -num_of_clusters 6 -width 608 -height 608

16、通過在你的。cfg文件中設置(高度=608,寬度=608)或(高度=832,寬度=832)或(32的任意倍數)來增加網絡分辨率——這增加了精度並使它能夠增強小目標檢測

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章