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