理解RoIPooling和RoIAlign作用和實現方式

1.RoIPooling

RoIPooling顧名思義對Roi進行Pooling操作,主要用於目標檢測任務。RoI(Region of interest)指的是一張圖片中認爲有存在目標的區域,例如下圖中的藍色和紅色區域,這裏我們不用去管Roi是如何提取的。

一般使用到RoIPooling的流程爲: 輸入圖片->多層卷積->對卷積後feanture map的Roi進行 max pooling操作->得到fix feature map(這個feature map的size是我們設定好的,例如7×7)->多層全連接

對Roi的max pooling操作的kernel size記作A,  即A = 多層卷積後的feature map的size / fix feature map 的size 

因此這裏的A有可能不是整數 ,那麼該如何處理呢?

第一種辦法:對A進行四捨五入(最近鄰插值法),然後一次從左到右對多層卷積後的feature map進行max pooling操作,這樣做相當與丟棄了feature map右邊的一些值。(faster R-CNN中使用的一種方式)

第二種辦法: 不直接丟棄feature map的值,即改變A的值爲多個不同的整數,使得劃分多層卷積後的feature map的區域的個數等於fix feature map size 例如7×7, 然後對劃分的每一個區域取最大值,即得到fix feauture map, 這樣做相當將池化核(正方形)a×a變成了不同的(長方形)m1×n1,m2×m2,.... 如何確定這些值,比較難以處理。

RolPooling的優點:可以重用多層卷積後的feature map,加快了訓練和測試時間,可以實現end-to-end訓練

2.RoIAlign

RoIAlign針對第一種方法進行改進,何凱明在Mask RCNN中指出第一種方法會損失空間對稱性 ,從而將最近鄰插值法替換爲雙線性插值,並且命令爲RoIAlign。雙線性插值法可以參考下面的鏈接。

參考鏈接:RoIPooling ,SPP雙線性插值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章