物件偵測
RoIAlign(感興趣區域對齊)
RoIAlign(由 Mask R-CNN 引入,He 等人,2017)是一種更講究的方法,用來從特徵圖的某個區域裁切出固定大小的特徵,目的是修正 RoI 池化中內建的空間錯位。直覺是:RoI 池化把座標兩次四捨五入到整數的特徵圖格,使它萃取出的特徵相對於物件真正所在略有偏移。對一個粗略的框這幾乎無所謂,但對需要像素精準的遮罩(以及精準的小框)而言,那半格的偏移是毀滅性的。RoIAlign 乾脆拒絕四捨五入。
把錯位講具體些。RoI 池化做兩次量化:先把提議的實數座標對齊到整數的特徵圖位置(例如 2.97 → 2),再在把區域切成輸出格網時,把每格的邊界也對齊到整數。每次取整都可能使特徵偏移多達半格,而在骨幹步幅為 16 時,這在輸入影像中可達約 8 像素——足以毀掉一個遮罩。
RoIAlign 移除了這兩次取整。它保留 RoI 的浮點座標,以精確的分數邊界把它切成輸出格,在每個格內放幾個取樣點(常為 4 個),並以雙線性插值從最近的四個特徵圖格計算每個取樣點的值。該格的輸出是其取樣點的平均(或最大)。由於雙線性插值平滑且可微,梯度得以乾淨地流動,萃取出的特徵也能以次像素精度對齊真正的區域。
回報很大:在 Mask R-CNN 中,把 RoI 池化換成 RoIAlign 使遮罩準確度相對提升約 10–50%,而在對齊最關鍵的嚴格 IoU 門檻下增益最大。RoIAlign 如今已是任何需要精準定位的、基於區域的模型的標準配備——實例分割、關鍵點估計、以及高 IoU 偵測。
這個教訓可推廣到偵測之外:每當你在非整數座標上重新取樣特徵圖(空間轉換器、可變形卷積、扭曲),就應插值——別取整。量化會默默丟棄你的網路費力編碼進去的次像素資訊。
又称