論文:《EfficientDet: Scalable and Efficient Object Detection》
論文地址:https://arxiv.org/pdf/1911.09070.pdf
開源項目:https://github.com/xuannianz/EfficientDet
原文參考:https://www.cnblogs.com/mlj318/p/11996609.html
https://blog.csdn.net/ComeTender/article/details/103296778
1、基本概述
該篇論文是2019 剛掛在arXiv上的論文,作者來自於谷歌。因爲是one-stage算法,mAP達到了51,在朋友圈都刷屏了。其實該論文在學術上並沒有提出特別顛覆的想法,無論是特徵融合BiFPN,還是結合width、depth和resolution設計模型,都是其他論文提過的思想。但是該論文將以往的trick融合改進,優化了參數,做出了非常高的結果。
2、論文貢獻
- 提出了一個加權的雙向特徵金字塔結構BiFPN ,用於快速的特徵融合工作;
- 提出了一個新的聯合縮放方法,將backbone,feature network,head,image resolution進行了統一處理;
- 以EfficientNet作爲backbone,結合上述兩點,生成了高效快速,適用於不同計算條件的檢測網絡。
3、模塊解析
3.1、BiFPN
主要有亮點:高效的雙向不同尺度的特徵融合,帶權重的特徵融合。
首先是各種FPN結構的演進和比較,(a)普通的FPN只有自頂向下的連接 (b)PANet還加了自底向上的連接,(c)NAS-FPN通過搜索找到一種不規則的連接結構.(d-f)是本文探討的結構,(d)所有的尺度使用最全的連接,計算也最複雜,(e)PANet簡化,去除只有一個輸入的結點,(f)本文最終的BiFPN結構
- PANet效果好於FPN和NAS-FPN,計算代價也更高
- 如果一個結點本身沒有融合的特徵,那麼對以特徵融合爲目標的結構貢獻就不大(why?).所以(e)中移除了P3,P7的中間結點
- 同一尺度的輸入和輸出又加了一個連接,因爲計算量不大.得到(f)
- (f)中虛線框內作爲一層,會重複多次,以得到high-level feature fusion.
3.2、加權融合
在之前的類金字塔模塊中,對於不同尺度的特徵融合,往往採用的是雙線性插值採樣。作者認爲,對於不同的尺寸特徵直接相加是不公平的,考慮它們最終的貢獻應該不同。因此,一個常規的想法是加入權重參數w來自動學習重要性。
基於這一分析,作者提出了三種加權的融合方式:
1、無邊界限制:,w即爲學習的對象。這裏對應的輸入可以是不同的級別,比如特徵級別,通道級別或是像素級別。不同的輸入級別將使得權重w的表徵形式不同,分別可能是標量、向量或矩陣形式。作者通過實驗發現,標量形式在不明顯損失精度的情況下能夠取得最小的計算成本,因此將選用標量形式;但應當注意,此時各個w之間沒有約束限制,容易導致訓練的不穩定。
2、Softmax融合: 如果對不同的w進行約束限制,最常用的想法是使用softmax函數,這樣做能夠較好地比較不同輸入的重要性,但在實驗中發現指數運算會耗費較高的計算成本。
3、快速正則化融合: 作者利用一個簡單的公式來替換softmax操作,即:
3.3、新的聯合放縮方法
在構建整體的檢測網絡框架時,backbone模塊選擇了EfficientNet系列,並在該基礎上進行了聯合的放縮。
在backbone部分的放縮因數coefficients與EfficientNet保持一致。
在BiFPN部分,針對channel採用了指數增長,對於深度採用了線性增長,具體的公式爲:
在head模塊,保持channel width與BiFPN傳遞過來的一致,約束head的深度,具體的公式爲:
由於輸入圖片在BiFPN處需要分爲5個level,所以圖片的分辨率需要被128整除(最大的stride爲128),所以在分辨率上使用了線性增長公式:
由此得到一系列模型及其配置如下所示:
4、論文結果
- D0與YOLOv3同樣精度下,FLOPs少28x
- D1與RetinaNet , Mask-RCNN比較,參數少8x,FLOP少25x,精度類似.
- D7達到51mAP,同時更快參數更少.