本文來自公眾號”AI大道理“
在深度學習的很多工作中(例如目標檢測、圖像分割),融合不同尺度的特征是提高性能的一個重要手段。
低層特征分辨率更高,包含更多位置、細節信息,但是由於經過的卷積更少,其語義性更低,噪聲更多。
高層特征具有更強的語義信息,但是分辨率很低,對細節的感知能力較差。
如何將兩者高效融合,取其長處,棄之糟泊,是改善分割模型的關鍵。
傳統方法,通過對圖像進行降采樣處理,提取每層圖像的特征,然后在每層預測。
圖像金字塔來構建不同尺度的特征金字塔,這樣會帶來極大的計算量。
使用圖像金字塔構建特征金字塔,特征是根據每個不同大小比例的圖像獨立計算的,每計算一次特征都需要resize一下圖片大小,耗時,速度很慢。
優點:
-
對每一種尺度的圖像進行特征提取,能夠產生多尺度的特征表示,並且所有等級的特征圖都具有較強的語義信息,甚至包括一些高分辨率的特征圖。
缺點:
-
推理時間大幅度增加;
-
由於內存占用巨大,用圖像金字塔的形式訓練一個端到端的深度神經網絡變得不可行;
-
如果只在測試階段使用圖像金字塔,那么會造成一個問題:由於訓練時,網絡只是針對於某一個特點的分辨率進行訓練,推理時運用圖像金字塔,可能會在訓練與推理時產生“矛盾”。
利用單個高層特征圖進行預測。
該金字塔網絡是一個高深的卷積神經網絡,對不同尺寸的圖片進行垂直目標檢測,同時搞定多種尺寸的目標難度較大。
借助卷積網絡,通過單特征圖進行預測。
例如Faster R-CNN中的RPN層就是利用單個高層特征圖進行物體的分類和bounding box的回歸。
重用由卷積計算的金字塔特征層次來進行目標位置預測,但底層feature map特征表達能力不足。
通過不同尺度的特征圖進行分別預測,更好的處理目標的多尺度問題。
比如SSD one-stage目標檢測模型就是再次利用不同層多尺度的特征圖。
但是SSD並沒有解決以下問題:
低層特征圖語義信息不夠和低層特征圖的分辨率也不高。
底層大scale的feature map語義信息少,雖然框出了小物體,但小物體容易被錯分。
卷積神經網絡由淺到深,語義信息越來越豐富,但特征圖越來越小,分辨率越來越低,解決方案是接將淺層和高層的特征圖連接起來,將淺層的信息傳遞到深層,以解決深層特征圖容易忽略小目標的問題。
為了解決以上三種結構的不足之處,提出了FPN,即使每一層不同尺度的特征圖都具有較強的語義信息。
這種網絡結構,能夠在增加較少計算量的前提下融合低分辨率語義信息較強的特征圖和高分辨率語義信息較弱但空間信息豐富的特征圖。
FPN的獨特之處在於,它是在以特征金字塔為基礎結構上,對每一層級的特征圖分別進行預測。
FPN將深層信息上采樣,與淺層信息逐元素地相加,從而構建了尺寸不同的特征金字塔結構,性能優越,現已成為目標檢測算法的一個標准組件。
自頂向下的過程通過上采樣(up-sampling)的方式將頂層的小特征圖。
放大到上一個stage的特征圖一樣的大小。
上采樣的方法是最近鄰插值法:
使用最近鄰值插值法,可以在上采樣的過程中最大程度地保留特征圖的語義信息(有利於分類),從而與bottom-up 過程中相應的具有豐富的空間信息(高分辨率,有利於定位)的特征圖進行融合,從而得到既有良好的空間信息又有較強烈的語義信息的特征圖。
1)Bottom-Up Pathway
原生態的金字塔,所有的 ConvNet 都具備的特征,不需要多講,這里作者選擇的是每個Stage 的最后一層作為特征層,這里的 Stage 是指尺寸發生變化的情況。
2)Top-Down Pathway
對應特征圖的上采樣,思路是通過上采樣提取更 Strong 的語義信息,同時上采樣帶來的是某些信息的丟失。
3)Lateral Connection
側向連接是將原始的特征信息整合到右側上采樣特征層,原始特征代表了准確的 Location 信息。
通過 Top-Down(更強的語義信息) 和 側向連接(准確的Loc)的結合,兼顧底層特征和抽象語義,連接方式可以這樣描述:
Top-Down 通過2倍的上采樣連接,側向連接通過 1x1 的卷積進行連接,通過 Add 操作進行 Merge。
在特征利用部分,yolo3提取多特征層進行目標檢測,一共提取三個特征層,三個特征層位於主干部分darknet53的不同位置,分別位於中間層,中下層,底層,三個特征層的shape分別為(52,52,256)、(26,26,512)、(13,13,1024)。
三個特征層進行5次卷積處理,處理完后一部分用於輸出該特征層對應的預測結果,一部分用於進行反卷積UmSampling2d后與其它特征層進行結合。
輸出層的shape分別為(13,13,75),(26,26,75),(52,52,75),最后一個維度為75是因為該圖是基於voc數據集的,它的類為20種,yolo3只有針對每一個特征層存在3個先驗框,所以最后維度為3x25。
如果使用的是coco訓練集,類則為80種,最后的維度應該為255 = 3x85,三個特征層的shape為(13,13,255),(26,26,255),(52,52,255)。
特征金字塔是對用卷積神經網絡進行目標檢測方法的一種改進,通過提取多尺度的特征信息進行融合,進而提高目標檢測的精度,特別是在小物體檢測上的精度。
FPN是ResNet或DenseNet等通用特征提取網絡的附加組件,可以和經典網絡組合提升原網絡效果。
——————
淺談則止,細致入微AI大道理
掃描下方“AI大道理”,選擇“關注”公眾號
—————————————————————
—————————————————————