計算機視覺FPN: 特徵金字塔網絡


向AI轉型的程序員都關注了這個號👇👇👇html

機器學習AI算法工程   公衆號:datayxpython


FPN:feature pyramid networks for object detection

對用卷積神經網絡進行目標檢測方法的一種改進,經過提取多尺度的特徵信息進行融合,進而提升目標檢測的精度,特別是在小物體檢測上的精度。FPN是ResNet或DenseNet等通用特徵提取網絡的附加組件,能夠和經典網絡組合提高原網絡效果。程序員


1、問題背景

網絡的深度(對應到感覺野)與總stride一般是一對矛盾的東西,經常使用的網絡結構對應的總stride通常會比較大(如32),而圖像中的小物體甚至會小於stride的大小,形成的結果就是小物體的檢測性能急劇降低。web

傳統解決這個問題的思路包括:面試

(1)多尺度訓練和測試,又稱圖像金字塔,以下圖(a)所示。目前幾乎全部在ImageNet和COCO檢測任務上取得好成績的方法都使用了圖像金字塔方法。然而這樣的方法因爲很高的時間及計算量消耗,難以在實際中應用。算法

(2)特徵分層,即每層分別預測對應的scale分辨率的檢測結果。以下圖(c)所示。SSD檢測框架採用了相似的思想。這樣的方法問題在於直接強行讓不一樣層學習一樣的語義信息。而對於卷積神經網絡而言,不一樣深度對應着不一樣層次的語義特徵,淺層網絡分辨率高,學的更可能是細節特徵,深層網絡分辨率低,學的更可能是語義特徵。flask



於是,目前多尺度的物體檢測主要面臨的挑戰爲:微信

1. 如何學習具備強語義信息的多尺度特徵表示?網絡

2. 如何設計通用的特徵表示來解決物體檢測中的多個子問題?如object proposal, box localization, instance segmentation.app

3. 如何高效計算多尺度的特徵表示?


2、特徵金字塔網絡(Feature Pyramid Networks)

做者提出了FPN算法。作法很簡單,以下圖所示。把低分辨率、高語義信息的高層特徵和高分辨率、低語義信息的低層特徵進行自上而下的側邊鏈接,使得全部尺度下的特徵都有豐富的語義信息。



做者的算法結構能夠分爲三個部分:自下而上的卷積神經網絡(上圖左),自上而下過程(上圖右)和特徵與特徵之間的側邊鏈接。

自下而上的部分其實就是卷積神經網絡的前向過程。在前向過程當中,特徵圖的大小在通過某些層後會改變,而在通過其餘一些層的時候不會改變,做者將不改變特徵圖大小的層歸爲一個階段,所以每次抽取的特徵都是每一個階段的最後一個層的輸出,這樣就能構成特徵金字塔。具體來講,對於ResNets,做者使用了每一個階段的最後一個殘差結構的特徵激活輸出。將這些殘差模塊輸出表示爲{C2, C3, C4, C5},對應於conv2,conv3,conv4和conv5的輸出。

自上而下的過程採用上採樣進行。上採樣幾乎都是採用內插值方法,即在原有圖像像素的基礎上在像素點之間採用合適的插值算法插入新的元素,從而擴大原圖像的大小。經過對特徵圖進行上採樣,使得上採樣後的特徵圖具備和下一層的特徵圖相同的大小。

根本上來講,側邊之間的橫向鏈接是將上採樣的結果和自下而上生成的特徵圖進行融合。咱們將卷積神經網絡中生成的對應層的特徵圖進行1×1的卷積操做,將之與通過上採樣的特徵圖融合,獲得一個新的特徵圖,這個特徵圖融合了不一樣層的特徵,具備更豐富的信息。 這裏1×1的卷積操做目的是改變channels,要求和後一層的channels相同在融合以後還會再採用3*3的卷積覈對每一個融合結果進行卷積,目的是消除上採樣的混疊效應,如此就獲得了一個新的特徵圖。這樣一層一層地迭代下去,就能夠獲得多個新的特徵圖。假設生成的特徵圖結果是P2,P3,P4,P5,它們和原來自底向上的卷積結果C2,C3,C4,C5一一對應。金字塔結構中全部層級共享分類層(迴歸層)。


3、fast rcnn中的特徵金字塔



4、其餘問題

Q1:不一樣深度的feature map爲何能夠通過upsample後直接相加?

答:做者解釋說這個緣由在於咱們作了end-to-end的training,由於不一樣層的參數不是固定的,不一樣層同時給監督作end-to-end training,因此相加訓練出來的東西可以更有效地融合淺層和深層的信息。

 

Q2:爲何FPN相比去掉深層特徵upsample(bottom-up pyramid)對於小物體檢測提高明顯?(RPN步驟AR從30.5到44.9,Fast RCNN步驟AP從24.9到33.9)

答:做者在poster裏給出了這個問題的答案



對於小物體,一方面咱們須要高分辨率的feature map更多關注小區域信息,另外一方面,如圖中的挎包同樣,須要更全局的信息更準確判斷挎包的存在及位置。

 

Q3:若是不考慮時間狀況下,image pyramid是否可能會比feature pyramid的性能更高?

答:做者以爲通過精細調整訓練是可能的,可是image pyramid(金字塔)主要的問題在於時間和空間佔用太大,而feature pyramid能夠在幾乎不增長額外計算量狀況下解決多尺度檢測問題。



5、代碼層面看FPN




三、 FPN自上而下的網絡結構代碼怎麼實現?



注意 P6是用在 RPN 目標區域提取網絡裏面的,而不是用在 FPN 網絡;

另外這裏 P2-P5最後又作了一次3*3的卷積,做用是消除上採樣帶來的混疊效應。

四、 如何肯定某個 ROI 使用哪一層特徵圖進行 ROIpooling ?

看代碼:



224是ImageNet的標準輸入,k0是基準值,設置爲5,表明P5層的輸出(原圖大小就用P5層),w和h是ROI區域的長和寬,image_area是輸入圖片的長乘以寬,即輸入圖片的面積,假設ROI是112 * 112的大小,那麼k = k0-1 = 5-1 = 4,意味着該ROI應該使用P4的特徵層。k值會作取整處理,防止結果不是整數。


五、 上面獲得的5個融合了不一樣層級的特徵圖怎麼使用?

能夠看到,這裏只使用2-5四個特徵圖:



對每一個 box,都提取其中每一層特徵圖上該box對應的特徵,而後組成一個大的特徵列表pooled。

六、 金字塔結構中全部層級共享分類層是怎麼回事?

先看代碼:


這裏的PyramidROIAlign獲得的 x就是上面一步獲得的從每一個層的特徵圖上提取出來的特徵列表,這裏對這個特徵列表先接兩個1024通道數的卷積層,再分別送入分類層和迴歸層獲得最終的結果。

也就是說,每一個 ROI 都在P2-P5中的某一層獲得了一個特徵,而後送入同一個分類和迴歸網絡獲得最終結果。

FPN中每一層的heads 參數都是共享的,做者認爲共享參數的效果也不錯就說明FPN中全部層的語義都類似。

七、 它的思想是什麼?

把高層的特徵傳下來,補充低層的語義,這樣就能夠得到高分辨率、強語義的特徵,有利於小目標的檢測。

八、 橫向鏈接起什麼做用?

若是不進行特徵的融合(也就是說去掉全部的1x1側鏈接),雖然理論上分辨率沒變,語義也加強了,可是AR降低了10%左右!做者認爲這些特徵上下采樣太屢次了,致使它們不適於定位。Bottom-up的特徵包含了更精確的位置信息。


原文連接 https://www.cnblogs.com/hellcat/p/9741213.html



視頻課程資源,由淺入深講解,通俗易懂。

須要優惠券聯繫小編微信:hai299014

https://www.julyedu.com?ccode=5ebcebdd4c4d5




閱讀過本文的人還看了如下文章:


【全套視頻課】最全的目標檢測算法系列講解,通俗易懂!


《美團機器學習實踐》_美團算法團隊.pdf


《深度學習入門:基於Python的理論與實現》高清中文PDF+源碼


特徵提取與圖像處理(第二版).pdf


python就業班學習視頻,從入門到實戰項目


2019最新《PyTorch天然語言處理》英、中文版PDF+源碼


《21個項目玩轉深度學習:基於TensorFlow的實踐詳解》完整版PDF+附書代碼


《深度學習之pytorch》pdf+附書源碼


PyTorch深度學習快速實戰入門《pytorch-handbook》


【下載】豆瓣評分8.1,《機器學習實戰:基於Scikit-Learn和TensorFlow》


《Python數據分析與挖掘實戰》PDF+完整源碼


汽車行業完整知識圖譜項目實戰視頻(全23課)


李沐大神開源《動手學深度學習》,加州伯克利深度學習(2019春)教材


筆記、代碼清晰易懂!李航《統計學習方法》最新資源全套!


《神經網絡與深度學習》最新2018版中英PDF+源碼


將機器學習模型部署爲REST API


FashionAI服裝屬性標籤圖像識別Top1-5方案分享


重要開源!CNN-RNN-CTC 實現手寫漢字識別


yolo3 檢測出圖像中的不規則漢字


一樣是機器學習算法工程師,你的面試爲何過不了?


前海徵信大數據算法:風險機率預測


【Keras】完整實現‘交通標誌’分類、‘票據’分類兩個項目,讓你掌握深度學習圖像分類


VGG16遷移學習,實現醫學圖像識別分類工程項目


特徵工程(一)


特徵工程(二) :文本數據的展開、過濾和分塊


特徵工程(三):特徵縮放,從詞袋到 TF-IDF


特徵工程(四): 類別特徵


特徵工程(五): PCA 降維


特徵工程(六): 非線性特徵提取和模型堆疊


特徵工程(七):圖像特徵提取和深度學習


如何利用全新的決策樹集成級聯結構gcForest作特徵工程並打分?


Machine Learning Yearning 中文翻譯稿


螞蟻金服2018秋招-算法工程師(共四面)經過


全球AI挑戰-場景分類的比賽源碼(多模型融合)


斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


python+flask搭建CNN在線識別手寫中文網站


中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學習與特徵工程



不斷更新資源

深度學習、機器學習、數據分析、python

 搜索公衆號添加: datayx  



機器學習算法資源社羣

不斷上傳電子版PDF資料

技術問題求解

 QQ羣號: 333972581  

長按圖片,識別二維碼


本文分享自微信公衆號 - 機器學習AI算法工程(datayx)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索