ROI Align 原理理解

2021-09-02 15:30:30 字數 2485 閱讀 1572

-----對背景問題的理解-----

之前一直在想乙個問題:乙個label在原圖上標記出乙個包含目標的區域。這個框在特徵提取後,大小被縮小到了什麼程度?

如果這個label框本身就不大,那麼經過幾層池化之後,是不是在最後的feature map上都沒有乙個位置,能夠對應到這個區域?

目標在特徵提取過程中,由於這種深度結構導致目標被【腐蝕】或者說該目標的特徵被淹沒。

這個問題更廣義的描述:針對乙個固定網路,多大的框(目標)才能在深度網路提取的特徵中至少剩餘乙個明確的畫素點,指向這個目標。

反過來看,也就是說最後一層的feature map上的乙個點,對映回原圖得到一片感受野,如果目標框比這個感受野還要小,會不會就是過度的特徵提取?假設這個思路成立,可能這就是模型能力相對與不同大小的目標而言的一種模糊下界。

一直在調參,就把這個問題放在這裡了。前天師兄讓我幫他看看roi-align,掃了一眼發現,其實上面的問題跟align試**決的問題很相似。不同的是,它不是假設小目標被【腐蝕】了。而是說這個目標其實還能對應上特徵圖上的某乙個小點甚至是區域,但是因為量化問題,使得稍微的一點偏差,對於小目標的特徵來說,都影響十足。就好像眼裡掉入了一顆灰塵和眼裡掉入了一顆小石子的區別。

下面說一說我的解讀。

**:  mask-rcnn

**:針對問題:roi-pooling的量化誤差對小目標的影響

roi-pooling的輸入是proposal的座標,這些座標由rpn計算得到,因為經過一次回歸,所以跟原圖上的proposal對應對映到feature map上是乙個浮點數的座標。可想而知,整個feature就是一疊矩陣,矩陣的下標不都是整數嗎。所以對映過來的浮點數座標要被向下取整,縮小為整數區域。如下圖所示:可以明顯的看到量化後的差異。

這還沒到roi-pooling的步驟,只是獲取proposal對應的特徵圖。roi-pooling進行量化,如下圖

這是乙個h*w=8*9的目標特徵塊,然後非要分成3x3,這樣有乙個邊就不能整除,所以計算的時候roi-pooling再次量化如下

這下剛好夠分了。但乙個roi-pooling一共產生了兩次量化誤差。

兩次量化其實都是因為對映後坐標是浮點數,而特徵值只在整數座標上有。所以要量化。

align兩次都不量化,浮點數座標就浮點數座標吧。反正我只是計算,我又不按這個座標去取feature map上的數值(浮點數的座標在feature map上是沒有值的)。

然後把浮點數座標當成乙個範圍,範圍的大小為浮點座標 向上取整,得到兩個整數座標,畫出乙個規整的框,這個框裡的所有特徵都要用於計算roi-pooling。其實向上取整就能保證目標特徵塊不被縮小了,但這樣引入了雜訊呢。這個範圍對映回原圖對應的框應該是大於rpn得到的proposal的。引入了背景雜訊。

所以計算的時候,用雙線性插值,使得原圖上任意乙個浮點座標,都將會有值。現在解決浮點座標的取值問題了。然後怎麼修改roi-pooling呢?計算roi-pooling在上圖中分隔開的每乙個小bin(一共3x3個,紅線分出來的)的中心點,因為邊界時浮點數,所以每乙個中心點都時浮點數,然後用雙線性插值得到這個浮點座標的特徵值。作為rop-pooling的結果。9個bin格,9個中心點,9個特徵值。ok,同樣滿足輸入固定的要求,但是量化誤差大大減小。

上面的例子為什麼要取中心點?其實不一定要取中心點。作者在原文中發現,每乙個bin,劃分為4個mini bin,計算每乙個mini bin,上面的中心點對應的特徵值。如下圖所示:

就相當於每乙個bin 得到乙個2x2的矩陣,你可以取最大池化或者平均池化,把這四個數值像對特徵圖一樣進行pooling,使得每乙個bin得到乙個值,最後還是9個bin,得到固定輸出3x3。

同樣,你也可以取5、6、7、8、9個點,每乙個浮點座標因為雙線性插值的緣故,都有取值。

roi-pooling的反向傳播很好理解,最後用的最大池化,這個最大值來自於輸入feature map的哪個畫素,哪個畫素就回傳。但是align這種不量化的就麻煩了,找不到對應的點啊,怎麼辦?範圍。

如果我取的是中心點,那麼回傳的時候,這個浮點坐在原來的feature map上也是乙個浮點座標,我計算以這個座標為中心,半徑為1的圓,這個圓圈碰到的特徵點都回傳,原文好像說的是與這個點距離小於1的都回傳,意思很明顯了吧。

個人理解:

其實對於大目標來說,這些量化損失都在邊上,丟那麼一點點對目標的影響不大,但對於小目標影響就很大了。

並且我覺得回傳的點,實際上是變多了。但也不能就此說計算量變大,還要具體計算才能知道。

個人理解有偏差。

ROI Align 原理理解

對背景問題的理解 之前一直在想乙個問題 乙個label在原圖上標記出乙個包含目標的區域。這個框在特徵提取後,大小被縮小到了什麼程度?如果這個label框本身就不大,那麼經過幾層池化之後,是不是在最後的feature map上都沒有乙個位置,能夠對應到這個區域?目標在特徵提取過程中,由於這種深度結構導...

CSS 原理理解

網頁製作最初,html規定了 normal document stream 標準文件流 來規範元素在網頁中的顯示法則 標準文件流中元素分兩種 塊內元素,行內元素。行內元素的特點 span標籤 豎直margin中的塌陷現象,上下緊密排列的元素的外邊距並不是兩個元素外邊距之和,而是選取那個最大的外邊距作...

Spring IOC原理理解

ioc,inversion of control,控制倒轉。這是spring的核心,貫穿始終。所謂ioc,對於spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係。di,dependency injection,依賴注入。在系統執行中,動態的向某個物件提供它所需要的其他物件...