深度學習之 FPN (Feature Pyramid Networks)

  • 論文題目:Feature Pyramid Networks for Object Detection
  • 論文鏈接:https://arxiv.org/abs/1612.03144
  • 論文代碼:Caffe版本 https://github.com/unsky/FPN

《Feature Pyramid Networks for Object Detection》這篇論文主要解決的問題是目標檢測在處理多尺度變化問題時的不足,現在的很多網絡都使用了利用單個高層特征(比如說Faster R-CNN利用下采樣四倍的卷積層——Conv4,進行后續的物體的分類和bounding box的回歸),但是這樣做有一個明顯的缺陷,即小物體本身具有的像素信息較少,在下采樣的過程中極易被丟失,為了處理這種物體大小差異十分明顯的檢測問題,經典的方法是利用圖像金字塔的方式進行多尺度變化增強,但這樣會帶來極大的計算量。所以這篇論文提出了特征金字塔的網絡結構,能在增加極小的計算量的情況下,處理好物體檢測中的多尺度變化問題。

一、FPN初探

1. 圖像金字塔

在這里插入圖片描述

圖1 圖像金字塔

在這里插入圖片描述

圖2 高斯金字塔效果

如上圖所示,這是一個圖像金字塔,在很多的經典算法里面都有它的身影,比如SIFT、HOG等算法。我們常用的是高斯金字塔,所謂的高斯金字塔是通過高斯平滑和亞采樣獲得一些下采樣圖像,也就是說第K層高斯金字塔通過平滑、亞采樣操作就可以獲得K+1層高斯圖像,高斯金字塔包含了一系列低通濾波器,其截止頻率從上一層到下一層是以因子2逐漸增加,所以高斯金字塔可以跨越很大的頻率范圍。總之,我們輸入一張圖片,我們可以獲得多張不同尺度的圖像,我們將這些不同尺度的圖像的4個頂點連接起來,就可以構造出一個類似真實金字塔的一個圖像金字塔。通過這個操作,我們可以為2維圖像增加一個尺度維度(或者說是深度),這樣我們可以從中獲得更多的有用信息。整個過程類似于人眼看一個目標由遠及近的過程(近大遠小原理)。如圖2所示,我們可以看到一個圖像金字塔,中間是原始圖像,最上邊是下采樣后的圖像,最下邊是上采樣后的圖像。你可以將其對應到圖1中的不同層中。

2. 為什么需要構造特征金字塔?

在這里插入圖片描述

圖3 特征金字塔

前面已經提到了高斯金字塔,由于它可以在一定程度上面提高算法的性能,因此很多經典的算法中都包含它。但是這些都是在傳統的算法中使用,當然也可以將這種方法直應用在深度神經網絡上面,但是由于它需要大量的運算和大量的內存。但是我們的特征金字塔可以在速度和準確率之間進行權衡,可以通過它獲得更加魯棒的語義信息,這是其中的一個原因。

如上圖所示,我們可以看到我們的**圖像中存在不同尺寸的目標,而不同的目標具有不同的特征,利用淺層的特征就可以將簡單的目標的區分開來;利用深層的特征可以將復雜的目標區分開來;**這樣我們就需要這樣的一個特征金字塔來完成這件事。圖中我們在第1層(請看綠色標注)輸出較大目標的實例分割結果,在第2層輸出次大目標的實例檢測結果,在第3層輸出較小目標的實例分割結果。檢測也是一樣,我們會在第1層輸出簡單的目標,第2層輸出較復雜的目標,第3層輸出復雜的目標。

3. 為什么要提出FPN算法?

在這里插入圖片描述

圖4 不同方案的金字塔

識別不同大小的物體是計算機視覺中的一個基本挑戰,我們常用的解決方案是構造多尺度金字塔。

圖a:Feature pyramids built upon image pyramids ( featurized image pyramid)

如上圖a所示,這是一個特征圖像金字塔,整個過程是先對原始圖像構造圖像金字塔,然后在圖像金字塔的每一層提出不同的特征,然后進行相應的預測(BB的位置)。

它通常會成為整個算法的性能瓶頸,由于這些原因,當前很少使用這種算法。

優點:

  1. 對每一種尺度的圖像進行特征提取,能夠產生多尺度的特征表示,并且所有等級的特征圖都具有較強的語義信息,甚至包括一些高分辨率的特征圖。

缺點:

  1. 推理時間大幅度增加
  2. 由于內存占用巨大,用圖像金字塔的形式訓練一個端到端的深度神經網絡變得不可行
  3. 如果只在測試階段使用圖像金字塔,那么會造成一個問題:由于訓練時,網絡只是針對于某一個特點的分辨率進行訓練,推理時運用圖像金字塔,可能會在訓練與推理時產生“矛盾”。

圖b:常見的目標檢測網絡

如上圖b所示,這是一種改進的思路,學者們發現我們可以利用卷積網絡本身的特性,即對原始圖像進行卷積和池化操作,通過這種操作我們可以獲得不同尺寸的feature map,這樣其實就類似于在圖像的特征空間中構造金字塔。

實驗表明,淺層的網絡更關注于細節信息,高層的網絡更關注于語義信息,而高層的語義信息能夠幫助我們準確的檢測出目標,因此我們可以利用最后一個卷積層上的feature map來進行預測。

這種方法存在于大多數深度網絡中,比如VGG、ResNet、Inception,它們都是利用深度網絡的最后一層特征來進行分類。以及 Faster R-CNN中的RPN層就是利用單個高層特征圖進行物體的分類和bounding box的回歸

優點是速度快、需要內存少。

缺點是我們僅僅關注深層網絡中最后一層的特征,卻忽略了其它層的特征,而且檢測小物體的性能急劇下降,但是細節信息可以在一定程度上提升檢測的精度。

圖c:金字塔型特征層級 ConvNet’s pyramidal feature hierarchy

因此有了圖c所示的架構,它的設計思想就是同時利用低層特征和高層特征,分別在不同的層同時進行預測,這是因為我的一幅圖像中可能具有多個不同大小的目標,區分不同的目標可能需要不同的特征,對于簡單的目標我們僅僅需要淺層的特征就可以檢測到它,對于復雜的目標我們就需要利用復雜的特征來檢測它。

整個過程就是首先在原始圖像上面進行深度卷積,然后分別在不同的特征層上面進行預測。

它的優點是在不同的層上面輸出對應的目標,不需要經過所有的層才輸出對應的目標(即對于有些目標來說,不需要進行多余的前向操作),這樣可以在一定程度上對網絡進行加速操作,同時可以提高算法的檢測性能。

它的缺點是獲得的特征不魯棒,都是一些弱特征(因為很多的特征都是從較淺的層獲得的)。

比如SSD one-stage目標檢測模型就是再次利用不同層多尺度的特征圖。但是SSD并沒有解決以下問題:

低層特征圖語義信息不夠和低層特征圖的分辨率也不高。

SSD論文中指出,SSD為了避免使用低層特征圖,放棄了重用已經計算的層,而是從網絡的高層開始構建金字塔(例如,VGG網絡的Conv4之后,再添加幾個新的卷積層),因此,SSD錯過了重用低層高分辨的特征圖,即沒有充分利用到低層特征圖中的空間信息(這些信息對小物體的檢測十分重要)。

圖d:特征金字塔 Feature Pyramid Networks

它的架構如圖d所示,整個過程如下所示,首先我們在輸入的圖像上進行深度卷積,然后對Layer2上面的特征進行降維操作(即添加一層1x1的卷積層),對Layer4上面的特征就行上采樣操作,使得它們具有相應的尺寸,然后對處理后的Layer2和處理后的Layer4執行加法操作(對應元素相加),將獲得的結果輸入到Layer5中去。

其背后的思路是為了獲得一個強語義信息,這樣可以提高檢測性能。這次我們使用了更深的層來構造特征金字塔,這樣做是為了使用更加魯棒的信息;除此之外,我們將處理過的低層特征和處理過的高層特征進行累加,這樣做的目的是因為低層特征可以提供更加準確的位置信息,而多次的降采樣和上采樣操作使得深層網絡的定位信息存在誤差,因此我們將其結合其起來使用,就構建了一個更深的特征金字塔,融合了多層特征信息,并在不同的特征進行輸出。

二、FPN框架解析

FPN 層

Bottom-up pathway

前饋Backbone的一部分,每一級往上用step=2的降采樣。

輸出size相同的網絡部分叫一級(stage),選擇每一級的最后一層特征圖,作為Up-bottom pathway的對應相應層數,經過1 x 1卷積過后element add的參考。

例如,下圖是fasterRCNN的網絡結構,左列ResNet用每級最后一個Residual Block的輸出,記為{C1,C2,C3,C4,C5}。
在這里插入圖片描述

FPN用2~5級參與預測(因為第一級的語義還是太低了),{C2,C3,C4,C5}表示conv2,conv3,conv4和conv5的輸出層(最后一個殘差block層)作為FPN的特征,分別對應于輸入圖片的下采樣倍數為{4,8,16,32}。

Top-down pathway and lateral connections

自頂向下的過程通過上采樣(up-sampling)的方式將頂層的小特征圖。放大到上一個stage的特征圖一樣的大小。

上采樣的方法是最近鄰插值法:使用最近鄰值插值法,可以在上采樣的過程中最大程度地保留特征圖的語義信息(有利于分類),從而與 bottom-up 過程中相應的具有豐富的空間信息(高分辨率,有利于定位)的特征圖進行融合,從而得到既有良好的空間信息又有較強烈的語義信息的特征圖。
在這里插入圖片描述
具體過程為:C5層先經過1 x 1卷積,改變特征圖的通道數(文章中設置d=256,與Faster R-CNN中RPN層的維數相同便于分類與回歸)。M5通過上采樣,再加上(特征圖中每一個相同位置元素直接相加)C4經過1 x 1卷積后的特征圖,得到M4。這個過程再做兩次,分別得到M3,M2。M層特征圖再經過3 x 3卷積(減輕最近鄰近插值帶來的混疊影響,周圍的數都相同),得到最終的P2,P3,P4,P5層特征。

FPN應用于RPN層

Faster RCNN中的RPN是通過最后一層的特征來做的。最后一層的特征經過3x3卷積,得到256個channel的卷積層,再分別經過兩個1x1卷積得到類別得分和邊框回歸結果。這里將特征層之后的RPN子網絡稱之為網絡頭部(network head)。對于特征層上的每一個點,作者用anchor的方式預設了9個框。這些框本身包含不同的尺度和不同的長款比例。

FPN針對RPN的改進是將網絡頭部應用到每一個P層。由于每個P層相對于原始圖片具有不同的尺度信息,因此作者將原始RPN中的尺度信息分離,讓每個P層只處理單一的尺度信息。具體的,對{322、642、1282、2562、512^2}這五種尺度的anchor,分別對應到{P2、P3、P4、P5、P6}這五個特征層上。每個特征層都處理1:1、1:2、2:1三種長寬比例的候選框。P6是專門為了RPN網絡而設計的,用來處理512大小的候選框。它由P5經過下采樣得到。

RoI pooling與RCNN:原版的RoI pooling統一到同一個大小的feature map,但是這對FPN并不合適,因為FPN在RPN階段抽取的候選框本來就含有不同的尺度,作者的方法是將不同尺度的候選框map into到不同大小的特征圖,具體的公式這里就不貼了,可以參考論文;另外作者關于RoI pooling之后的網絡結構也有一定不同,作者添加了兩個1024的fc層在最終的分類與回歸層前,作者認為這更加輕便

另外,上述5個網絡頭部的參數是共享的。作者通過實驗發現,網絡頭部參數共享和不共享兩種設置得到的結果幾乎沒有差別。這說明不同層級之間的特征有相似的語義層次。這和特征金字塔網絡的原理一致。

1.利用FPN構建Faster R-CNN檢測器步驟

  • 首先,選擇一張需要處理的圖片,然后對該圖片進行預處理操作;
  • 然后,將處理過的圖片送入預訓練的特征網絡中(如ResNet等),即構建所謂的bottom-up網絡;
  • 接著,如圖5所示,構建對應的top-down網絡(即對層4進行上采樣操作,先用1x1的卷積對層2進行降維處理,然后將兩者相加(對應元素相加),最后進行3x3的卷積操作,最后);
  • 接著,在圖中的4、5、6層上面分別進行RPN操作,即一個3x3的卷積后面分兩路,分別連接一個1x1的卷積用來進行分類和回歸操作;
  • 接著,將上一步獲得的候選ROI分別輸入到4、5、6層上面分別進行ROI Pool操作(固定為7x7的特征);
  • 最后,在上一步的基礎上面連接兩個1024層的全連接網絡層,然后分兩個支路,連接對應的分類層和回歸層;

在這里插入圖片描述

圖5 FPN整體架構
  • 層1、2、3對應的支路就是bottom-up網絡,就是所謂的預訓練網絡,文中使用了ResNet網絡;由于整個流向是自底向上的,所以我們叫它bottom-up;
  • 層4、5、6對應的支路就是所謂的top-down網絡,是FPN的核心部分,名字的來由也很簡單。

2. 為什么FPN能夠很好的處理小目標?

在這里插入圖片描述

圖6 FPN處理小目標

如上圖所示,FPN能夠很好地處理小目標的主要原因是:

  • FPN可以利用經過top-down模型后的那些上下文信息(高層語義信息);
  • 對于小目標而言,FPN增加了特征映射的分辨率(即在更大的feature map上面進行操作,這樣可以獲得更多關于小目標的有用信息),如圖中所示;

三、 FPN性能評估

1. FPN效果定量評估

在這里插入圖片描述

表1 Faster R-CNN+FPN結果

如上表所示,我們可以看到當我們使用相同的預訓練網絡、相同的RPN網絡、Fast R-CNN使用不同的方法時,我們的特征層由原來的C4或者C5變化為現在的特征集合Pk,同時FPN方案使用了橫向連接(lateral)和top-down模型,算法的性能有了大幅度上升,與a相比提升了2.2個百分點,與b相比提升了4.0個百分點(AP@0.5);對于APs,提升了5.9個百分點;對于APm,提升了5.3個百分點。這也說明了FPN能夠提升小目標的檢測效果。

在這里插入圖片描述

表2 FPN高效訓練結果

觀察表2,我們可以看到使用FPN的Fast R-CNN+FPN和沒有使用FPN的Fast R-CNN方案之間的差別,首先我們的特征維度由1024減少到256維(這樣可以大大的減少一些運算量,包括前向和反向運算);我們利用2個MLP層取代了Conv5,作為我們的頭分類器;我們的訓練時間由原來的44.6小時減少到現在的10.6小時,速度大概提升了4倍;我們的推理時間由原來的0.32s減少到現在的0.15s;最后,我們的準確率提升了2.0個百分點。主要的原因是因為我們通過FPN獲得了更加魯邦的高層語義特征,它使得我們的學習過程更加高效。

在這里插入圖片描述

表3 COCO數據集結果展示

如上表所示,我們測試了FPN算法在COCO數據集上面的性能表現,使用了FPN的Faster R-CNN方法獲得了很多的最佳指標,尤其是在APs指標上面。總之,我們獲得了最好的單模型準確率。

在這里插入圖片描述

表4 使用了FPN的RPN效果

如上表所示,我們比較了比較了FPN+RPN和RPN這兩種方案,我們可以看到我們的性能有了大幅度的提升。

在這里插入圖片描述

表5 top-down和lateral的重要性

在表5中,我們驗證了top-down模型和Lateral連接的重要性,同時使用兩者的FPN方案取得了最好的結果。相對來講,Lateral連接起到了更好的效果。

在這里插入圖片描述

表7 FPN在實例分割上面的效果

由于FPN是一個特征金字塔,具有很好地泛華能力,可以利用到很多利用深度學習網絡的方法中去,包括目標檢測、實例分割等。如上表所示,使用了FPN的DeepMask方法可以不僅可以獲得性能的提升,同時可以獲得速度的提升。(不同的目標在不同的層上面生成對應的Mask)

2. FPN效果定性評估

在這里插入圖片描述

圖8 FPN實例分割結果

四、 FPN總結

  • FPN 構架了一個可以進行端到端訓練的特征金字塔;
  • 通過CNN網絡的層次結構高效的進行強特征計算;
  • 通過結合bottom-up與top-down方法獲得較強的語義特征,提高目標檢測和實例分割在多個數據集上面的性能表現;
  • FPN這種架構可以靈活地應用在不同地任務中去,包括目標檢測、實例分割等;

以下是FPN網絡的架構細節圖。

在這里插入圖片描述
在這里插入圖片描述

圖9 Faster R-CNN+FPN細節圖

參考文獻

  • FPN對應的poster,參考鏈接;
  • https://zhuanlan.zhihu.com/p/92005927
  • https://blog.csdn.net/baidu_30594023/article/details/82623623
  • https://www.pianshen.com/article/786269172/
  • https://blog.csdn.net/WZZ18191171661/article/details/79494534

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453738.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453738.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453738.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ISLR—第二章 Statistical Learning

Statistical Learning Y 和X的關系why estimate f 用來預測 預測的時候可以將f^當成一個black box來用,目的主要是預測對應x時候的y而不關系它們之間的關系。用來推斷 推斷的時候,f^不能是一個black box,因為我們想知道predictor和response之…

提高編程思想

虛函數和抽象函數有什么區別 虛函數是有代碼的并明確允許子類去覆蓋,但子類也可不覆蓋,就是說可以直接用,不用重寫 抽象函數是沒有代碼,子類繼承后一定要重寫 ****************************************************************** 在一…

python特效代碼_網頁愛心特效弱爆了,我讓你點擊網頁顯示所有python模塊!

點擊網頁特效上周寫了一篇文章快速搭建個人博客的教程文章:其中說到了一個點擊網頁出現愛心特效的插件 click_heart.js ,當然大家可能也見過其他博客上面,有點擊網頁出現類似 富強、民主、文明、和諧等等,關于代碼在這里不多贅述,…

Python 包管理之 poetry

poetry是一個Python虛擬環境和依賴管理的工具。poetry和pipenv類似,另外還提供了打包和發布的功能。 官方文檔:python-poetry.org/docs/ python項目部署:poetry管理本地環境,上線用docker poetry 安裝 poetry提供多種安裝方式&#xff0c…

Windows數據庫編程接口簡介

數據庫是計算機中一種專門管理數據資源的系統,目前幾乎所有軟件都需要與數據庫打交道(包括操作系統,比如Windows上的注冊表其實也是一種數據庫),有些軟件更是以數據庫為核心因此掌握數據庫系統的使用方法以及數據庫系統…

映客都是互刷禮物嗎_映客互刷禮物有什么用_映客守護有什么用

一起直播、互刷禮物、改ID發性感照,趙本山女375x332 - 122KB - PNG一起直播、互刷禮物、改ID發性感照,趙本山女600x893 - 247KB - JPEG一起直播、互刷禮物、改ID發性感照,趙本山女600x448 - 151KB - JPEG土豪互刷禮物嚇壞男主播 即興表演鐵頭功撞墻560x688 - 57KB - JPEG一起直…

Python 之打包工具 setup.py

1. 為什么需要對項目分發打包? 平常我們習慣了使用 pip 來安裝一些第三方模塊,這個安裝過程之所以簡單,是因為模塊開發者為我們默默地為我們做了所有繁雜的工作,而這個過程就是 打包。 打包,就是將你的源代碼進一步封…

周進度----06

周學習進度06 周學習進度06 第16周 所花時間: 60min60min100min100min100min100min90min60min60min 代碼量(行) 500-800 博客量(篇) 4 了解到的知識 css樣式表的一些知識 項目流程的初步了解 一周的學習心得…

八個實用的CMD命令及開始→運行→命令集錦

這篇文章是很久前收藏在自己筆記本內的,具體的來源地址不清楚,先謝一下原作者吧. 共享出來大家一起學習一下: 一,ping    它是用來檢查網絡是否通暢或者網絡連接速度的命令。作為一個生活在網絡上的管理員或者黑客來說,ping命令是第一個必須掌握的DO…

2019如何轉換2010_9102年,你還不知道PPT怎么轉換成視頻嗎?小心落伍了

你在刷抖音的時候有沒有刷過這類視頻:成為人生贏家必備的書單、5個讓你看透人性的電影、6個讓你升職加薪的APP...如果你細心觀察的話,會發現這類視頻的做法基本都是一個樣的,像在翻相冊一樣,一頁頁過去,所以它們也叫做…

深度學習之RetinaNet

總述 Focal loss主要是為了解決one-stage目標檢測中正負樣本比例嚴重失衡的問題。該損失函數降低了大量簡單負樣本在訓練中所占的權重,也可理解為一種困難樣本挖掘。 目標識別有兩大經典結構: 第一類是以Faster RCNN為代表的兩級識別方法,這種結構的第…

js生成圖片

var image new Image(); var c document.getElementById("myCanvas"); var ctx c.getContext("2d"); var img document.getElementById("scream"); ctx.font "10px Arial";function createImg(name, zuowei, color) {// 姓名ctx…

淺談如何學習linux

一.為什么要學linux? 當然最重要是愛好和興趣!如果你這種必要學,或者根本不喜歡,請不要浪費時間,你學也學不好! 二.起步 你應該為自己創造一個學習linux的環境--在電腦上裝一個linux或unix 問題1:版本…

python的datetime函數_Python連載8-datetime包函數介紹

一、datetime包(上接連載7內容)1.函數:datetime(1)用法:輸入一個日期,來返回一個datetime類?(2)格式:datetime.datetime(年,月,日,hour,minute,second)其中hour,minute,…

深度學習之 soft-NMS

論文:《Improving Object DetectionWith One Line of Code》soft-NMS 英文論文鏈接:https://arxiv.org/pdf/1704.04503.pdfsoft-NMS github 鏈接:https://github.com/bharatsingh430/soft-nms 絕大部分目標檢測方法,最后都要用到…

項目微管理 - 總結也是新的開始

時間都去哪了?聽著這首耳熟能詳的旋律,感嘆著飛速流逝的年華,我漸漸的陷入到沉思之中。時間過的真的很快,從一名程序員到接手一個一線項目團隊一晃已經2年多了。在這段時間里,我接觸了各種各樣的人,處理了各…

一維二維_Excel二維數據轉一維,2種方法輕松搞定

今天是2020年1月1日,祝各位小伙伴們新年快樂,開心每一天~如下所示,左邊是二維交叉數據表,我們希望快速轉換成右邊的一維數據表如果復制粘貼,效率太低了,今天分享兩種方法,實現快速轉換1、powerq…

數百種 Windows 軟件的免費替代品列表

程序所執行任務的描述WindowsLinux1) 網絡連接網頁瀏覽器微軟 IE,網景 Netscape / Mozilla, Opera [私有],Firebird,……1) Netscape/Mozilla 2) Galeon. 3) Konqueror. 4) Opera.[私有] 5) Firebird. 6) Nautilus 7) Epiphany 8)…

深度學習之 Cascade R-CNN

Zhaowei Cai, Nuno Vasconcelos. 《Cascade R-CNN: Delving into High Quality Object Detection》. CVPR 2018.論文鏈接:https://arxiv.org/abs/1712.00726代碼鏈接:https://github.com/zhaoweicai/cascade-rcnn 前言 IOU閾值被用來定義正負例&#x…

轉換文檔參數_明明2秒可以搞定Word、Excel相互轉換,你卻用了半小時!真虧了...

我們在用office三件套工作的時候,經常都需要對文件的格式進行轉換,像是Word文檔和Excel表格的轉換,很多小伙伴都要花上半個小時甚至以上的時間才能搞定,效率實在不行。別擔心,今天小編將分享能快速完成Word、Excel轉換…