M2Det论文笔记
論文:M2Det: A Single-Shot Object Detector?Based on Multi-Level Feature Pyramid Network?.?Qijie Zhao, Tao Sheng, Yongtao Wang,Zhi Tang,Ying Chen,Ling Cai,Haibin Ling
摘要
特征金字塔被最先進的單階段目標檢測器(例如DSSD, RetinaNet, RefineDet)和兩階段目標檢測器(例如Mask RCNN, DetNet)廣泛利用,以緩解由于,目標實例的尺度變化而產生的問題。雖然這些具有特征金字塔的目標檢測器取得了令人鼓舞的結果,但由于它們只是簡單地按照最初為目標分類任務而設計的骨干網絡固有的多尺度金字塔結構來構造特征金字塔,因而存在一定的局限性。在這項工作中,我們提出了多層次特征金字塔網絡(Multi-Level Feature Pyramid Network,MLFPN)來構建更有效的特征金字塔,以檢測不同尺度的目標。
首先,融合backbone提取的多層次特征(即多個層)作為基礎特征。
其次,我們將基礎特征輸入到交替連接的?Thinned U-shape Modules 和特征融合模塊中,并利用每個U形模塊的解碼器層作為目標檢測的特征。
最后將具有相同尺度的解碼器層集合起來,構建一個用于目標檢測的特征金字塔,其中每個特征圖由來自多個層次的層(特征)組成。
為了評估所提出的MLFPN的有效性,我們設計并訓練了一個強大的端到端one-stage目標檢測器,稱之為M2Det,將其集成到SSD的架構中,并實現了比最先進的one-stage檢測器更好的檢測性能。具體來說,在MSCOCO基準上,M2Det在單尺度推理策略下以11.8 FPS的速度實現了41.0的AP,在多尺度推理策略下實現了44.2的AP,這是one-stage檢測器的SOTA成果。代碼開源:https://github.com/qijiezhao/M2Det.?
引言
目標實例間的尺度變化是目標檢測任務的主要挑戰之一,通常有兩種策略來解決這一挑戰帶來的問題。第一種方法是在圖像金字塔(一系列resized的圖片)中檢測目標,它只能在測試時被利用。顯然,這種解決方案將大大增加內存和計算復雜度,從而大大降低這類目標檢測器的效率。第二種方法是從輸入圖像中提取的特征金字塔中檢測目標,該方法可用于訓練和測試階段與第一個使用圖像金字塔的解決方案相比,它具有更少的內存和計算成本。此外,特征金字塔構造模塊可以很容易地集成到最先進的基于深度神經網絡的檢測器,得到端到端解決方案。
盡管具有特征金字塔的物體探測器取得了令人鼓舞的結果,但它們仍然有一些局限性,由于它們只是簡單地根據骨干網絡固有的多尺度金字塔結構來構造特征金字塔,而這些骨干網絡實際上是為物體分類任務而設計的。
例如,如圖1所示,SSD直接獨立使用骨干網絡(即VGG16)的兩層和步長為2的卷積得到的額外四層來構造特征金字塔;STDN僅利用DenseNet的最后一個密集塊,通過池化和scale-transfer操作構建特征金字塔;FPN通過自頂向下的方式將深層和淺層融合來構造特征金字塔。一般來說,上述方法有以下兩個局限性。
首先,金字塔中的特征圖對于目標檢測任務來說不夠有表示性(representative),因為它們只是由為目標分類任務設計的骨干層(特征)構造而來。
其次,金字塔中的每個特征圖(用于檢測特定大小范圍內的目標)主要或僅僅是由骨干網絡的單層構造而成,即主要或僅包含單層信息。
一般來說,較深層的高級特征對分類任務更具判別性,較淺層的低級特征對目標位置回歸任務更有幫助。此外,低級特征更適合于描述具有簡單外觀的目標,而高級特征則適合于描述具有復雜外觀的目標。在實踐中,大小相似的目標實例的外觀可能非常不同。例如,一個紅綠燈和一個遠方的人有相當的大小,而人的外觀要復雜得多。因此,金字塔中的每個特征圖(用于檢測特定大小范圍內的物體)主要或僅由單一層級的特征組成,都會導致檢測性能欠佳。
本文的目標是構建一種更高效的特征金字塔來檢測不同尺度的目標,同時避免了上述方法的局限性。如圖2所示,為了達到這一目的,我們首先融合骨干網絡提取的多層次(即多層)特征作為基特征,然后將其輸入交替連接的Thinned U-shape Modules(TUM)和特征融合模塊(FFM)中,提取出更有代表性的、多級多尺度特征。值得注意的是,每個U形模塊的解碼器層共享相似的深度。最后,我們收集同等尺度的特征圖,構建最終的特征金字塔用于目標檢測。顯然,形成最終特征金字塔的解碼器層要比骨干網絡深得多,更具有表示性。此外,最終特征金字塔中的每個特征圖都由來自多個層級的解碼器層組成。因此,我們稱特征金字塔塊為多層次特征金字塔網絡(Multi-Level Feature Pyramid Network,MLFPN)。
為了評估所提出的MLFPN的有效性,我們通過將MLFPN集成到SSD的架構中,設計并訓練了一個強大的端到端單階段目標檢測器,稱之為M2Det(因為它是建立在 multi-level和 multi-scale特征上的)。
相關工作
無論是單階段檢測器還是兩階段檢測器,為了提高不同尺度目標的檢測精度,研究人員已經付出了大量的努力。據我們所知,主要有兩種策略來解決這個尺度變化問題。
第一種方法是對圖像金字塔(即一系列調整大小的輸入圖像副本)進行特征化(featurizing image pyramids),以產生語義上具有表示性的多尺度特征。來自不同尺度圖像的特征分別產生預測,這些預測結合在一起得到最終的預測。在識別精度和定位精度方面,來自圖像金字塔的特征確實超過了僅基于單尺度圖像的特征。盡管性能有所提高,但這種策略在時間和內存方面的成本都很高,這就限制了它在實時任務中應用。考慮到這個主要缺點,SNIP等方法可以選擇在測試階段只使用特征圖像金字塔作為后備方案,而其他方法包括Fast R-CNN和Faster R-CNN默認情況下選擇不使用這個策略。
第二種方法是從網絡內部固有層中提取的特征金字塔中檢測目標,僅采用單尺度圖像。與第一種策略相比,這種策略需要的額外內存和計算成本顯著減少,可以在實時網絡的訓練和測試階段部署。此外,特征金字塔構造模塊很容易地修改和適配最先進的基于深度神經網絡的檢測器。
MS-CNN 提出了兩個子網絡( sub-networks),并首先將多尺度特征合并到深度卷積神經網絡中用于目標檢測。提出的子網絡利用多種分辨率的特征圖來檢測圖像中的多尺度目標。
SSD 利用了VGG16骨干網絡后層的特征圖和額外的特征層,在多個尺度上進行預測。
FPN利用橫向連接和自上而下的通路產生特征金字塔,實現了更強大的表示。
DSSD 實現了反卷積層,用于聚合context并增強淺層特征的高級語義。
RefineDet采用了兩步級聯回歸,在保持SSD效率的同時,在精度上取得了顯著的進步。
方法
M2Det的整體架構為:
M2Det使用骨干網絡和MLFPN從輸入圖像中提取特征,然后像SSD一樣,根據學習到的特征預測密集邊界框和類別分數,然后執行NMS得到最終結果。
MLFPN由三個模塊組成:特征融合模塊(FFM)、Thinned U-shape Module(TUM)和Scale-wise Feature Aggregation Module(SFAM)。
FFMv1通過融合骨干網絡的特征圖,將語義信息集成到基礎特征(Base feature)中。每個TUM生成一組多尺度特征,然后TUMs和ffmv2交替結合提取多層次多尺度( multi-level multi-scale)特征。SFAM通過特征尺度級聯(scale-wise feature concatenation)操作和自適應注意力(adaptive attention)機制將特征聚合成多層次的特征金字塔。關于M2Det中的三個核心模塊和網絡配置的更多細節將在下面介紹。
MLFPN
如圖2所示,MLFPN由三部分組成。
首先,FFMv1融合淺層特征和深層特征(如VGG的conv4_3和conv5_3)生成基礎特征,為MLFPN提供多層次的語義信息。
其次,多個TUMs和FFMv2交替堆疊。每個TUM生成多個不同尺度的特征圖。FFMv2融合基礎特征和上一個TUM的最大的輸出特征圖。融合后的特征圖會被輸入到下一個TUM。注意,第一個TUM沒有任何其他TUM的先驗知識,只從基礎特征中學習。輸出的多層次多尺度特征計算如下:
Xbase表示基礎特征,xil表示第l個TUM中的第i個尺度的特征圖。L表示TUM的數量,Tl表示第l個TUM網絡,F表示FFMv2網絡。
第三,SFAM通過尺度特征級聯操作(scale-wise feature concatenation operation)和通道注意機制來聚合多層次多尺度特征。
FFMs
FFMs融合了M2Det中不同層次的特征,這對構建最終的多層次特征金字塔至關重要。使用1x1卷積層來壓縮輸入特征的通道,并使用concatenation操作來聚合這些特征圖。
FFMv1以骨干網絡中兩個不同尺度的特征圖作為輸入,在進行concatenation操作之前,采用上采樣操作將深度特征縮放到相同尺度。
FFMv2將基礎特征和前一個TUM的最大輸出特征圖作為輸入,這兩個尺度相同,并生成融合后的特征用于下一個TUM。
FFMv1和FFMv2的結構細節分別如圖4 (a)和(b)所示。
TUMs
與FPN和RetinaNet不同,TUM采用了thinner u型結構,如圖4 (c)所示。編碼器是一系列的步長為2的3x3卷積層,逐漸將輸入特征圖的分辨率降低。解碼器將這些層的輸出作為其特征圖的參考集(?reference set),而原始FPN選擇ResNet骨干中每個階段最后一層的輸出。
解碼器分支經過上采樣和逐元素相加運算后進行1x1卷積,以增強學習能力,并保持特征的平滑性。
每個TUM的解碼器的所有輸出都形成當前層級的多尺度特征。總的來說,堆疊后的TUM輸出形成多層次的多尺度特征,前面的TUM主要提供淺層特征,中間的TUM提供中層特征,后面TUM提供深層特征。
SFAM
SFAM的目標是將TUMs生成的多層次多尺度特征聚合成多層次特征金字塔,如圖3所示。
SFAM的第一階段是沿通道維度將等尺度的特征串接在一起。聚合的特征金字塔可以表示為X=[X1,X2,...,Xi],其中Xi=Concat(xi1,xi2,...,xiL)∈RWixHixC表示第i個尺度的特征,L是TUM的數量。聚合金字塔的每個尺度都包含多層次的特征。然而,簡單的串接操作并不具有足夠的適應性。
在第二階段,使用通道注意力模塊,使特征關注最重要的特征通道。與SENet一樣,使用全局平均池化在squeeze步驟處生成通道統計量z∈RC。為了充分捕獲通道依賴,excitation步驟通過兩個全連接的層學習注意力機制:
S=Fex(z,W)=σ(W2δ(W1z))
σ為ReLU函數,δ為sigmoid函數,W1∈R?C/r×C, W2∈RC×C/r, r為reduction ratio(實驗中r = 16)。最終輸出是通過激活s對輸入X進行加權得到的:
其中每個特征通過縮放操作得到增強或削弱。
網絡配置
我們用兩種骨干網絡來組裝M2Det,在訓練整個網絡之前,需要在ImageNet 2012數據集上對骨干網絡進行預訓練。MLFPN的所有默認配置都包含8個TUMs,每個TUM有5個striding-Convs和5個Upsample操作,因此它將輸出6個scale的特性。為了減少參數的數量,我們只對每個規模的TUM特征分配256個通道,這樣網絡可以很容易地在gpu上訓練。至于輸入大小,我們遵循原始SSD、RefineDet和RetinaNet,即320、512和800。
在檢測階段,我們對6個金字塔形特征分別添加兩個卷積層,分別實現位置回歸和分類。6個特征圖的默認邊界框的檢測尺度范圍遵循原始SSD的設置。當輸入尺寸為800×800時,除了保持最大feature map的最小尺寸外,縮放范圍按比例增加。在金字塔特征的每個像素設置了6個完全具有3個寬高比的Anchor。然后,我們使用概率分數0.05作為閾值,過濾出分數較低的Anchor。然后使用帶有線性內核的soft-NMS 進行后處理,留下更精確的邊界框。將閾值降低到0.01可以得到更好的檢測結果,但會大大降低推理時間,我們并不認為這是為了追求更好的實用價值。
實驗
略
總結
- 上一篇: M2Det论文解读和开源代码
- 下一篇: 循迹小车三个感应c语言程序,循迹小车的C