一張圖梳理YOLOv4論文


AlexeyAB大神繼承了YOLOv3, 在其基礎上進行持續開發,將其命名為YOLOv4。並且得到YOLOv3作者Joseph Redmon的承認,下面是Darknet原作者的在readme中更新的聲明。

Darknet原作者pjreddie在readme中承認了YOLOv4

來看看YOLOv4和一些SOTA模型的對比,YOLOv4要比YOLOv3提高了近10個點。

FPS vs AP

1. 思維導圖

YOLOv4總體上可以划分為兩部分,一部分是講Bag of freebies和Bag of Specials; 另外一部分講的是YOLOv4的創新點。

YOLOv4的思維導圖

Bag of freebies和Bag of specials涉及到的大部分trick在GiantPandaCV公眾號歷史文章中都有介紹,所以不一一列舉,主要講一下YOLOv4的創新點。

2. 創新點

  1. Mosaic數據增強方法

鑲嵌數據增強方法

這個方法在解析U版YOLOv3的時候就講過了,將4張不同的圖片鑲嵌到一張圖中,其優點是:

  • 混合四張具有不同語義信息的圖片,可以讓檢測器檢測超出常規語境的目標,增強模型的魯棒性。
  • 由於BN是從四張圖片計算得到的,所以可以減少對大的mini-batch的依賴。

評價:這個方法在U版YOLOv3中很早就出現了,在自己數據集上也用過,但是感覺效果並不是很穩定。筆者數據集只有一個類,所以可能不需要這種特殊的數據增強方法,歡迎各位讀者通過自己的實驗來驗證這個數據增強方法的有效性。

  1. Self-Adversarial Training

自對抗訓練也是一種新的數據增強方法,可以一定程度上抵抗對抗攻擊。其包括兩個階段,每個階段進行一次前向傳播和一次反向傳播。

  • 第一階段,CNN通過反向傳播改變圖片信息,而不是改變網絡權值。通過這種方式,CNN可以進行對抗性攻擊,改變原始圖像,造成圖像上沒有目標的假象。
  • 第二階段,對修改后的圖像進行正常的目標檢測。

評價:筆者對對抗領域不是很熟悉,不是很理解這個部分。感覺這個部分講解不是很詳細,只是給出整個過程和描述,不是很能理解。

  1. CmBN

BN、CBN、CmBN示意圖

上圖表達的是三種不同的BN方式,理解的時候應該從左往右看,BN是對當前mini-batch進行歸一化。CBN是對當前以及當前往前數3個mini-batch的結果進行歸一化。而本文提出的CmBN則是僅僅在這個Batch中進行累積。

評價:在消融實驗中,CmBN要比BN高出不到一個百分點。感覺影響不是很大。

  1. modified SAM

modified SAM

SAM實際上是之前解讀的<CV中的Attention機制>系列中的CBAM, CBAM含有空間注意力機制和通道注意力機制, SAM就是其中的空間注意力機制.

CBAM中的SAM

本文將Spatial-wise Attention變為Point-wise Attention, modified SAM中沒有使用pooling, 而是直接用一個卷積得到的特征圖直接使用Sigmoid進行激活, 然后對應點相乘, 所以說改進后的模型是Point-wise Attention.

評價: 作者並沒有給出改進后的SAMSAM的實驗對比,所以並不清楚這個模塊的性能到底怎樣. 並且在yolov4.cfg中沒有發現使用SAM的痕跡, 這非常奇怪..不知道作者將SAM用到了模型的哪個部分.

  1. modified PANet

Modified PANet

PANet融合的時候使用的方法是Addition, 詳解見:CVPR 2018 PANet

這里YOLOv4將融合的方法由加法改為乘法,也沒有解釋詳細原因,但是yolov4.cfg中用的是route來鏈接兩部分特征。

3. 結構

YOLOv4的模型結構筆者讀了一下yolov4.cfg文件,然后根據結構畫出了大體結構。

YOLOv4簡化結構圖

其中沒有詳細展開backbone部分,其實backbone之前在解讀CSPNet的時候就講過了,YOLOv4使用的是CSPDarknet53作為Backbone。

4. 總結

讀了這篇文章以后,給人留下深刻印象的不是創新點,而是Bag of freebies和Bag of specials。所以有人多人都說YOLOv4是拼湊trick得到的。YOLOv4中Bag of freebies和Bag of Specials兩部分總結的確實不錯,對研究目標檢測有很大的參考價值,涵蓋的trick非常廣泛。但是感覺AB大神並沒有將注意力花在創新點上,沒有花更多篇幅講解這創新性,這有些可惜。(ASFF中就比較有側重,先提出一個由多個Trick組成的baseline,然后在此基礎上提出ASFF結構等創新性試驗,安排比較合理)

此外,筆者梳理了yolov4.cfg並沒有發現在論文中提到的創新點比如modified SAM, 並且通過筆者整理的YOLOv4結構可以看出,整體架構方面,可以與yolov3-spp進行對比,有幾個不同點:

  • 換上了更好的backbone: CSDarknet53
  • 將原來的FPN換成了PANet中的FPN

結構方面就這些不同,不過訓練過程確實引入了很多特性比如:

  • Weighted Residual Connections(論文中沒有詳細講)
  • CmBN
  • Self-adversarial-training
  • Mosaic data augmentation
  • DropBlock
  • CIOU loss

總體來講,這篇文章工作量還是非常足的,涉及到非常非常多的trick, 最終的結果也很不錯,要比YOLOv3高10個百分點。文章提到的Bag of freebies和Bag of specials需要好好整理,系統學習一下。

但是缺點也很明顯,創新之處描述的不夠,沒能有力地證明這些創新點的有效性。此外,yolov4.cfg可能並沒有用到以上提到的創新點,比如SAM。

一家之言,歡迎大佬在文末留言討論。

5. 參考

https://arxiv.org/pdf/2004.10934.pdf

https://github.com/AlexeyAB/darknet


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM