目标检测特殊层:ROI Align层详解
ROI Align 是在Mask-RCNN這篇論文里提出的一種區(qū)域特征聚集方式, 很好地解決了ROI Pooling操作中兩次量化造成的區(qū)域不匹配(mis-alignment)的問題。實驗顯示,在檢測測任務(wù)中將 ROI Pooling 替換為 ROI Align 可以提升檢測模型的準(zhǔn)確性。
如果roi大小為(7,6),而roipooling是分成了(6,6)的部分,(7,6)到(6,6)的轉(zhuǎn)換必然帶來了邊緣某像素的損失。而roialign利用雙線性插值,將roi(7,6)插值擴充到(12,12),此時再做(6,6)的roipooling,會提高精度,充分利用了roi的像素。
1. ROI Pooling 的局限性分析
在常見的兩級檢測框架(比如Fast-RCNN,Faster-RCNN,RFCN)中,ROI Pooling 的作用是根據(jù)預(yù)選框的位置坐標(biāo)在特征圖中將相應(yīng)區(qū)域池化為固定尺寸的特征圖,以便進行后續(xù)的分類和包圍框回歸操作。由于預(yù)選框的位置通常是由模型回歸得到的,一般來講是浮點數(shù),而池化后的特征圖要求尺寸固定。故ROI Pooling這一操作存在兩次量化的過程。
- 將候選框邊界量化為整數(shù)點坐標(biāo)值。
- 將量化后的邊界區(qū)域平均分割成 k x k 個單元(bin),對每一個單元的邊界進行量化。
事實上,經(jīng)過上述兩次量化,此時的候選框已經(jīng)和最開始回歸出來的位置有一定的偏差,這個偏差會影響檢測或者分割的準(zhǔn)確度。在論文里,作者把它總結(jié)為“不匹配問題(misalignment)。
下面我們用直觀的例子具體分析一下上述區(qū)域不匹配問題。如?圖1?所示,這是一個Faster-RCNN檢測框架。輸入一張800*800的圖片,圖片上有一個665*665的包圍框(框著一只狗)。圖片經(jīng)過主干網(wǎng)絡(luò)提取特征后,特征圖縮放步長(stride)為32。因此,圖像和包圍框的邊長都是輸入時的1/32。800正好可以被32整除變?yōu)?5。但665除以32以后得到20.78,帶有小數(shù),于是ROI Pooling?直接將它量化成20。接下來需要把框內(nèi)的特征池化7*7的大小,因此將上述包圍框平均分割成7*7個矩形區(qū)域。顯然,每個矩形區(qū)域的邊長為2.86,又含有小數(shù)。于是ROI Pooling?再次把它量化到2。經(jīng)過這兩次量化,候選區(qū)域已經(jīng)出現(xiàn)了較明顯的偏差(如圖中綠色部分所示)。更重要的是,該層特征圖上0.1個像素的偏差,縮放到原圖就是3.2個像素。那么0.8的偏差,在原圖上就是接近30個像素點的差別,這一差別不容小覷。
圖 1?
2. ROI Align 的主要思想和具體方法
為了解決ROI Pooling的上述缺點,作者提出了ROI Align這一改進的方法(如圖2)。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),誤差的影響就要高很多)
圖 2?
?
圖 3?
總結(jié)
以上是生活随笔為你收集整理的目标检测特殊层:ROI Align层详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mask-RCNN中的ROIAlign,
- 下一篇: 目标检测特殊层:PSROIPooling