ROI Align 是在Mask-RCNN這篇論文里提出的一種區(qū)域特征聚集方式, 很好地解決了ROI Pooling操作中兩次量化造成的區(qū)域不匹配(mis-alignment)的問題。實驗顯示,在檢測測任務(wù)中將 ROI Pooling 替換為 ROI Align 可以提升檢測模型的準(zhǔn)確性。
ROI Pooling過程:
1、首先根據(jù)后面網(wǎng)絡(luò)要求的輸入尺寸求網(wǎng)格大小,如輸入特征圖尺寸為5*5,而網(wǎng)絡(luò)輸入尺寸為2*2,那么網(wǎng)格的劃分結(jié)果為

2、對于每個小網(wǎng)格,求最大值作為該網(wǎng)格最大池化之后的值。
在這個過程中會有兩次量化操作。對于一個region proposal,首先從原圖經(jīng)過全卷積網(wǎng)絡(luò)到特征圖,得到的候選框位置可能存在浮點數(shù),進行取整操作從而出現(xiàn)第一次量化;其次,在ROI Pooling求取每個小網(wǎng)格的位置時也同樣存在浮點數(shù)取整的情況。這兩次量化的結(jié)果都使得候選框的位置會出現(xiàn)偏差,在論文里,作者把它總結(jié)為“不匹配問題(misalignment)。如下圖所示,假設(shè)圖片經(jīng)過主干網(wǎng)絡(luò)提取特征后,特征圖縮放步長(stride)為32,則該層特征圖上0.1個像素的偏差,縮放到原圖就是3.2個像素。

ROI Align過程:
為了解決ROI Pooling的上述缺點,作者提出了ROI Align這一改進的方法。ROI Align的思路很簡單:取消量化操作,使用雙線性內(nèi)插的方法獲得坐標(biāo)為浮點數(shù)的像素點上的圖像數(shù)值,從而將整個特征聚集過程轉(zhuǎn)化為一個連續(xù)的操作,。值得注意的是,在具體的算法操作上,ROI Align并不是簡單地補充出候選區(qū)域邊界上的坐標(biāo)點,然后將這些坐標(biāo)點進行池化,而是重新設(shè)計了一套比較優(yōu)雅的流程,如圖3所示:
遍歷每一個候選區(qū)域,保持浮點數(shù)邊界不做量化。
將候選區(qū)域分割成k x k個單元,每個單元的邊界也不做量化。
在每個單元中計算固定四個坐標(biāo)位置,用雙線性內(nèi)插的方法計算出這四個位置的值,然后進行最大池化操作。
這里對上述步驟的第三點作一些說明:這個固定位置是指在每一個矩形單元(bin)中按照固定規(guī)則確定的位置。比如,如果采樣點數(shù)是1,那么就是這個單元的中心點。如果采樣點數(shù)是4,那么就是把這個單元平均分割成四個小方塊以后它們分別的中心點。顯然這些采樣點的坐標(biāo)通常是浮點數(shù),所以需要使用插值的方法得到它的像素值。在相關(guān)實驗中,作者發(fā)現(xiàn)將采樣點設(shè)為4會獲得最佳性能,甚至直接設(shè)為1在性能上也相差無幾。事實上,ROI Align 在遍歷取樣點的數(shù)量上沒有ROIPooling那么多,但卻可以獲得更好的性能,這主要歸功于解決了misalignment的問題。值得一提的是,我在實驗時發(fā)現(xiàn),ROI Align在VOC2007數(shù)據(jù)集上的提升效果并不如在COCO上明顯。經(jīng)過分析,造成這種區(qū)別的原因是COCO上小目標(biāo)的數(shù)量更多,而小目標(biāo)受misalignment問題的影響更大(比如,同樣是0.5個像素點的偏差,對于較大的目標(biāo)而言顯得微不足道,但是對于小目標(biāo),誤差的影響就要高很多)。


反向傳播公式:
常規(guī)的ROI Pooling的反向傳播公式如下:

這里,xi代表池化前特征圖上的像素點;yrj代表池化后的第r個候選區(qū)域的第j個點;i*(r,j)代表點yrj像素值的來源(最大池化的時候選出的最大像素值所在點的坐標(biāo))。由上式可以看出,只有當(dāng)池化后某一個點的像素值在池化過程中采用了當(dāng)前點Xi的像素值(即滿足i=i*(r,j)),才在xi處回傳梯度。
類比于ROIPooling,ROIAlign的反向傳播需要作出稍許修改:首先,在ROIAlign中,xi*(r,j)是一個浮點數(shù)的坐標(biāo)位置(前向傳播時計算出來的采樣點),在池化前的特征圖中,每一個與 xi*(r,j) 橫縱坐標(biāo)均小于1的點都應(yīng)該接受與此對應(yīng)的點yrj回傳的梯度,故ROI Align 的反向傳播公式如下:

上式中,d(.)表示兩點之間的距離,Δh和Δw表示 xi 與 xi*(r,j) 橫縱坐標(biāo)的差值,這里作為雙線性內(nèi)插的系數(shù)乘在原始的梯度上。
參考文獻:
http://blog.csdn.net/u011918382/article/details/79455407