『計算機視覺』Region Proposal by Guided Anchoring


論文地址:Guided Anchoring

不得不佩服自媒體,直接找到了論文作者之一寫了篇解析文章,這里給出鏈接,本文將引用一部分原作者的解析,減少我的打字量,也方便結合比照理解。

一、問題和思路

1、面臨問題

常見的生成 anchor 的方式是滑窗(sliding window),也就是首先定義 k 個特定尺度(scale)和長寬比(aspect ratio)的 anchor,然后在全圖上以一定的步長滑動。anchor 的尺度和長寬比需要預先定義,這是一個對性能影響比較大的超參,而且對於不同數據集和方法需要單獨調整。如果尺度和長寬比設置不合適,可能會導致 recall 不夠高

一方面,大部分的 anchor 都分布在背景區域,對 proposal 或者檢測不會有任何正面作用

另一方面,預先定義好的 anchor 形狀不一定能滿足極端大小或者長寬比懸殊的物體

而且 anchor 數目過多影響將網絡性能和速度。所以我們期待的是稀疏,形狀根據位置可變的 anchor。

2、anchor設計准則

本段引用作者自己的解釋:

Alignment

由於每個 anchor 都是由 feature map 上的一個點表示,那么這個 anchor 最好是以這個點為中心,否則位置偏了的話,這個點的 feature 和這個 anchor 就不是非常好地對應起來,用該 feature 來預測 anchor 的分類和回歸會有問題。我們設計了類似 cascade/iterative RPN 的實驗來證明這一點,對 anchor 進行兩次回歸,第一次回歸采用常規做法,即中心點和長寬都進行回歸,這樣第一次回歸之后,anchor 中心點和 feature map 每一個像素的中心就不再完全對齊。我們發現這樣的兩次 regress 提升十分有限。所以我們在形狀預測分支只對 w 和 h 做預測,而不回歸中心點位置。

Consistency

這條准則是我們設計 feature adaption 的初衷,由於每個位置 anchor 形狀不同而破壞了特征的一致性,我們需要通過 feature adaption 來進行修正。這條准則本質上是對於如何准確提取 anchor 特征的討論。對於兩階段檢測器的第二階段,我們可以通過 RoI Pooling 或者 RoI Align 來精確地提取 RoI 的特征。但是對於 RPN 或者單階段檢測器的 anchor 來說,由於數量巨大,我們不可能通過這種 heavy 的方法來實現特征和框的精確 match,還是只能用特征圖上一個點,也就是 512x1x1 的向量來表示。那么 Feature Adaption 起到了一個讓特征和 anchor 對應更加精確的作用,這種設計在其他地方也有可以借鑒之處。

3、文章貢獻

1、提出了一種新的 anchor 生成方法:Guided Anchoring,即通過圖像特征來指導 anchor 的生成,通過預測 anchor 的位置形狀,來生成稀疏而且形狀任意的 anchor

2、設計了 Feature Adaption 模塊來修正特征圖使之與 anchor 形狀更加匹配

這篇 paper 的方法用在了 COCO Challenge 2018 檢測任務的冠軍方法中,在極高的 baseline 上漲了 1 個點。

二、Guided Anchoring

1、inference 網絡

GA的邏輯圖如上,網絡分為3塊:NL、NS、NT

NL 生成等大的單通道特征,表示每一個像素位置為一個 anchor 中心的概率(1*1卷積+sigmoid)

NS 生成等大的雙通道特征,表示每一個 anchor 中心對應的 h、w 值(1*1卷積+轉換運算)

NT 作者提出的 Feature adaption 模塊,邏輯上屬於 backbone 的特征提取,應用了可變形卷積,附加了 anchor 的信息,生成的 F' 將可以直接回歸、分類對應的 anchor

NS 轉換運算公式如下:

  

dwdh 轉換為 wh,原文說可將 [-1,1] 放縮到 [0,1000],方便學習,所以推測在1*1后應該還有一個sigmoid層。

NT 的提出是因為自學習的 anchor 長寬並不會受特征層的感受野指導,所以問題就來了:同一層的特征感受野相同,但 anchor 差異巨大,每一個特征點使用同樣大小的感受野代表不同大小的 anchor,這不合理,所以作者在 NS 后添加了1*1卷積輸出 offset,設計了 NT 這個僅包含一層3*3可變形卷積的結構,使得輸出特征的每個特征點代表一個 anchor 的特征信息

2、損失函數和 label 設置

 損失函數由四部分組成:

其后兩項為傳統的分類回歸損失函數,前兩項為anchor的定位、形狀損失函數。

錨框定位損失函數 Lloc

定位標簽按照 NL 輸出來看很容易發現僅需要一張 mask 圖像即可,但是這樣定位正樣本比例會過低,且負樣本中會有很多誤導項(臨近真實點的像素都作為負樣本的話會有很強的干擾性),所以作者提出了幾個概念:CR、IR、OR,原文解釋如下(“xg” 表示的是 x 上標為 ' 下標為 g,其他符號同理):

(1) The center region CR=R(xg, yg, σ1w, σ1h) defines the center area of the box. Pixels in CR are assigned aspositive samples.

(2) The ignore region IR=R(xg, yg 2w, σ2h) \ CR is a larger (σ2> σ1) region excluding CR. Pixels in IR are marked as“ignore”and exluded during training.

(3) The outside region OR is the whole feature map excluding CR and IR. Pixels in OR are regarded as negative samples.

即 CR 區域(真實中心附近的矩形范圍像素)的樣本均視為正樣本,CR 區域外圍的環形區域 IR 不參與損失函數的貢獻,防止混淆,再外面的像素 OR 才視為負樣本。

對於應用 FPN 結構作者做出了進一步的規范:

  • 有預測 gt 任務的層的相鄰層,將把任務層的 CR+IR 區域對應的像素均視為本層的IR

結合上面的規則,示意圖如下:

錨框形狀損失函數 Lshape

原文本部分涉及兩個問題:損失函數的選擇 & gt 的選擇。

先看 gt 選擇,由於我們的 anchor 沒有預先的形狀,所以我們不好判斷 anchor 屬於哪個 gt,作者的處理手段也很傳統:預先定義9組寬高,將9組寬高和特定 gt 的 IOU 計算出來並保留最大的記為 vIOU,將其和不同 gt 的 vIOU 橫向比較,選最大的 vIOU 對應的 gt 作為該 anchor 對應的 gt

損失函數作者在連接文章中說的很明白了,

預測最佳的長和寬,這是一個回歸問題。按照往常做法,當然是先算出 target,也就是該中心點的 anchor 最優的 w 和 h,然后用 L1/L2/Smooth L1 這類 loss 來監督。然而這玩意的 target 並不好計算,而且實現起來也會比較困難,所以我們直接使用 IoU 作為監督,來學習 w 和 h。既然我們算不出來最優的 w 和 h,而計算 IoU 又是可導的操作,那就讓網絡自己去優化使得 IoU 最大吧。后來改用了 bounded IoU Loss,但原理是一樣的。

論文為: Improving object local-ization with fitness nms and bounded iou loss (2018)。

3、將 GA 結構應用到傳統兩步法網絡

作者發現 proposal 質量提升很多,但是在 detector 上性能提升比較有限。在不同的檢測模型上,使用 Guided Anchoring 可以提升 1 個點左右。明明有很好的 proposal,但是 mAP 卻沒有漲很多。作者對該問題的探索如下:

經過一番探究,我們發現了以下兩點:1. 減少 proposal 數量,2. 增大訓練時正樣本的 IoU 閾值(這個更重要)。既然在 top300 里面已經有了很多高 IoU 的 proposal,那么何必用 1000 個框來訓練和測試,既然 proposal 們都這么優秀,那么讓 IoU 標准嚴格一些也未嘗不可。

這個正確的打開方式基本是 Jiaqi 獨立調出來的,讓 performance 一下好看了很多。通過這兩個改進,在 Faster R-CNN 上的漲點瞬間提升到了 2.7 個點(沒有加任何 trick),其他方法上也有大幅提升。

其他實驗部分較為瑣碎建議瀏覽原文。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM