iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0

內容

  1. YOLOv3優化:YOLOX-Darknet53

    1.1 架構

    • Backbone:YOLOX-Darknet53

      • Darknet19為YOLOv2中提出的特徵萃取網路,結構僅由卷積層與殘差網路組成。在維持準確度的同時,速度更快。
      • Darknet53為YOLOv3中,參考Darknet19所建構。
    • Neck:SPPNet。

      • 藉由SPP將圖像特徵轉化成相同大小的特徵向量,消除圖像輸入尺寸的限制。
      • 在維持相同的收斂速度情況下,提高模型的準確度。

    • Head:Decoupled Head

      • Coupled Head:將分類問題(目標類別)與回歸問題(bounding box位置),當作同一個任務處理(共享參數)。速度提升,但同時關注類別與Bbounding box位置,兩者可能交互影響。

      • Decoupled Head

        • 將分類問題(目標類別)與回歸問題(bounding box位置),視為不同任務處理,不再共享參數。
        • Decoupled Head,分成兩部分單獨關注類別與bounding box位置,可避免misalignment問題,此概念在Revisiting the Sibling Head in Object Detector提及。
      • 模型收斂速度:Decoupled Head > Coupled Head

      • YOLOv3 baseline加上lite Decoupled Head後,推論時間增加1.1ms,但AP增加1.1%。(速度與準確度的權衡,是可以接受的)

    1.2 優化方法

    • Backbone
      • Darknet53(Bag of freebies)

        • EMA Weights Updating:權重的更新採用移動平均法,權重更新受到「當前數據」與「近期歷史數據」的加權影響,降低離群值導致的劇烈變動。

        • Cosine Learning Rate

          • 使用固定的學習率到模型訓練後期,會發現收斂速度明顯變慢,且容易找到局部最小值(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

          • RandomHorizontalFlip:圖像與標籤隨機水平翻轉。
          • ColorJitter:圖像屬性的偏移,包括:亮度、對比度、飽和度和色調。
          • Multi-scale:訓練模型時,每隔n個batches隨機選擇圖片的輸入尺寸,範圍從448到832(32的倍數),最早在YOLOv2中提出。
      • 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,僅針對特定資料集,泛化程度差。
          • Anchor-base搭配Coupled Head,對每一個grid預測3個anchor box(指定長寬,再依照預測做比例縮放),複雜且大量的運算,不適合應用在邊緣或移動設備。
        • Anchor-free(搭配Decoupled Head)

          • 省略了手動挑選anchor的步驟,將參數縮減到1/3提升速度,也提高了準確度。
          • Anchor-free搭配Decoupled Head,對每一個grid預測1個anchor box(直接預測邊界框大小),grid左上角的x、y偏移量,及邊界框的高度和寬度。
      • Multi positives:為了與YOLOv3規則一致,anchor-free僅選擇一個正樣本,忽略其他量質量預測框,同時可能產生正負樣本不均衡。故作者參考FCOS中心採樣策略,將正樣本附近3*3區域的grid cell,都視為正樣本計算。

      • SimOTA:一種候選標籤分配策略,將標籤分配視為多個目標與候選框匹配問題,用來篩選Anchor-free候選框的正樣本。

        • OTA:包括4個原則loss/quality aware、center prior、dynamic number of positive anchors for each ground-truth、global view
        • SimOTA(簡化版OTA):使用OTA時,Sinkhorn-Knopp算法會增加25%模型訓練時間。故SimOTA改用top-k策略計算最佳匹配,以近似解的方法避免此問題。
  2. YOLOv5優化、建構輕量化架構與其他發現

    2.1 YOLOv5:YOLOX-s、YOLOX-m、YOLOX-l、YOLOX-x

    • 採用YOLOv5原本的backbone與CSPNet、SiLU激活函數和PANet。
    • 僅將Head修改為Decoupled Head就獲得效能的提升。

    2.2 輕量化的架構:YOLOX-Tiny、YOLOX-Nano

    • YOLOX-Tiny:YOLOX模型縮小後得到,與YOLOv4-tiny相比,AP提升10.1%。
    • YOLOX-Nano:以深度卷積建構,與NanoDet相比,AP提升1.8%。

    2.3 其他發現

    • 訓練小模型(YOLOX-s、YOLOX-Tiny、YOLOX-Nano)時,不使用Strong data augmentation,模型效能較好。
    • 訓練大模型(YOLOX-L)時,Strong data augmentation型效能較好。

小結

  1. 下一站,我們前往「YOLOv7解析(一)」。

讓我們繼續看下去...


參考資料

  1. 旷视科技answer-如何评价旷视开源的YOLOX,效果超过YOLOv5?
  2. Megvii-BaseDetection/YOLOX
  3. 全面解讀YOLOX論文
  4. 深入浅出 Yolo 系列之 Yolox 核心基础完整讲解

上一篇
《第16天》YOLOX解析(一)
下一篇
《第18天》YOLOv7解析(一)
系列文
Object Detection and Image Processing with Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言