Parallel Feature Pyramid Network for Object Detection
ECCV2018
總結:
文章借鑒了SPP的思想並通過MSCA(multi-scale context aggregation)模塊進行特征融合從而提出PFPNet(Parallel Feature Pyramid Network)算法來提升目標檢測的效果。
1.使用spp模塊通過擴大網絡寬度而不是增加深度來生成金字塔形特征圖
2.提出msca模塊,有效地結合了大不相同規模的上下文信息
3.效果好:82.3% (Pascal VOC 2007), 80.3% (PASCAL VOC 2012), 35.2% (MS-COCO),
4.速度快:a single Titan X:24fps(512*512),33fps(320*320),
特征金字塔回顧:
作者先回顧了之前的特征融合網絡。(a)上方是常見的cnn網絡,下面的結構則引入了特征金字塔,基於多個特征層進行預測,類似於SSD。(b)上方是近幾年流行的U-net(也稱為漏斗型網絡),下方的結構融合不同層的特征進行預測,就是17年提出的FPN結構圖。(c)是原始的空間金字塔結構,簡單講就是卷積后的特征圖經過不同size的池化操作得到不同尺度的特征圖,將不同尺度的特征圖做融合后進行預測。(d)是文章提出的網絡結構
網絡結構:
Figure3是PFPNet的整體結構圖。首先對於一張輸入圖像,先通過一個基礎網絡(VGG16全連接換卷積)提取特征,假設提取到的特征通道數是D,基於提取到的特征通過SPP網絡得到不同尺度的特征圖(記為高維特征b),用N表示尺度數量(圖中N=3),得到的特征圖通道數用CH表示,CH等於D;然后通過一個通道縮減操作bottleneck將(b)中的特征圖的通道縮減得到低維特征(對應c),縮減后的通道數用CL表示,公式是CL=D/(N-1),(Figure3中(c)的輸出特征通道數應該是2,而不是圖中顯示的1);然后通過MSCA操作得到融合后的特征圖d,得到的特征通道數是Cp;最后基於融合后的多個特征圖進行預測(每個特征圖經過簡單的預測網絡(3*3conv)回歸預測,非極大抑制得到最終結果)。
Figure4是MSCA模塊的結構示意圖。MSCA主要是基於特征通道的concat操作,但是輸入特征有些不同。比如Figure4在得到P1這個融合特征時,是用fH(1)、下采樣(雙線性差值)后的fL(0)、上采樣(非重疊平均池化)后的fL(2)進行concat后得到的。為什么不是用fL(1)而是用fH(1),因為在作者看來相同尺度的特征信息要足夠多,而FH部分得到的特征是未經過通道縮減的,因此在得到某一個尺度的預測層特征時,被融合的對應尺度特征都是采用FH部分的輸出特征,而不是FL部分的輸出特征。相比之下,不同尺度的待融合特征采用FL部分的輸出特征,相當於補充信息。因此concat后的特征通道數中有(N-1)*(D/(N-1))=D個是FL的輸出,有D(等於CH)個是FH的輸出,相當於各占一半,這也是前面介紹的為什么FL的輸出特征通道數用D/(N-1)這個公式的原因。作者嘗試過將CL=2D/N,全由FL進行concat操作得到融合特征,但是參數量增多且性能下降,這部分的實驗結果沒有展示出來,所以對於用fH的特征做融合對效果提升有多大就不得而知了。模塊中的Convs也是一個瓶頸結構(bottleneck)。總的來說MSCA模塊就是一個特征融合模塊,作者期望通過concat操作最大程度地保存提取到的特征信息。
損失函數:
文章有兩個不同的anchor確定方式,由此有兩種對應的損失函數
一種是用SSD的anchor,此時loss記為PFPNet-S:;第二種使用ARM(anchor refinement module)模塊的anchor,此時loss記為PFPNet-R:
超參數的選取:
文中有兩個值需要人為設置,一個是金字塔的層數N,另一個是低維特征通道數CL。(其實這里有個問題,CL=D/N這不是確定的嗎?為什么還可以調整?)作者根據取值不同做了實驗。訓練集為VOC07+VOC12的訓練集,測試集為VOC07的測試集,取IOU為0.5,訓練110K代,初始學習率10-3,在80K和100K衰減10倍。可以看到最優取值N=4,CL=256。
實驗結果:
Table2為不同模塊對模型的影響,說明了模塊的有效性。
其中,PFPNet-S512說明anchor用SSD的方式,圖片大小512*512;-R說明anchor使用用ARM模塊。
另外:文中有個總結說得特別好,那就是對於目標檢測任務而言,真正有用的特征一定具備這3個特點:1、特征要包含目標的細節信息。2、特征要通過足夠深的網絡提取得到。3、特征要包含目標的語義信息。