YOLO演進 — YOLOv7 論文閱讀

李謦伊
謦伊的閱讀筆記
18 min readJul 14, 2022

最近非常受矚目的 SOTA real time object detection 論文 YOLOv7 不僅在準確率上超越了所有 YOLO 系列、transformer-based、convolutional-based 等模型,也在速度上取得相當優秀的成績。

📄 論文連接: https://arxiv.org/abs/2207.02696

🔗 Github: https://github.com/WongKinYiu/yolov7

主要貢獻如下:

  • 使用了一些 trainable bag-of-freebies tricks 優化網路訓練,包括 model re-parameterization、dynamic label assignment
  • 進一步分析 model re-parameterization,並提出 planned re-parameterized convolution module,使其能應用於各種模型架構
  • 進一步分析 dynamic label assignment,並提出兩種 label assignment 策略來處理及分配不同分支
  • 模型縮放與擴展 (extend、compound scaling model) 以有效運用參數量和計算量
  • 跟之前的 SOTA real time 物件偵測模型相比降低了 40% 參數量、50% FLOPs,並有更快的推理運算速度及準確率。此外,所有模型皆是 train from scratch

Extended networks

在設計具有高效能的模型架構時,經常會考慮到在推理運算上的一些評估指標,關於這些評估指標的詳細計算可參考:CNN parameters、FLOPs、MACs、MAC、CIO 計算

作者在論文中提到了四種模型架構,如下圖 2

圖(a)為 VoVNet 架構,在 yolov4 tiny 中曾討論過,其採用 OSA(One-Shot Aggregation)module 使得輸入與輸出的通道數一致,取得最小的 MAC,能夠讓推理運算的速度更高效。

關於 VoVNet 在 YOLO演進 — 4 — Scaled-YOLOv4 文章中有提到。

圖(b)為 CSPVoVNet 的架構,將 CSPNet 和 VoVNet 結合並考慮梯度路徑進行改進,使得不同層的權重能學習到更多樣化的特徵以提升準確率。

關於 CSPNet 在 YOLO演進 — 3 — YOLOv4詳細介紹 文章中有提到。

圖(c)為 ELAN 架構,藉由控制最短最長梯度路徑讓更深的網路能有效的學習和收斂。

由於大型的 ELAN 架構在梯度路徑長度和 computational block 的堆疊數量已達到穩定的狀態,若是再堆疊更多的 computational block 可能會導致參數利用率下降。

因此提出的新架構 E-ELAN (圖 d)在基於 ELAN 的架構上加入了 expand, shuffle, merge cardinality 方法,能夠持續加強模型的學習能力,同時不破壞原本的梯度路徑。此外,E-ELAN 僅改變 computational block 架構,並沒有更動 transition layer。

接著來細看 expand, shuffle, merge cardinality

📌expand

採用 group convolution 擴展所有 computational block 的 channel 及 cardinality,並且這些 computational block 中的每層 layer 都應用相同的 group 參數和 channel 倍數。這樣的操作使得模型有較強的可擴展性。

group convolution 如同其名為將卷積層進行分組、cardinality 指分組的數量,由 ResNeXt 提出。

📌shuffle

接著將 computational block 的輸出進行 shuffle,假設 group 參數為 g,就將其 shuffle 為 g 組,再分別進行 concate。

之所以對這些分組後的卷積層引入 channel shuffle 機制,是因為 group convolution 容易產生通道之間的訊息只在組內交流的問題。

channel shuffle 機制的操作可參考:ShuffleNetV1 論文閱讀

📌merge cardinality

最後再以相加的操作將這些分組的卷積層進行融合。

Compound model scaling

YOLO演進 — 4 — Scaled-YOLOv4 中有提到需針對不同的設備選擇其合適的模型縮放大小,以達到推理運算速度與準確度上的 trade-off。經常使用的縮放因子有 resolution (圖像大小)、depth (模型層數)、width (通道數量)、stage (feature pyramid 數量)。

之前的模型縮放文章,如 EfficientNet、Scaled-YOLOv4 是基於 PlainNet、ResNet 類型的架構上進行縮放時,每層 layer 的輸入和輸出並不會改變,因此能夠將這些縮放因子與參數量、計算量之間的影響獨立分析。

作者進一步分析後發現在 concatenation-based 的架構上並不能直接套用模型縮放的方法,若對於 depth 進行縮放會影響 computational block 後面的 transition layer 的輸入 (如下圖所示)。此外,也可能會造成模型在硬體上的使用率下降,因此必須同時考量這些縮放因子。

為了解決這個問題,作者提出了 compound model scaling 方法。下圖為該方法的操作,當對於 computational block 的 depth 進行縮放時,計算縮放後 computational block 的輸出通道變化量,並以該變化量對 transition layer 進行相同變化量的 width 縮放。

Trainable bag-of-freebies

關於 bag-of-freebies 的詳細介紹可參考 YOLO演進 — 3 — YOLOv4詳細介紹

model re-parameterization

model re-parameterization 是一種 ensemble 方法,藉由合併多個計算 module 到一個 inference stage 上,除了能提升推理運算的效能之外,也能減少記憶體儲存空間。目前分為 model-level、module-level。

📌model-level

常見的做法有兩種:

  1. 用不同的訓練資料訓練多個相同的模型,再平均這些模型的權重
  2. 將訓練過程中多個不同迭代的權重進行加權平均

📌module-level

module-level ensemble method 透過等價轉換多個 module 為單個 module(即 model compression),將訓練及推論階段上的模型進行解耦,因此這兩個階段上的模型會具有不同的架構。

做法如下:

  • 在訓練時,拆分 module 到多個不同或相同的分支
  • 在推理運算時,將這些 module 分支聚合到一個 module 中

然而不是每個 re-parameterization module 都能適用於各種架構,因此提出了 Planned re-parameterized convolution。

Planned re-parameterized convolution

structural re-parameterization 技術的經典模型之一為 RepVGG,如論文名稱所述,將 re-parameterization 應用至 VGG-style 這種簡潔靈活的架構,於設備部署上的準確率、速度、FLOPs、MAC 等指標皆擁有相當不錯的成果。

但若是將該方法直接地套用在 ResNet、DenseNet 上,反而使得準確率下降,而這樣的結果可能與其內部結構有關。RepVGG 所採用的 block 為 RepConv,由 3x3 Conv、1x1 Conv、identity connection 所組成。經分析後,作者認為 RepConv 中的 identity connection 會破壞 ResNet 中的 residual 及 DesNet 中的 concatenation 給不同 feature map 的梯度多樣性,因此去除 identity connection 來設計 planned re-parameterized convolution 架構。

下圖 4 為將 re-parameterization 應用至 PlainNet、ResNet 的示意圖。圖 (b) 為 re-parameterization 與 PlainNet 結合,由於 PlainNet 沒有 identity connection,能夠將其替代為 RepConv;圖 (d) 則因為 ResNet 的 residual 結構,直接應用 re-parameterization 會降低準確率;圖 (e) 架構只有將第一層改為 RepConv,在第二層中才有使用到 ResNet 的 shortcut connection,因此這樣的架構是可行的;而圖 (f) 則是相反,RepConv 與 ResNet 中的 residual 融合的架構會導致準確率降低,因此不採用;圖 (g)、(h) 中的 RepConvN 為作者提出的 planned re-parameterized convolution 架構 (去除了 RepConv 中的 identity connection)。

Coarse for auxiliary and fine for lead loss

在訓練深層的網路時,經常會在神經網路的中間層加入分類輔助器 (auxiliary head、auxiliary classifiers) 來提高穩定性、收斂速度、避免梯度消失問題,也就是使用 auxiliary loss 對淺層的網路權重進行訓練,這樣的技術稱為 Deep Supervision。

下圖 (a)、(b) 為有無使用 Deep Supervision 的 object detector 的比較,其中最後負責輸出的 head 稱為 lead head,輔助訓練的 head 稱為 auxiliary head。

GoogLeNet 中有提到 auxiliary classifiers

對 target label 的定義在以往通常是使用遵循 ground truth 的 hard label,近年來也有使用把模型的預測結果與 ground truth 做一些最佳化運算得到 soft label 的做法,在此論文中將這樣的機制稱為 label assigner。

作者討論了三種在 auxiliary head 和 lead head 上分配 soft label 的做法: Independent (圖c)、Lead head guided label assigner (圖 d)、Coarse-to-fine lead head guided label assigner (圖 e),後兩項為作者提出的 label assignment 策略。

  • Independent

auxiliary head 和 lead head 各自與 ground truth 進行 label assignment,是目前大多數使用的方法。

  • Lead head guided label assigner

由於 lead head 比 auxiliary head 具有較強的學習力,因此 lead head 的預測結果與 ground truth 進行最佳化運算所得到 soft label 更能表達資料與 ground truth 間的分佈及相關性。

接著將該 soft label 作為 auxiliary head 和 lead head 的 target 進行訓練,讓較淺層的 auxiliary head 直接學習 lead head 已學到的資訊,而 lead head 則是更關注於未學到的 residual information。

  • Coarse-to-fine lead head guided label assigner

這部分同樣也是採用 lead head 的預測結果與 ground truth 進行最佳化運算所得到 soft label,差別在於會產生兩組不同的 soft label: coarse label、fine label,其中 fine label 與 lead head 的 soft label 相同、coarse label 用於 auxiliary head。

那為什麼要分為兩組 soft label 呢?

剛有提到 lead head 比 auxiliary head 具有較強的學習力,換句話說 auxiliary head 的學習效果較差,因此 auxiliary head 可能會遺失掉需要學習的資訊。

而 coarse label 解決上述問題的做法是藉由放寬 positive sample assignment 的限制,讓更多 grid 被視為 positive target。這段話的意思是指在 coarse label 中被視為 positive target 的 grid 範圍會比 fine label 來的廣。

此外,在物件偵測任務上會以優化 auxiliary head 的 recall 為主,至於 lead head 的輸出會從 auxiliary head 的高 recall 結果中篩選出高 precision 作為最終輸出。

然而作者發現到當 coarse label 的 additional weight 跟 fine label 相近時,可能會導致 fine label 產生不良的 Anchor prior。因此在 auxiliary head decoder 上加入限制,藉此限制 coarse positive grid 不會完美的擬合 soft label,這樣的操作能讓 fine label 與 coarse label 在學習的過程中動態調整,進而使得 fine label 的可優化上界都高於 coarse label。

Other tricks

在訓練過程中還有使用到以下三種 Bag-of-Freebies tricks

  • Batch normalization in conv-bn-activation topology

將 batch normalization layer 連接在 CNN layer 後,目的是為了在推理運算時,能夠將 batch normalization layer 的平均數與變異數整合至 CNN layer 的 bias 和 weight 中。

  • Implicit knowledge in YOLOR combined with convolution feature map in addition and multiplication manner

在推論階段上,先將 YOLOR 的 Implicit knowledge 壓縮為一個 vector,如此一來能以 addition 或 multiplication 的方式跟前、後一個 CNN layer 的 bias 和 weight 結合。

  • EMA model

EMA 為 Mean teachers are better role models 論文中使用到的技術,作者使用 EMA 模型作為最後的推理運算模型。

Mean teachers 是 Semi-Supervised Learning 的一種方法,其架構包含兩個相同結構的網路 teacher、student,teacher model 的參數是藉由 student model 的參數計算加權平均得到,而 student model 的參數則是透過 loss function gradient descent 更新。

Ablation study

Proposed compound scaling method

下圖為模型縮放後的比較結果,其中 compound model scaling 方法所使用的參數為放大 computational block depth 至 1.5 倍、放大 transition layer width至 1.25 倍。

與只縮放 width 的數據相比,新方法可提升 0.5 AP 且擁有較低的參數量、計算量;與只縮放 depth 的數據相比,新方法能提升 0.2 AP 且僅多出 2.9% 參數量、1.2% 計算量。

Proposed planned re-parameterized model

作者分別實驗 concatenation-based 及 residual-based 模型以驗證 planned re-parameterized 方法能夠有效地應用於各種架構的模型。

在 concatenation-based 模型的實驗中,使用 RepConv 來替代 3x3 卷積層,並針對不同位置來進行探討。如下圖 6,(a) 表示為三個 3x3 卷積層皆改為 RepConv、(b) 表示為上面兩個 3x3 卷積層改為 RepConv,以此類推。由下表 4 可看出使用 planned re-parameterized 方法對提升 AP 是有幫助的。

接著是在 residual-based 模型上的實驗,由於原始的 dark block 中的 3x3 卷積層並沒有符合作者設計策略,因此作者額外設計了 reversed dark block,結構如下圖 7。而 reversed dark block 和 CSPDarknet 具有相同數量的參數與操作,所以可以進行比較。由下表 5 結果中可知 planned re-parameterized 方法也適用於 residual-based 模型。

Proposed assistant loss for auxiliary head

將 label assignment 的三種策略:lead head 和 auxiliary head 各自獨立分配、Lead head guided label assigner、Coarse-to-fine lead head guided label assigner,與 baseline 進行比較。由下表 6 所示,所有的策略的 AP 皆高於 baseline,其中 Coarse-to-fine lead head guided label assigner 方法的結果是最佳的。

下圖 8 為對於 lead head 和 auxiliary head 使用不同方法的 objectness map,圖 (b)、(c) 為兩者各自獨立分配 soft label 的結果;而 (d)、(e) 為使用 Lead head guided 的結果,能讓 lead head 更關注於未學習到的 residual information。

進一步地分析 Coarse-to-fine lead head guided label assigner 中的 auxiliary head decoder 有無限制 upper bound 的情況,由下表可知在 decoder 上加入限制能得到更好的結果。

另外,還提出在 coarse-to-fine lead guided label assigner 方法中使用 partial auxiliary head 並與原本的進行比較。做法是將 partial auxiliary head 用於 E-ELAN 架構,在 merging cardinality 操作之前的 feature map 上進行連接。而這樣的連接操作可以使新的輸出 feature map 的權重不直接被 assistant loss 更新。下表 8 可知使用 partial auxiliary head 有更好的效果。

若我的文章對你有幫助的話,可以按下方的 "Give a tip" 按鈕給予我支持與鼓勵,謝謝 :)

--

--