YOLOv3優化:YOLOX-Darknet53
1.1 架構
Backbone:YOLOX-Darknet53
Neck:SPPNet。
Head:Decoupled Head
Coupled Head:將分類問題(目標類別)與回歸問題(bounding box位置),當作同一個任務處理(共享參數)。速度提升,但同時關注類別與Bbounding box位置,兩者可能交互影響。
Decoupled Head
模型收斂速度:Decoupled Head > Coupled Head
YOLOv3 baseline加上lite Decoupled Head後,推論時間增加1.1ms,但AP增加1.1%。(速度與準確度的權衡,是可以接受的)
1.2 優化方法
Darknet53(Bag of freebies)
EMA Weights Updating:權重的更新採用移動平均法,權重更新受到「當前數據」與「近期歷史數據」的加權影響,降低離群值導致的劇烈變動。
使用固定的學習率到模型訓練後期,會發現收斂速度明顯變慢,且容易找到局部最小值(Local minuma),而非最佳解(Global minima)
單純降低學習率(Reduce Learning Rate),模型仍可能陷入鞍點,影響效能。
Cosine Learning Rate是隨著迭代次數增加,以Cosin函數變動學習率。學習率先降低在提高(波動的學習率),避免陷入鞍點。
BCE Loss:訓練類別和信心水準分支的損失函數。文中提及的是BCE With Logits Loss,詳細可參考YOLOX Explanation — How Does YOLOX Work?
IoU loss:訓練回歸分支的損失函數。關注Bounding box與實際目標重疊面積而定義的損失函數。
Data augmentation
Strong data augmentation
Mixup:將2張影像的影像與標籤進行疊加。(貓狗影像疊加,標籤以權重表示)
Mosaic:Mosaic混合4張不同圖片(旋轉、縮放與HSV調整),再合併成1張圖。
YOLOX在模型訓練結束前15個epoch,會關閉Strong data augmentation。目的是最終讓模型避開資料擴增的不準確標註框,回到原本的樣本分布。
Anchor-free:模型結構圖來自於深入浅出 Yolo 系列之 Yolox 核心基础完整讲解。
Anchor-base(搭配Coupled Head)
Anchor-free(搭配Decoupled Head)
Multi positives:為了與YOLOv3規則一致,anchor-free僅選擇一個正樣本,忽略其他量質量預測框,同時可能產生正負樣本不均衡。故作者參考FCOS中心採樣策略,將正樣本附近3*3區域的grid cell,都視為正樣本計算。
SimOTA:一種候選標籤分配策略,將標籤分配視為多個目標與候選框匹配問題,用來篩選Anchor-free候選框的正樣本。
YOLOv5優化、建構輕量化架構與其他發現
2.1 YOLOv5:YOLOX-s、YOLOX-m、YOLOX-l、YOLOX-x
2.2 輕量化的架構:YOLOX-Tiny、YOLOX-Nano
2.3 其他發現
讓我們繼續看下去...