iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0

內容

  1. 導論

    1.1 物件偵測現況:應用在多物件追蹤、自動駕駛等,通常執行的設備會是移動端CPU、GPU或是NPU。

    • CPU實時檢測:基於MobileNet、ShuffleNet 或GhostNet Backbone。
    • GPU實時檢測:搭配CSPNet優化過的ResNet、DarkNet或DLA。

    1.2 目的:本文希望提出可以同時支援移動端的GPU與雲端GPU設備的物件偵測模型。

    1.3 本文優化方向

    • 模型結構優化
      • 設計有效率利用參數與運算的模型。
      • 更佳的模型縮放方法。
    • 模型訓練過程優化:透過Bag of freebies策略,犧牲部分訓練成本,但推論速度不變,提高模型準確度。
  2. 實時物件偵測

    2.1 總結優秀模型特徵

    • 6種特徵
      • 更快更強的網路架構(1)
      • 更高效的特徵整合(2)
      • 更準確的檢測方法(3)
      • 更穩健的損失函數(4)
      • 更高效的標籤分配策略(5)
      • 更高效的模型訓練策略(6)
    • 本文著重於特徵(4)(5)(6),並提出對應的Bag of freebies策略。

    2.2 模型重新參數化(可分成模型、模塊集成)

    • 模型集成

      • 方法一:使用不同資料集訓練多個相同且獨立的模型,再將多個模型的權重平均。
      • 方法二:將一個模型在不同迭代次數下的權重進行加權平均。
    • 模塊集成

      • 訓練時將一個模塊拆成多個相同或不同的模塊分支。
      • 推論時將多個模塊分支聚合為一個完全等效的模塊。

    2.3 模型縮放

    • 文獻探勘(獨立分析縮放因子)
      • 常見因子:圖像輸入尺寸、Depth、Width與Stage。
      • NAS可自動搜索合適的縮放因子,但運算成本昂貴。
    • 本文選用基於串聯的模型,放大深度(Depth)時,計算模塊的過度層通道(Width)會隨之增加,故需複合考量縮放因子。
  3. 模型結構

    3.1 擴展高效層聚合網路

    • VoVNet

      • MAC(記憶體訪問成本)公式運算發現,當卷積計算的輸入與輸出通道數相同,可以得到MAC最小值。
      • 為了解決DenseNet模塊MAC過高的問題,將其改進為OSA模塊,讓輸入與輸出的通道數一致。
    • CSPVoVNet

      • CSPNet:將Base layer特徵分成兩部分,Part2(右半)經過Dense Block與Transition layer,再與Part1(左半) concatenate(cross stage connection)。藉由高效率的梯度傳遞,節省運算資源。
      • CPSVoVNet結合CSPNet,並進一步考量梯度路徑,使不同層的權重學習更多的特徵。使得模型又快(CSP)又準(梯度路徑)。

    • ELAN:為了設計一個高效的網路,ELAN使用的策略為「控制最短最長梯度路徑,使更深的網絡可以有效地學習和收斂」

    • E-ELAN

      • ELAN:在大型的ELAN架構中,如果計算模塊被無限制堆疊,梯度路徑不穩定,可能導致參數利用率降低。
      • E-ELAN:加入expand、shuffle、merge cardinality架構,維持原始梯度路徑穩定度,且讓不同的模塊學習多樣化特徵,提高網路學習能力。

    3.2 基於串聯的模型縮放方法

    • 一般縮放:PlainNet或ResNet等結構,深度縮放時,輸入維度與輸出維度相同。故可以獨立分析縮放因子對參數和計算量的影響。

    • 複合模型縮放:
      • 基於串聯的模型放大深度(Depth)時,計算模塊的輸出維度(Width)會隨之增加,無法獨立分析縮放因子對參數和計算量的影響。
      • 複合模型縮放方法
        • 當計算模塊的深度因子縮放時,需計算縮放後計算模塊的輸出通道變化量。
        • 對過度層執行相同變化量的寬度因子縮放。
  4. 訓練模型的bag-of-freebies策略

    4.1 計算重新參數化卷積層

    • RepConv
      • 藉由梯度傳播路徑概念,將重新參數化應用到VGG,取得了優秀的性能。
      • 將其直接應用於ResNet、DenseNet,其identity connection會破壞前者的殘差結構與後者的串聯結構,準確度顯著降低。

    • RepConvN
      • RepConv結合PlainNet:發現PlainNet沒有identity connection,能順利引入RepConv。

      • RepConv結合ResNet:若RepConv identity connection與ResNet shortcut connection合併運算會降低準度。

      • RepConvN結合ResNet:RepConvN為RepConv去除identity connection,本文採用此架構。

    4.2 標籤分配策略

    • 深度監督:在網路中間層添加輔助頭( Auxiliary Head),使用輔助損失引導淺層網路權重的訓練,而負責輸出的稱為主導頭(Lead Head)。

    • 主導頭引領標籤分配

      • 獨立分配:兩者單獨與自己的ground truth運算進行標籤分配。

      • Lead Head引導分配:利用Lead Head與自己的ground truth運算得到的軟標註,較能表達資料與ground truth關聯。再將此關聯用於輔助頭訓練。

      • Coarse-to-fine主導頭引導分配

        • 同Lead Head引導分配,但生成軟標註時,區分為細標籤(Fine Label)與粗標籤(Coarse Label),其中細標籤與Lead Head引導分配關連相同。
        • 粗標籤則降低正樣本分配限制,允許更多網格作為正樣本(如把中心點鄰近網格也視為正樣本)。
        • 當粗標籤的額外權重與細標籤相近時,細標籤可能產生不良的先驗。故本文在auxiliary head 解碼器中增加「細標籤的可優化上限高於粗標籤」的限制。

    4.3 Other trainable bagoffreebies

    • Batch normalization:在推論階段,將批標準化(BN)層連接到卷積層,將BN層的平均值與標準差整合至卷積層的偏差和權重內。

    • YOLOR的隱式知識:模型推論時,將隱性知識運算減化為一個向量,再將此向量整合至前一層或後一層的卷積層偏差和權重內。

    • EMA Model:Mean Teacher使用指數移動平均權重,優化了所有層的輸出。

  5. 實驗比對

    5.1 與其他先進的物件偵測模型比對

    • 與YOLOv4、YOLOR Baseline比對

      • YOLOv7相較於YOLOv4:參數減少75%、計算量減少36%、AP提高1.5%。
      • YOLOv7相較於YOLOR-CSP:參數減少43%、計算量減少15%、AP提高0.4%
      • YOLOv7-tiny相較於YOLOv4-tiny-3l:參數減少39%、計算量減少49%、AP相近。
      • YOLOv7-tiny相較於YOLOR-E6:參數減少19%、計算量減少33%、AP相近。

    • 與SOTA算法比對:與所有SOTA算法相比,均有推論速度與準確度的優勢。

    5.2 Ablation study

    • 複合縮放方法:與僅縮放Width或Depth的模型相比,複合縮放均顯著提升準確度。

    • 計畫重新參數化模型:此處的RepConv指RepConvN。

      • 基於串聯模型:使用RepConvN替換不同位置3x3卷積層進行驗證。

      • 基於殘差模型:本文將Dark Block與CSPDark Block中的1x1與3x3卷積層對調,以符合計畫重新參數化策略。RepRCSP有顯著的準確度提升。

    • 輔助頭的輔助損失

      • 以YOLOv7-E6作為Baseline,對三種標籤分配標略進行比較。其中Coarse-to-fine主導頭引導分配表現最佳。

      • Coarse Label有無優化上限:有優化上限 > 無優化上限

      • Coarse-to-fine與 partial coarse-to-fine:Coarse-to-fine > partial coarse-to-fine


小結

  1. 下一站,我們前往「YOLOv4本地端訓練(Windows)」,分享如何設置YOLOv4環境,並進行訓練與推論。

讓我們繼續看下去...


參考資料

  1. YOLO演進 — YOLOv7 論文閱讀
  2. yolov7论文解读
  3. 经典文献阅读之--Yolov7
  4. 【yolo系列】YOLOV7的论文阅读】

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

尚未有邦友留言

立即登入留言