常見的四種特徵金字塔網路結構

2021-10-04 03:20:17 字數 1776 閱讀 1320

為什麼使用特徵金字塔呢,是因為cnn對物體的平移是保持不變的,而對於物體的尺度變換是無法處理的,所以使用特徵金字塔進行處理,下面進行介紹。

對影象做乙個特徵金字塔,在每乙個影象上做cnn,進行**,但 計算與記憶體開銷太大。

對影象做乙個cnn,相當於乙個特徵金字塔,不對影象做特徵金字塔,在最高層做乙個**,但這存在感受野問題,越抽象感受野越大,對於小的特徵可能檢測不到,使用single feature map的包括r-cnn、sppnet、fast r-cnn、faster r-cnn、yolov1以及r-fcn系列。

在每一層特徵做**,問題在於越底層featuremap的語義資訊越薄弱,底層大scale的feature map語義資訊少,雖然框出了小物體,但小物體容易被錯分,使用pyramidal feature hierarchy的包括ssd。ssd沒有上取樣過程,因為是在原有特徵圖上**的,所以也不會增加額外的計算開銷,但作者認為ssd沒有用到足夠底層的特徵,而越底層的特徵對檢測小物體越有利。ssd用的最底層的特徵是conv4_3

總結:上面abc這三種卷積方式都不是特徵理想,那麼怎麼才能兼顧準確率(檢測小物體)和速度(開銷)呢?接下來就是fpn了。

特徵金字塔網路相當於先進行傳統的bottom-up自上而下的特徵卷積(d圖左側),然後fpn試圖融合左側特徵圖的相鄰的特徵圖。左側模型叫bottom-up,右側模型叫top-down,橫向的箭頭叫橫向連線lateral connections。這麼做的目的是因為高層的特徵語義多,低層的特徵語義少但位置資訊多。

左側模型特徵圖大小相差1倍,但像alexnet一樣,其實是每在同樣大小的feature上卷積幾次才進行一次池化操作,我們把在同樣大小feature上的卷積稱之為乙個stage。d圖這裡畫的圖是每個stage的最後乙個卷積層,因為每個stage的最後一層feature語義資訊最多。

具體做法是兩個特徵層的較高層特徵2倍上取樣(上取樣方法很多,上取樣幾乎都是採用內插值方法,即在原有影象畫素的基礎上在畫素點之間採用合適的插值演算法插入新的元素,總之是把feature大小擴大了一倍)。較低層特徵通過1×1卷積改變一下低層特徵的通道數,然後簡單地把將上取樣和1×1卷積後的結果對應元素相加。為什麼橫向連線要使用1×1卷積呢,為什麼不能原地不動地拿過來呢?原來在於作者想用1×1改變通道數,以達到各個level處理結果的channel都為256-d,便於後面對加起來的特徵進行分類。這段文字表述的即是下圖。

fpn只是提取特徵的一種方法而已,這篇**作者的應用於實驗主要是在faster r-cnn上進行的。

如有不足,歡迎交流。

小目標檢測 特徵金字塔網路(FPN)

feature pyramid networks for object detection 3.核心思想 引用 a 影象金字塔對原圖對原圖進行上取樣和下取樣得到不同尺度的影象,然後分別對不同尺度的影象做卷積得到特徵圖 feature map 這樣做明顯很耗時。b 只用到了最高層的特徵,越高層特徵圖語...

常見的四種網路程式設計方式

1 isapi程式設計 mfc中支援isapi的類有 2 cgi程式設計 cgi的工作原理介紹 cgi common gateway inte ce 是乙個web伺服器提供資訊服務的標準介面,通過這樣乙個介面,web伺服器能夠執行程式,並將程式輸出的資訊返回給瀏覽器。因為在web網上的資料都是靜態的...

常見的四種排序演算法

void bubblesort int a,int size,int order order為1代表公升序,氣泡排序演算法 void selectsort int a,int size,int order order為1代表公升序,選擇排序演算法 if k i void insertsort int...