模型架構
1.1 Backbone選擇
CSPResNeXt50
CSPDarkNet53優於CSPResNeXt50
經作者測試,CSPResNeXt50影像分類效果佳,但CSPDarkNet53物件值偵測佳,故最終選擇後者作為Backbone。
1.2 Neck用途
SPPNet:藉由SPP將圖像特徵轉化成相同大小的特徵向量,消除圖像輸入尺寸的限制。在維持相同的收斂速度情況下,提高模型的準確度。
PANet:引入short-circuit概念,並以Addition融合不同尺寸特徵圖資訊。而YOLOv4中將原本的Addition改成Concatenation。
1.3 YOLOv4模型:CSPDarkNet53 + SPPNet + PANet + YOLOv3 Head
優化方法
2.1 Bag of freebies :不改變網路結構的訓練策略,推論速度不變,提高準確度。
CutMix與Mosaic數據增強
CutMix:包括mixup(疊加影像與標籤)、Cutout(裁切部分像素,使模型不僅專注學習物件特徵)。
Mosaic:不同於CutMix僅使用2張圖片,Mosaic混合4張不同圖片(旋轉、縮放與HSV調整再合併成1張圖),可提升模型的泛化程度。
DropBlock:Dropout隨機將特徵權重設為0捨去,但鄰近特徵可能帶有相似信息,無法有效提升模型泛化程度。故將此概念演變成,隨機將特徵bolck權重設為0。
Class label smoothing:one hot encoding導入factor參數,降低稀疏陣列的影響。通常應用在小資料集,解決資料不平衡問題,避免模型過擬合。但資料充足時,可能會造成模型欠擬合。
CIoU-loss:代替原本的Smooth L1 Loss。除了考慮Bounding box與實際目標重疊面積,又引入懲罰項(Bounding box和目標框的中心點距離)
CmBN:CBN的變體,計算BN時僅在幾個mini-batch中收集信息,在不耗費太多記憶體的情況下,擴大batch size信息。
2.2 Bag of specials:改變模型結構,犧牲少數推論時間,提高準確度。
讓我們繼續看下去...