日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FPN详解

發(fā)布時間:2023/12/15 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FPN详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

論文題目:Feature Pyramid Networks for Object Detection

論文鏈接:論文鏈接

論文代碼:Caffe版本代碼鏈接

?

一、FPN初探

1. 圖像金字塔

圖1 圖像金字塔

圖2 高斯金字塔效果

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

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

圖3 特征金字塔

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

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

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

圖4 不同方案的金字塔

識別不同大小的物體是計算機視覺中的一個基本挑戰(zhàn),我們常用的解決方案是構造多尺度金字塔。如上圖a所示,這是一個特征圖像金字塔,整個過程是先對原始圖像構造圖像金字塔,然后在圖像金字塔的每一層提出不同的特征,然后進行相應的預測(BB的位置)。這種方法的缺點是計算量大,需要大量的內存;優(yōu)點是可以獲得較好的檢測精度。它通常會成為整個算法的性能瓶頸,由于這些原因,當前很少使用這種算法。如上圖b所示,這是一種改進的思路,學者們發(fā)現(xiàn)我們可以利用卷積網絡本身的特性,即對原始圖像進行卷積和池化操作,通過這種操作我們可以獲得不同尺寸的feature map,這樣其實就類似于在圖像的特征空間中構造金字塔。實驗表明,淺層的網絡更關注于細節(jié)信息,高層的網絡更關注于語義信息,而高層的語義信息能夠幫助我們準確的檢測出目標,因此我們可以利用最后一個卷積層上的feature map來進行預測。這種方法存在于大多數(shù)深度網絡中,比如VGG、ResNet、Inception,它們都是利用深度網絡的最后一層特征來進行分類。這種方法的優(yōu)點是速度快、需要內存少。它的缺點是我們僅僅關注深層網絡中最后一層的特征,卻忽略了其它層的特征,但是細節(jié)信息可以在一定程度上提升檢測的精度。因此有了圖c所示的架構,它的設計思想就是同時利用低層特征和高層特征,分別在不同的層同時進行預測,這是因為我的一幅圖像中可能具有多個不同大小的目標,區(qū)分不同的目標可能需要不同的特征,對于簡單的目標我們僅僅需要淺層的特征就可以檢測到它,對于復雜的目標我們就需要利用復雜的特征來檢測它。整個過程就是首先在原始圖像上面進行深度卷積,然后分別在不同的特征層上面進行預測。它的優(yōu)點是在不同的層上面輸出對應的目標,不需要經過所有的層才輸出對應的目標(即對于有些目標來說,不需要進行多余的前向操作),這樣可以在一定程度上對網絡進行加速操作,同時可以提高算法的檢測性能。它的缺點是獲得的特征不魯棒,都是一些弱特征(因為很多的特征都是從較淺的層獲得的)。講了這么多終于輪到我們的FPN啦,它的架構如圖d所示,整個過程如下所示,首先我們在輸入的圖像上進行深度卷積,然后對Layer2上面的特征進行降維操作(即添加一層1x1的卷積層),對Layer4上面的特征就行上采樣操作,使得它們具有相應的尺寸,然后對處理后的Layer2和處理后的Layer4執(zhí)行加法操作(對應元素相加),將獲得的結果輸入到Layer5中去。其背后的思路是為了獲得一個強語義信息,這樣可以提高檢測性能。認真的你可能觀察到了,這次我們使用了更深的層來構造特征金字塔,這樣做是為了使用更加魯棒的信息;除此之外,我們將處理過的低層特征和處理過的高層特征進行累加,這樣做的目的是因為低層特征可以提供更加準確的位置信息,而多次的降采樣和上采樣操作使得深層網絡的定位信息存在誤差,因此我們將其結合其起來使用,這樣我們就構建了一個更深的特征金字塔,融合了多層特征信息,并在不同的特征進行輸出。這就是上圖的詳細解釋。(個人觀點而已)

?

二、FPN框架解析

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變化為現(xiàn)在的特征集合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小時減少到現(xiàn)在的10.6小時,速度大概提升了4倍;我們的推理時間由原來的0.32s減少到現(xiàn)在的0.15s;最后,我們的準確率提升了2.0個百分點。主要的原因是因為我們通過FPN獲得了更加魯邦的高層語義特征,它使得我們的學習過程更加高效。

表3 COCO數(shù)據(jù)集結果展示

如上表所示,我們測試了FPN算法在COCO數(shù)據(jù)集上面的性能表現(xiàn),使用了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方法獲得較強的語義特征,提高目標檢測和實例分割在多個數(shù)據(jù)集上面的性能表現(xiàn);
  • FPN這種架構可以靈活地應用在不同地任務中去,包括目標檢測、實例分割等;

以下是FPN網絡的架構細節(jié)圖。

圖9 Faster R-CNN+FPN細節(jié)圖

?

參考文獻

[1] FPN對應的poster,參考鏈接;

?

注意事項

[1] 該博客是本人原創(chuàng)博客,如果您對該博客感興趣,想要轉載該博客,請與我聯(lián)系(qq郵箱:1575262785@qq.com),我會在第一時間回復大家,謝謝大家。

[2] 由于個人能力有限,該博客可能存在很多的問題,希望大家能夠提出改進意見。

[3] 如果您在閱讀本博客時遇到不理解的地方,希望可以聯(lián)系我,我會及時的回復您,和您交流想法和意見,謝謝。

[4] 本人業(yè)余時間承接各種本科畢設設計和各種小項目,包括圖像處理(數(shù)據(jù)挖掘、機器學習、深度學習等)、matlab仿真、python算法及仿真等,有需要的請加QQ:1575262785詳聊!!!

?

總結

以上是生活随笔為你收集整理的FPN详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。