谷歌最新目標檢測器EfficientDet

2021-10-04 22:30:41 字數 3592 閱讀 6213

**efficientdet:scalable and efficient object detection

民間實現**:

谷歌大腦 mingxing tan、ruoming pang 和 quoc v. le 提出新架構 efficientdet,結合 efficientnet(同樣來自該團隊)和新提出的 bifpn,實現新的 sota 結果(同時滿足高精度和高效率)。

在計算機視覺領域,模型效率的重要性越來越高。近日,谷歌大腦團隊 quoc v. le 等人系統研究了多種目標檢測神經網路架構設計,提出了能夠提公升模型效率的幾項關鍵優化。首先,他們提出加權雙向特徵金字塔網路(weighted bi-directional feature pyramid network,bifpn),從而輕鬆、快速地實現多尺度特徵融合;其次,他們提出一種復合縮放(compound scaling)方法,同時對所有主幹網路、特徵網路和邊界框/類別**網路的解析度、深度和寬度執行統一縮放。

基於這些優化,研究者開發了新型目標檢測器 efficientdet。在廣泛的資源限制下,這類模型的效率仍比之前最優模型高出乙個數量級。具體來看,結構簡潔只使用了 52m 引數、326b flops 的 efficientdet-d7 在 coco 資料集上實現了當前最優的 51.0 map,準確率超越之前最優檢測器(+0.3% map),其規模僅為之前最優檢測器的 1/4,而後者的 flops 更是 efficientdet-d7 的 9.3 倍。

下圖展示了多個模型在 coco 資料集上的效能對比情況。在類似的準確率限制下,efficientdet 的 flops 僅為 yolov3 的 1/28、retinanet 的 1/30、nasfpn 的 1/19。

近來研究高效目標檢測演算法主要有one-stage、anchor-free、model compress等,這些方法提高了效率但同時也降低了精度。我們常常有乙個概念,ssd 等單階段目標檢測器很快,但準確性比不上 mask r-cnn 等兩階段目標檢測器,儘管兩階段目標檢測推斷速度要慢許多。那麼有沒有一種兼顧兩者的目標檢測器?設計這樣的檢測器又會出現什麼挑戰?這就是該**作者所關心的。

近年來,在實現更準確的目標檢測方面出現了大量進展,然而當前最優目標檢測器的成本也越來越高昂。例如,近期提出的基於 amoebanet 的 nasfpn 檢測器需要 167m 引數和 3045b flops(是 retinanet 的 30 倍)才能獲得當前最優準確率。大模型規模和昂貴的計算成本阻礙了它們在一些現實世界應用中的部署,例如模型規模和延遲高度受限的機械人、自動駕駛汽車等應用。由於這些現實世界的資源限制,模型效率對於目標檢測的重要性越來越高。

這篇**系統性地研究了多種檢測器架構設計,試**決該問題。基於單階段檢測器正規化,研究者檢視了主幹網路、特徵融合和邊界框/類別**網路的設計選擇,發現了兩大主要挑戰:

挑戰 1:高效的多尺度特徵融合。儘管大部分之前工作融合了不同的輸入特徵,但它們僅僅是不加區分地將其彙總起來。而由於這些輸入特徵的解析度不盡相同,它們對輸出特徵的貢獻也不相等。

應對方法:研究者提出一種簡單高效的加權雙向特徵金字塔網路(bifpn),該模型引入了可學習的權重來學習不同輸入特徵的重要性,同時重複應用自上而下和自下而上的多尺度特徵融合。

挑戰 2:模型縮放。儘管之前研究主要依賴大型主幹網路或者較大的輸入影象規模,但研究者發現,在同時考慮準確率和效率的情況下,擴大特徵網路和邊界框/類別**網路非常關鍵。

應對方法:結合谷歌大腦之前的文章efficientnet,本文在此基礎上提出目標檢測模型複雜度聯合縮放方法,統一擴大backbone、fpn、邊界框/類別**網路的depth、width、resolution。

傳統的top-down fpn只有自頂向下單向資訊流,panet增加了自底向上的資訊流,nas-fpn通過大量計算和搜尋有更複雜的資訊流。本文對不同fpn實驗發現,panet的效果最佳,但引數量計算量也較大(見後文ablation實驗)。本文在panet的基礎上提出三步優化[2]:

1)去掉沒有進行融合的單一特徵圖引數學習(其背後的想法很簡單:如果乙個節點只有乙個輸入邊沒有特徵融合,則它對特徵網路的貢獻較小;

2)同一層中增加從原始節點到輸出節點的邊,從而在不增加大量成本的情況下融合更多特徵;

3)與只有一條自上而下和自下而上路徑的 panet 不同,研究者將每個雙向路徑(自上而下和自下而上)作為乙個特徵網路層,並多次重複同乙個層,以實現更高階的特徵融合。

在融合不同解析度的輸入特徵時,常見的方法是先將其解析度調整至一致再相加。金字塔注意力網路(pyramid attention network)引入了全域性自注意力上取樣來恢復畫素定位,這在 [5] 中有進一步研究。

之前的特徵融合方法對所有輸入特徵一視同仁,不加區分同等看待。但是,研究者觀察到,由於不同輸入特徵的解析度不同,它們對輸出特徵的貢獻也不相等。為解決該問題,研究者提出在特徵融合過程中為每乙個輸入新增額外的權重,再讓網路學習每個輸入特徵的重要性。

整體框架設計沿用retinanet,backbone採用efficientnet,fpn替換成堆疊的bifpn,並使用共享的邊界框/類別**網路,框架如圖:

結合efficientnet中提出的聯合調整策略,本文提出目標檢測框架的聯合調整策略,用復合係數φ統一調整目標檢測的backbone、bifpn層數、prediction網路以及解析度。和efficientnet不同,由於引數多採用網格搜尋計算量大,本文採用啟發式的調整策略。

研究者在 coco 2017 檢測資料集上對 efficientdet 進行評估。efficientdet 模型是使用批大小 128 在 32 塊 tpuv3 晶元上訓練而成的。

小網路efficientdet-d0和yolov3差不多精度,計算量少28倍;efficientdet-d1和retinanet、maskrcnn差不多精度,參數量少8倍,計算量少25倍。總的來說,efficientdet精度速度雙豐收,最高精度達到51.0 map,登頂coco檢測榜單。

表1 efficientdet 在 coco 資料集上的效能

表2 第一行是標準的 retinanet (resnet50+fpn),研究者首先將其主幹網路替換為 efficientnet-b3(第二行),然後將基線 fpn 替換成 bifpn(第三行)。

將各種fpn堆疊5層,對比看出設計的bifpn和panet效果相當,使用更少的參數量和計算量,使用學習的加權和會有一點提公升。

表 3  不同跨尺度連線時模型的準確率和複雜度。

研究者使用復合縮放方法,統一擴大主幹網路、bifpn 和邊界框/類別**網路的所有維度——深度/寬度/解析度。下圖對比了該復合縮放方法和其他僅擴大其中乙個維度的方法。

CVPR2017 最新目標檢測相關

1 speed accuracy trade offs for modern convolutional object detectors 其主要考慮三種檢測器 faster rcnn,r fcn,ssd 作為元結構,三種cnn網路 vgg,inception,resnet 作為特徵提取器,變化其他...

值得跟進的最新目標檢測演算法

我根據最近的coco上的成績,列了乙個 如下 排名方法 box ap github 1cascade mask r cnn 53.3 cbnet cbnet 2efficientdet d7 51.0 efficientdet pytorch版 tf版3 atss 50.7 atss atss 4e...

新目標,啟程了

小弟因為興趣,選擇了開始學習機器視覺和qt程式設計。最近有乙個專案,需要編寫乙個基於qt的帶有3d動畫顯示的水下機械人上位機,多方了解後了解在qt中開發3d動畫可以採用opengl開發,但是網上關於qt編寫opengl的程式的學習資料不多。所以小弟決定從opengl的原始學習資料開始學習,然後逐漸將...