M2Det论文解读和开源代码
轉(zhuǎn)自:https://www.jianshu.com/p/d8f2130b9d1b
前言
? ? 純屬個人學(xué)習,不做商用,如有侵權(quán)請聯(lián)系作者。此外也并非完全翻譯,那沒有意義,同時也摻雜了挺多個人的理解,不到位的可以互相交流。
? ? 這是開源不久的單階段目標檢測器,主要工作在于特征金字塔方面,北大和達摩的作品,AAAI2019收錄,論文地址:https://arxiv.org/abs/1811.04533,Github地址:https://github.com/qijiezhao/M2Det。
摘要
? ? 為了解決物體的多尺度問題,單階段和雙階段的檢測器均采用了特征金字塔結(jié)構(gòu)。盡管結(jié)果感人,但仍存在一定的限制,因為它們均只是簡單地使用了backbone生成的天然的多尺度特征金字塔,這些backbone是為分類任務(wù)設(shè)計的(意思是適用于分類的不一定很好的適用于檢測)。本文中,為了構(gòu)造更加有利于檢測多尺度物體的特征金字塔架構(gòu),作者提出了多層級的FPN(MLFPN),分三步:
1. 融合backbone提取的多層特征圖作為basic feature。
2. 利用TUM和FVM的模塊交替生成一系列的特征金字塔。
3.利用SFAM模塊將第2步生成的金字塔中的尺度相同的特征層concat起來。
將該結(jié)構(gòu)稱之為M2Det并集成進SSD結(jié)構(gòu)。COCO數(shù)據(jù)集上,測試時單尺度下,M2Det 取得了41,0的mAP,11.8幀,多尺度下取得了 44.2的mAP,達到了SOTA的結(jié)果。
介紹
????解決尺度不變性有兩個方法,第一個是傳統(tǒng)的圖像金字塔,毫無疑問費時費力,要用的話也只是在測試的時候,多尺度的測試其實也就是利用了圖像金字塔。第二個就是現(xiàn)在流行的特征金字塔啦,圖一中說明了幾種風格的特征金字塔,簡單說就是SSD獨立地利用了最后兩層地特征,并額外的構(gòu)造了四個金字塔層級,FPN加入了橫向和自頂向下地連接,STDN只是利用了最后一個block的特征。
作者diss圖1中a,b,c三種方法的缺陷是:
1. backbone是為分類而設(shè)計的網(wǎng)絡(luò),提取的特征不一定適合于檢測。
2. single-level information,個人理解的意思是金字塔的每一層的feature map幾乎均是來自于同一層,信息單一(但是FPN也有頂層的啊,作者也沒說明,不過大致應(yīng)該是這個意思)
圖1 特征金字塔結(jié)構(gòu)比
通常意義上認為深層的特征有助于分類而淺層任務(wù)有助于回歸,而且,淺層特征適合于表征外觀簡單的物體,而深層特征適合于表征外觀復(fù)雜的物體。實際中,相同大小的物體的外觀復(fù)雜度可能完全不同,比如近處的紅綠燈相比于遠處的人體,在現(xiàn)有的結(jié)構(gòu)中這兩者應(yīng)該是在同一層級被檢測到,但是這兩者需要的特征語義深度是不一樣的,人體需要更深的語義而紅綠燈則只需要淺層的語義特征,所以有損現(xiàn)有的檢測器的性能。
? ? 因此本文旨在提出一個更加有效的適合于檢測的特征金字塔結(jié)構(gòu)。
Method
? ? 相關(guān)工作就不說了,畢竟論文也需要湊字數(shù)。下面的才是本文的工作,也是重點。圖2是整體架構(gòu)圖,其中FFM1,TUM,FFMv2以及SFAM均是該文提出的,以下分別介紹:
?
圖2 M2Det架構(gòu) 尺度表示特征圖的分辨率,層級可以理解為語義層級,即每個尺度的金字塔均由來自于8個不同語義深度的特征組成(shallow-->medium-->deep)
1. FFMv1
見圖3(a),有兩個輸入,來自于圖2的最后兩個stage的卷積層(SSD結(jié)構(gòu)),1024*20*20輸出512*20*20上采樣得到512*40*40與256*40*40concat得到768*40*40。
2. TUM
見圖3(c),U型decoder結(jié)構(gòu),輸出6個尺度的特征圖。有8個層級,表示有8個TUM結(jié)構(gòu),一個TUM表示一個層級。仔細一看應(yīng)該是類似于FPN的那個top-down和橫向連接的方式
3. FFMv2
兩個輸入,一個是FFMv1的輸出,另一個是上一個TUM的尺度最大的輸出(128,40,40),cancat一波得到256*40*40,構(gòu)成當前層級的TUM的輸入。
圖3 (a)FFMv1 (b)FFMv2 (c)TUM
除了第一個TUM的輸入是直接來自于FFMv1的輸出,剩下的TUM均是來自于FFMv2的輸出。而FFMv2又是來自于FFMv1和上一個TUM的輸出,加入FFMv1應(yīng)該是類似于殘差的想法。
4. SFAM結(jié)構(gòu)
由圖2可知有了8個層級的TUM的輸出,每個TUM均會輸出6個尺度(圖3c),SFAM就負責這些不同層級不同尺度的融合:對每一個尺度而言,從8個層級抽取該尺度的特征圖concat到一起(128*8=1024),語義也就實現(xiàn)了從淺到深,再利用SE block對channel做了一個Attention。之后就得到了6個尺度的特征金字塔,金字塔的每一層均是來自于8個從淺到深的語義層級,也就是所謂的Multi-level。這就是不同于現(xiàn)有的金字塔的結(jié)構(gòu)的地方。
圖4 SFAM結(jié)構(gòu)
最后再利用了兩個卷積層進行分類和回歸就能得到最后的結(jié)果。很明顯,個人感覺8個TUM應(yīng)該會引入較大的參數(shù)量,但是從結(jié)果來看卻又還行,參數(shù)比retinanet要少,精度也更高。
?
圖5 結(jié)果圖對比
Discussion
? ? 作者指出,最后結(jié)果的提升在于引入了本文提出的MLFPN,支撐點有兩:
1. 得到了多尺度多層級的特征金字塔
2. 金字塔每一層有不同語義層級的特征。
說實話這不就是同一個理由嘛,就是好就好在用了多尺度多層級的特征金字塔結(jié)構(gòu)。可視化激活圖如下:
?
圖6 可視化激活圖
這張圖挺有意思的,說明一下,原圖中有一大一小兩人和兩車以及一個紅綠燈,小車小人以及紅綠燈尺度相差不大,從圖中可以看出來:
 1. 對比與小車和小人,大車和大人在小尺度的特征圖上激活值更大(原論文筆誤)
2. 小人、小車和紅綠燈在同一尺度上被激活(可以很直觀的理解,因為尺度一致)
3. 紅綠燈、小車以及小人在由淺到深的特征圖上被激活(這就印證了作者的假設(shè),由于其復(fù)雜性,相同尺度的物體需要的語義信息不一定相同)
后話
????該文章還是很細致的,易懂。感覺能把FPN和本文的工作細致的區(qū)分開就更好了,FPN也是利用了多層的語義信息,但是融合卻沒有本文這么復(fù)雜,說明了在構(gòu)造特征金字塔上仔細的研究也能取得不錯的成果。
 作者:Zliang_hhh
 鏈接:https://www.jianshu.com/p/d8f2130b9d1b
 來源:簡書
 簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。
總結(jié)
以上是生活随笔為你收集整理的M2Det论文解读和开源代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: my eclipse2014破解步骤(转
- 下一篇: M2Det论文笔记
