天天看點

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

作者:極市平台

作者丨Rocky Ding

來源丨WeThinkIn

編輯丨極市平台

幹貨篇

----【目錄先行】----

  1. YOLO系列中Backbone結構的特點
  2. YOLOv1 Backbone解析
  3. YOLOv2 Backbone解析
  4. YOLOv3 Backbone解析
  5. YOLOv4 Backbone解析
  6. YOLOv5 Backbone解析
  7. YOLOx Backbone解析
  8. YOLOv6 Backbone解析
  9. YOLOv7 Backbone解析

【一】YOLO系列中Backbone結構的特點

YOLO系列中的Backbone結構主要作為網絡的一個核心特征提取器,随着時代的變遷不斷發展。某種程度上,YOLO系列的各個Backbone代表着當時的高價值模型與AI行業的發展記憶,計算機視覺江湖上,曾出現的那些“算法兵器”,它們确實來過。Backbone與輸入側一樣,是通用性非常強的一個部分,具備很強的向目标檢測其他模型,圖像分類,圖像分割,目标跟蹤等方向遷移應用的價值。從業務向,競賽向,研究向等角度觀察,Backbone結構也能在這些方面比較好的融入,從容。

【二】YOLOv1 Backbone解析

YOLOv1的Backbone有着樸素的邏輯,主要受啟發于GoogLeNet的結構。

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

YOLOv1整體結構

YOLOv1的backbone結構中使用了Leaky ReLu激活函數,但并沒有引入BN層。【Rocky的延伸思考】

  1. YOLOv1 Backbone邏輯在整個YOLO系列中已不具備競争力,但是可以作為業務向,競賽向的入場Baseline,快速搭建,快速試錯。

【三】YOLOv2 Backbone解析

YOLOv2的Backbone在YOLOv1的基礎上設計了Darknet-19網絡,并引入了BN層優化模型整體性能。

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

Darknet-19網絡結構

Darknet-19網絡包含19個卷積層和5個max pooling層,整體計算量比YOLOv1中采用的GooleNet更少,最後用average pooling層代替全連接配接層進行Inference。在YOLOv2的Backbone中加入BN層之後,使得mAP提升了2%,而BN層也成為了YOLO後續系列的标配。【Rocky的延伸思考】

  1. 業務向:YOLOv2 Backbone結構完全可以應用于業務baseline模型。

【四】YOLOv3 Backbone解析

YOLOv3的Backbone在YOLOv2的基礎上設計了Darknet-53結構。

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

YOLOv3将YOLOv2的Darknet-19加深了網絡層數,并引入了ResNet的殘差思想,也正是殘差思想讓YOLOv3将Backbone深度大幅擴充至Darknet-53。YOLOv3優化了下采樣方式(無池化層結構),采用卷積層來實作,而YOLOv2中采用池化層實作。【Rocky的延伸思考】

  1. YOLOv3的Backbone無論是在業務向,競賽向還是研究向,都可以作為入場Baseline。

【五】YOLOv4 Backbone解析

YOLOv4的Backbone在YOLOv3的基礎上,受CSPNet網絡結構啟發,将多個CSP子子產品進行組合設計成為CSPDarknet53,并且使用了Mish激活函數。

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

CSPDarknet53總共有72層卷積層,遵循YOLO系列一貫的風格,這些卷積層都是大小,步長為2的設定,能起到特征提取與逐漸下采樣的作用。CSP子子產品主要解決了由于梯度資訊重複導緻的計算量龐大的問題。CSP子產品不僅僅是一個子結構,更是一個處理思想,可以和ResNet、ResNext、DenseNet、EfficientNet等網絡結合使用。

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

DenseNet結構與CSP子產品結構

上圖左側是DenseNet的結構,它進行反向傳播時會有大量的重複計算,而右側的圖是CSP子產品結構,它将基礎層的特征圖分成兩部分,一部分直接與該階段的末尾concat相連,另一部分經過局部Dense子產品,進而既能保留Dense子產品的特征複用,又能截斷梯度流,避免大量的重複計算,同時可以保證準确率。總的來說,CSP子產品解決了三個方面的問題:

  1. 提升模型的學習能力,同時使模型輕量化。
  2. 降低計算瓶頸,提高硬體使用率。
  3. 降低模型的記憶體占用。

CSP子產品邏輯也可以遷移到其他Backbone網絡,例如優化ResNet以提升性能:

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

ResNet的CSP化

CSPNet論文位址:CSPNet[1]YOLOv4論文中通過消融實驗發現使用Mish激活函數會提升性能,于是在Backbone中将其使用。(注:除Backbone以外的網絡結構依舊使用LeakyReLU激活函數)

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

Mish激活函數消融實驗

Mish激活函數的示意圖如下,其有三個主要特征:

  1. 無上界有下界。Mish向上無邊界避免了由于封頂而導緻的梯度飽和,加快訓練過程。向下有邊界有助于實作強正則化效果。
  2. 非單調函數。允許其在負半軸有穩定的微小負值,進而使梯度流更穩定。與ReLU負半軸的硬零邊界相比,其梯度更平滑。
  3. 無窮連續性與光滑性。具有較好的泛化能力,提高訓練結果的品質。
Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

Mish激活函數

Mish激活函數的表達式:

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

Mish激活函數論文位址:Mish激活函數[2]【Rocky的延伸思考】

  1. 業務向:YOLOv4 Backbone中使用的CSP思想可以友善地與業務場景相結合。
  2. 競賽向:YOLOv4 Backbone中提到的CSP結構和Mish激活函數在競賽中是比較有效的Tricks。
  3. 研究向:YOLOv4 Backbone具備作為研究Baseline的價值。

【六】YOLOv5 Backbone解析

YOLOv5的Backbone同樣使用了YOLOv4中使用的CSP思想。

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

值得一提的是,YOLOv5最初版本中會存在Focus結構,在YOLOv5第六版開始後,就舍棄了這個結構改用,=6×6,stride=2的正常卷積,其産生的參數更少,效果更好。

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

Focus結構

【Rocky的延伸思考】

  1. YOLOv5 Backbone的易用性使得其不管在業務向,競賽向還是研究向都非常友好。

【七】YOLOx Backbone解析

YOLOx的Backbone沿用了YOLOv3的Backbone結構,故在此不在展開介紹。

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

【八】YOLOv6 Backbone解析

YOLOv6的Backbone側在YOLOv5的基礎上,設計了EfficientRep Backbone結構。

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

和YOLOv5的Backbone相比,YOLOv6的Backbone不但能夠高效利用硬體算力,而且還具有較強的表征能力。YOLOv6的Backbone中将普通卷積都替換成了RepConv結構。同時,在RepConv基礎上設計了RepBlock結構,其中RepBlock中的第一個RepConv會做channel次元的變換和對齊。另外,YOLOv6将SPPF優化設計為更加高效的SimSPPF,增加特征重用的效率。

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

SimSPPF結構

【Rocky的延伸思考】

  1. 業務向:YOLOv6 Backbone可以高效用于業務向的部署端。
  2. 競賽向:YOLOv6 Backbone可以用于競賽向的Baseline嘗試。
  3. 研究向:YOLOv6 Backbone可以用于研究向的消融實驗。

【九】YOLOv7 Backbone解析

YOLOv7的Backbone側在YOLOv5的基礎上,設計了E-ELAN和MPConv結構。

Backbone篇|「Make YOLO Great Again」YOLOv1-v7全系列大解析

E-ELAN結構已經在本系列的Neck篇中詳細介紹,本文就不再展開。MPConv結構由正常卷積與maxpool雙路徑組成,增加模型對特征的提取融合能力。不管是E-ELAN還是MPConv結構,都将特征重用邏輯演繹到了比較高的水準,讓人眼前一亮。

【Rocky的延伸思考】

  1. 業務向:YOLOv7 Backbone可以作為業務向的Baseline使用。
  2. 競賽向:YOLOv7 Backbone可以用于競賽向的入場Baseline。
  3. 研究向:YOLOv7 Backbone可以用于研究向的入場研究Baseline。

參考資料

[1] CSPNetA New Backbone that can Enhance Learning Capability of CNN: : https://arxiv.org/abs/1911.11929

[2] MishA Self Regularized Non-Monotonic Activation Function: : https://arxiv.org/abs/1908.0868

繼續閱讀