針對小目標的檢測有提升的文章。 未完待續~
Feature Pyramid Networks for Object Detection
FPN是一種多尺度的目標檢測算法。大多數目標檢測算法都是采用頂層特征來做預測的,但是我們知道:低層的特征語義信息較少,但是位置信息豐富;高層的特征語義信息豐富,位置信息粗略。雖然也有些多尺度特征融合的方法,但是一般采用融合后的特征做預測,但是FPN是在不同特征層獨立進行預測的。
4種利用特征的形式:
(a)圖像金字塔:將圖像做成不同的scale,不同scale的圖像生成對應的不同scale的特征。缺點在於時間成本高。有些算法會在測試時候采用圖像金字塔。
(b)像SPP net,Fast RCNN,Faster RCNN是采用這種方式,即僅采用網絡最后一層的特征。
(c)像SSD(Single Shot Detector)采用這種多尺度特征融合的方式,沒有上采樣過程,即從網絡不同層抽取不同尺度的特征做預測,這種方式不會增加額外的計算量。作者認為SSD算法中沒有用到足夠低層的特征(在SSD中,最低層的特征是VGG網絡的conv4_3),而在作者看來足夠低層的特征對於檢測小物體是很有幫助的。
==(d)==本文作者是采用這種方式,頂層特征通過上采樣和低層特征做融合,而且每層都是獨立預測的。
如圖一個帶有skip connection的網絡結構在預測的時候是在finest level(自頂向下的最后一層)進行的,簡單講就是經過多次上采樣並融合特征到最后一步,拿最后一步生成的特征做預測。
下面一個網絡結構和上面的類似,區別在於預測是在每一層中獨立進行的。
作者的主網絡采用ResNet。
算法結構分為三部分:
- 自底向上的線路
- 自頂向下的線路
- 橫向連接(lateral connection)
圖中放大的區域就是橫向連接,這里1*1的卷積核的主要作用是減少卷積核的個數,也就是減少了feature map的個數,並不改變feature map的尺寸大小。
自底向上:網絡的前向過程。在前向過程中,feature map的大小在經過某些層后會改變,而在經過其他一些層的時候不會改變,作者將不改變feature map大小的層歸為一個stage,因此每次抽取的特征都是每個stage的最后一個層輸出,這樣就能構成特征金字塔。
自頂向下:采用上采樣(upsampling)進行,而橫向連接則是將上采樣的結果和自底向上生成的相同大小的feature map進行融合(merge)。在融合之后還會再采用3*3的卷積核對每個融合結果進行卷積,目的是消除上采樣的混疊效應(aliasing effect)。並假設生成的feature map結果是P2,P3,P4,P5,和原來自底向上的卷積結果C2,C3,C4,C5一一對應。
作者一方面將FPN放在RPN網絡中用於生成proposal,原來的RPN網絡是以主網絡的某個卷積層輸出的feature map作為輸入,簡單講就是只用這一個尺度的feature map。但是現在要將FPN嵌在RPN網絡中,生成不同尺度特征並融合作為RPN網絡的輸入。在每一個scale層,都定義了不同大小的anchor,對於P2,P3,P4,P5,P6這些層,定義anchor的大小為322,642,1282,2562,512^2,另外每個scale層都有3個長寬對比度:1:2,1:1,2:1。所以整個特征金字塔有15種anchor。
正負樣本的界定和Faster RCNN差不多:如果某個anchor和一個給定的ground truth有最高的IOU或者和任意一個Ground truth的IOU都大於0.7,則是正樣本。如果一個anchor和任意一個ground truth的IOU都小於0.3,則為負樣本。
看看加入FPN的RPN網絡的有效性,如下表Table1。網絡這些結果都是基於ResNet-50。評價標准采用AR,AR表示Average Recall,AR右上角的100表示每張圖像有100個anchor,AR的右下角s,m,l表示COCO數據集中object的大小分別是小,中,大。feature列的大括號{}表示每層獨立預測。
- 從(a)(b)(c)的對比可以看出FRN的作用確實很明顯。另外(a)和(b)的對比可以看出高層特征並非比低一層的特征有效。
- (d)表示只有橫向連接,而沒有自頂向下的過程,也就是僅僅對自底向上(bottom-up)的每一層結果做一個11的橫向連接和33的卷積得到最終的結果,有點像Fig1的(b)。從feature列可以看出預測還是分層獨立的。作者推測(d)的結果並不好的原因在於在自底向上的不同層之間的semantic gaps比較大(只做橫向連接不好的原因)。
- (e)表示只有自頂向下的過程,但是沒有橫向連接,即向下過程沒有融合原來的特征。這樣效果也不好的原因在於目標的location特征在經過多次降采樣和上采樣過程后變得更加不准確。
- (f)采用finest level層做預測(參考Fig2的上面那個結構),即經過多次特征上采樣和融合到最后一步生成的特征用於預測,主要是證明金字塔分層獨立預測的表達能力。顯然finest level的效果不如FPN好,原因在於PRN網絡是一個窗口大小固定的滑動窗口檢測器,因此在金字塔的不同層滑動可以增加其對尺度變化的魯棒性。另外(f)有更多的anchor,說明增加anchor的數量並不能有效提高准確率。
另一方面將FPN用於Fast R-CNN的檢測部分。除了(a)以外,分類層和卷積層之前添加了2個1024維的全連接層。細節地方可以等代碼出來后再研究。
實驗結果如下表Table2,這里是測試Fast R-CNN的檢測效果,所以proposal是固定的(采用Table1(c)的做法)。與Table1的比較類似,
- (a)(b)(c)的對比證明在基於區域的目標卷積問題中,特征金字塔比單尺度特征更有效。
- (c)(f)的差距很小,作者認為原因是ROI pooling對於region的尺度並不敏感。因此並不能一概認為(f)這種特征融合的方式不好
博主個人認為要針對具體問題來看待,像上面在RPN網絡中,可能(f)這種方式不大好,但是在Fast RCNN中就沒那么明顯。
在這里插入圖片描述
同理,將FPN用於Faster RCNN的實驗結果如下表Table3。
Table4是和近幾年在COCO比賽上排名靠前的算法的對比。注意到算法在小物體檢測上的提升是比較明顯的。
另外作者強調這些實驗並沒有采用其他的提升方法(比如增加數據集,迭代回歸,hard negative mining),因此能達到這樣的結果實屬不易。
總結
作者提出的FPN(Feature Pyramid Network)算法同時利用低層特征高分辨率和高層特征的高語義信息,通過融合這些不同層的特征達到預測的效果。並且預測是在每個融合后的特征層上單獨進行的,這和常規的特征融合方式不同。
AugFPN: Improving Multi-scale Feature Learning for Object Detection
論文地址
顧名思義,AugFPN就是在經典FPN結構的基礎上做了改進。FPN網絡的最大貢獻就是把多尺度特征金字塔網絡引入到了Faster RCNN等檢測網絡中,從而有效的提升了網絡的檢測性能
Abstract
經典的FPN網絡通過利用多尺度特征學習大大提升了檢測網絡的檢測性能,然而這種設計本身背后就存在一些缺陷,使得多尺度的特征不能被網絡完全的利用起來。
本文通過提出一種新的特征金字塔網絡結構AugFPN,可以有效的克服這些缺陷。
AugFPN的創新之處在於三個組成成分,分別是:
- Consistent Supervision(一致性監督):縮小了特征融合前不同尺度特征之間的語義差距
- Residual Feature Augumentation (殘差特征增強):通過殘差特征增強提取比率不變的上下文信息,減少特征映射在最高金字塔層次的信息丟失
- Soft ROI Selection(軟RoI選擇):自適應地學習更好的RoI特征
至於這三個模塊是如何克服FPN的缺陷的,下文會有詳細的分析。最后就是使用了AugFPN,無論是在大的backbone,還是小的backbone,是one-stage檢測,還是two-stage檢測網絡上,都在coco數據集上取得了明顯的漲點。
FPN結構存在的缺陷
FPN從結構上可以划分為三個部分,即分別是:
- before feature fusion
- top- down feature fusion
- after feature fusion
FPN的三個缺陷也正好對應着這三個階段:
1. 特征混合之前
我們知道,FPN在特征混合之前,backbone的不同stage學習到的特征需要先經過11卷積進行一個降維,降到通道數相同才能進行特征相加。然而不同stage學習到的特征感受野是不一樣的,包含的語義信息也不同。把兩個語義信息差距較大的特征直接相加,勢必會減弱多尺度特征的表達能力
簡言之:特征求和前不同層次特征之間的語義差異
2. 自頂向下的特征融合
自頂向下的特征融合過程就是將頂層的高級特征和底層的低級特征相融合的過程,這樣雖然底層的特征得到了來自頂層的高級特征的加強,然而由於**頂層的特征經過11降維,勢必會造成信息損失**。
簡言之:金字塔頂層層次特征的信息丟失
3. 特征混合之后
我們知道,FPN中每個候選區域(ROI)的特征都是根據proposal的尺度來決定相應的特征圖從哪一層選擇,然而那些忽略的層也是包含着豐富信息的,它們對最終的分類和回歸結果也有着影響。直接忽略了其它層的特征勢必會影響到最終的檢測結果。
簡言之:RoIs的啟發式分配策略
AugFPN對應結構
針對FPN中存在的這三個缺陷,這篇論文依次提出三個結構用於解決這三個缺陷。
- Consistent Supervision
作者對混合之后的特征圖M2-M5做了一個監督。具體做法是,對RPN網絡得到的每一個候選區域都分別映射到M2~M5上得到相應的feature map,然后直接對這些feature map做分類和回歸,可以得到一個損失函數。將這一損失和網絡本身的損失做一個加權求和。由於在測試階段,這個分支是不參與計算的,所以Consistent Supervision對模型最終的參數和計算量沒有影響。 - Residual Feature Augmentation
由於FPN特征融合之前需要先進行1x1的特征降維,這會導致M5的信息損失。為了避免這種信息損失,作者提出了一種很巧妙的辦法。因為C5的信息是沒有損失的,如果能夠將C5的信息融合到M5上,就可以有效減少這種信息損失了。為此作者提出了ASF的結構,如Figure 3(a)所示。首先按照比例不變,對C5進行自適應池化操作,然后對每個尺度的特征圖進行1*1降維,然后對降維后的特征進行上采樣,對上采樣之后的特征按照學習到的權重進行相加,把相加完之后的特征稱之為M6,再將M6和M5進行相加作為最終的沒有損失的M5。
- Soft RoI Selection
FPN中ROI對應的特征是根據ROI的尺度選擇對應提取的層,一般小的ROI對應低級特征,大的ROI對應高級特征(我的理解,高級感受野更大,負責檢測大的目標)。然而事實上,這並不是一種最優的辦法。因為有時候兩個相同大小的ROI可能會被分到不同層的特征,即使某個ROI被分到了某一層,但其實其它層的特征也包含着描述這個ROI的信息。因此,論文提出了一種Soft RoI Selection的辦法。具體做法是,對於任意一個ROI,我們都會提出它在不同層的特征圖上所對應的特征,然后利用網絡本身學習權重參數,將這些不同層上的特征進行求和作為這個ROI最終的特征,這一結構和Residual Feature Augmentation中使用的自適應求和操作是一樣的。
總結
本文先分析了FPN的三點缺陷,然后針對這三點缺陷依次提出三種解決策略。
NAS-FPN: Learning Scalable Feature Pyramid Architecture for Object Detection
Summary
目前最先進的卷積結構用於目標檢測是手工設計的。
在這里,我們的目標是一個更好的學習可擴展特征金字塔結構,用於目標檢測。在一個覆蓋所有交叉尺度連接的可擴展搜索空間中,采用神經網絡結構搜索,發現了一種新的特征金字塔結構。架構名為NAS-FPN,由自頂向下和自下而上的連接組合而成,可以跨范圍地融合特性。
為了發現一個更好的FPN架構,作者充分利用了神經網絡搜索技術[Neural architecture search with rein- forcement learning.],使用強化學習訓練了一個控制器來在給定的搜索空間中選擇最好的模型結構。控制器使用在搜索空間內子模型的准確率來作為更新參數的反饋信號(reward signal)。因此,通過這樣的試錯,控制器會學到越來越好的結構,搜索空間在架構成功搜索的過程中起到了很重要的作用。對於FPN的可拓展性,在搜索的過程中,作者強制讓FPN重復N次然后concatenation到一起形成一個大的架構。
一句話解釋:FPN就是用來特征融合的層,之前都是手工設計,現在嘗試神經網絡搜索設計!其實就是優化FPN。
NAS-FPN使用強化學習的方式對FPN網絡自動搜索,在coco數據集上得到了最好的FPN結果。可以理解為連連看,然后連出一個最好的。如下圖:a圖為原始的FPN, 好看整齊。然后在一步一步搜索的reward下,結構組件變化。由b—>f變為最終的結果。雖然不好看。