目錄
1、fpn橫向連線為什麼接乙個3*3 卷積:
2、fpn的特徵融合為什麼是相加操作
3、fpn整體架構:
4、為什麼fpn能夠很好的處理小目標?
fpn特徵金字塔網路解讀:
橫向連線(lateral connection)的步驟:
① 對第 n 層的特徵使用 1*1 卷積來修改通道數
② 對第 n+1 層的特徵使用線性插值法來進行上取樣,然後跟步驟 ① 的結果進行按元素相加
③ 對步驟 ② 的結果使用 3*3 卷積,目的是為了消除上取樣產生的混疊效應(aliasing effect)
注:
混疊效應:,混疊效應應該就是指上邊提到的『插值生成的影象灰度不連續,在灰度變化的地方可能出現明顯的鋸齒狀』。上取樣與原圖疊加後,造成特徵的不連續,在原特徵圖上的失真(特徵混亂);
解決方法:再做卷積相當於 filter(濾波) 操作,使之「還原」,也就是特徵的再提取,保證特徵的穩定性;
混跌效應具體可以檢視:
假設兩路輸入來說,如果是通道數相同且後面帶卷積的話,add等價於concat之後對應通道共享同乙個卷積核。fpn裡的金字塔,是希望把解析度最小但語義最強的特徵圖增加解析度,從性質上是可以用add的。如果用concat,因為解析度小的特徵通道數更多,計算量是一筆不小的開銷。所以fpn裡特徵融合使用相加操作可以理解為是為了降低計算量。
4.1、如何理解concat和add這兩種常見的feature map特徵融合方式
concat是通道數的增加; add是特徵圖相加,通道數不變.你可以這麼理解,add是描述影象的特徵下的資訊量增多了,但是描述影象的維度本身並沒有增加,只是每一維下的資訊量在增加,這顯然是對最終的影象的分類是有益的。而concatenate是通道數的合併,也就是說描述影象本身的特徵數(通道數)增加了,而每一特徵下的資訊是沒有增加。concat每個通道對應著對應的卷積核。 而add形式則將對應的特徵圖相加,再進行下一步卷積操作,相當於加了乙個先驗:對應通道的特徵圖語義類似,從而對應的特徵圖共享乙個卷積核(對於兩路輸入來說,如果是通道數相同且後面帶卷積的話,add等價於concat之後對應通道共享同乙個卷積核)。因此add可以認為是特殊的concat形式。但是add的計算量要比concat的計算量小得多
fpn 主要分為:fpn for rpn 和 fpn for fast r-cnn 兩個fpn過程。
fpn for rpn 可以從參考文章中了解。 這裡主要講一下
fpn for fast r-cnn 的roi pooling。
fpn for fast r-cnn:
在fast r-cnn 中有乙個roi pooling層,它是使用region proposal的結果和特徵圖作為輸入,得到的每個proposal對應的特徵然後pooling,之後再分別用於分類結果和邊框回歸。之前fast r-cnn使用的是單尺度的特徵圖,但是現在使用不同尺度的特徵圖,那麼roi需要在哪乙個尺度的特徵圖上提取對應的特徵呢? 作者認為,不同尺度的roi應該使用不同特徵層作為roi pooling層的輸入,大尺度roi就用後面一些的金字塔層,比如p5 的featuremap;小尺度roi就用前面一點的特徵層,比如p4的featuremap。
圖6 fpn處理小目標
如上圖所示,fpn能夠很好地處理小目標的主要原因是:
fpn可以利用經過top-down模型後的那些上下文資訊(高層語義資訊);
對於小目標而言,fpn增加了特徵對映的解析度(即在更大的feature map上面進行操作,這樣可以獲得更多關於小目標的有用資訊, 低層細節資訊),如圖中所示;
低層的特徵語義資訊比較少,但是目標位置準確;高層的特徵語義資訊比較豐富,但是目標位置比較粗略。fpn同時利用低層特徵高解析度和高層特徵的高語義資訊,通過融合這些不同特徵層的特徵達到**的效果。並且**是在每個融合後的特徵層上單獨進行的。所以可以提公升小目標的準確率。
①修改rpn網路的結構,比如引入fpn結構,利用多層feature map融合來提高小目標檢測的精度和召回;②針對小目標重新精細設計anchor的尺寸和形狀,從而更好地對小目標進行檢測;
小目標難以檢測的原因:解析度低,影象模糊,攜帶的資訊少。
影象金字塔和多尺度滑動視窗檢測(mtcnn)
多尺度特徵融合檢測(fpn、pan、asff等)
增大訓練、檢測影象解析度;
超分策略放大後檢測;
①借鑑fpn的思想,在fpn之前目標檢測的大多數方法都是和分類一樣,使用頂層的特徵來進行處理。雖然這種方法只是用到了高層的語義資訊,但是位置資訊卻沒有得到,尤其在檢測目標的過程中,位置資訊是特別重要的,而位置資訊又是主要在網路的低層。因此fpn採用了多尺度特徵融合的方式,採用不同特徵層特徵融合之後的結果來做**。
②要讓輸入的分布盡可能地接近模型預訓練的分布。先用imagenet做預訓練,之後使用原圖上取樣得到的影象來做微調,使用微調的模型來**原圖經過上取樣的影象。該方法提公升效果比較顯著。
③採用多尺度輸入訓練方式來訓練網路;
④借鑑cascade r-cnn的設計思路,優化目標檢測中two-stage方法中的iou閾值。檢測中的iou閾值對於樣本的選取是至關重要的,如果iou閾值過高,會導致正樣本質量很高,但是數量會很少,會出現樣本比例不平衡的影響;如果iou閾值較低,樣本數量就會增加,但是樣本的質量也會下降。如何選取好的iou,對於檢測結果來說很重要。⑤採用分割代替檢測方法,先分割,後回歸bbox來檢測微小目標。
(1)如果有很長,很小,或者很寬的目標,應該如何處理目標檢測中如何解決目標尺度大小不一的情況 小目標不好檢測,有試過其他的方法嗎?比如裁剪影象進行重疊
小目標不好檢測的兩大原因:1)資料集中包含小目標的比較少,導致模型在訓練的時候會偏向medium和large的目標。2)小目標的面積太小了,導致包含目標的anchor比較少,這也意味著小目標被檢測出的概率變小。
改進方法: 1)對於資料集中含有小目標較少的情況,使用過度取樣(oversample)的方式,即多次訓練這類樣本。2)對於第二類問題,則是對於那些包含小物體的影象,將小物體在中複製多分,在保證不影響其他物體的基礎上,人工增加小物體在**現的次數,提公升被anchor包含的概率。3)使用fpn;4)rpn中anchor size的設定一定要合適,這樣可提高proposal的準確率。5)對於解析度很低的小目標,我們可以對其所在的proposal進行超解析度,提公升小目標的特徵質量,更有利於小目標的檢測。
FPN學習筆記
關鍵創新點 多尺度 提高精度同時避免了傳統的多尺度方法 image pyramid 的巨大開銷。1,bottem up 從低到上的特徵提取部分,輸入為原始,輸出一系列不同尺度的feature map。中使用resnet網路,把resnet每個stage的最後乙個feature map作為輸出。中只使...
FPN 檢測網路解析
題目 feature pyramid networks for objection detection github 可搜 作者在文中指出了一種基於特徵金字塔結構的目標檢測演算法,但是骨幹網路結構還是基於faster rcnn。上圖便是作者在文中指出的特徵金字塔的bottom up,top down...
關於FPN的三個疑問
cvpr 現場提問 1 不同深度的 feature map 為什麼可以經過 upsample 後直接相加?a 作者解釋說這個原因在於我們做了 end to end 的 training,因為不同層的引數不是固定的,不同層同時給監督做end to end training,所以相加訓練出來的東西能夠更...