TF實戰:(Mask R-CNN原理介紹與代碼實現)-Chapter-8


二值掩膜輸出依據種類預測分支(Faster R-CNN部分)預測結果:當前RoI的物體種類為 i
i個二值掩膜輸出就是該RoI的損失 Lmask

mark

對於預測的二值掩膜輸出,我們對每個像素點應用sigmoid函數,整體損失定義為平均二值交叉損失熵。
引入預測K

個輸出的機制,允許每個類都生成獨立的掩膜,避免類間競爭。這樣做解耦了掩膜和種類預測。不像是FCN的方法,在每個像素點上應用softmax函數,整體采用的多任務交叉熵,這樣會導致類間競爭,最終導致分割效果差。

掩膜表示到RoIAlign層

在Faster R-CNN上預測物體標簽或bbox偏移量是將feature map壓縮到FC層最終輸出vector,壓縮的過程丟失了空間上(平面結構)的信息,而掩膜是對輸入目標做空間上的編碼,直接用卷積形式表示像素點之間的對應關系那是最好的了。

輸出掩膜的操作是不需要壓縮輸出vector,所以可以使用FCN(Full Convolutional Network),不僅效率高,而且參數量還少。為了更好的表示出RoI輸入和FCN輸出的feature之間的像素對應關系,提出了RoIAlign層。

先回顧一下RoIPool層:

其核心思想是將不同大小的RoI輸入到RoIPool層,RoIPool層將RoI量化成不同粒度的特征圖(量化成一個一個bin),在此基礎上使用池化操作提取特征。

下圖是SPPNet內對RoI的操作,在Faster R-CNN中只使用了一種粒度的特征圖:

mark

平面示意圖如下:

mark

這里面存在一些問題,在上面量操作上,實際計算中是使用的是[x/16]

16的量化的步長, [·]

是舍入操作(rounding)。這套量化舍入操作在提取特征時有着較好的魯棒性(檢測物體具有平移不變性等),但是這很不利於掩膜定位,有較大負面效果。

針對這個問題,提出了RoIAlign層:避免了對RoI邊界或bin的量化操作,在擴展feature map時使用雙線性插值算法。這里實現的架構要看FPN論文:

mark

一開始的Faster R-CNN是基於最上層的特征映射做分割和預測的,這會丟失高分辨下的信息,直觀的影響就是丟失小目標檢測,對細節部分丟失不敏感。受到SSD的啟發,FPN也使用了多層特征做預測。這里使用的top-down的架構,是將高層的特征反卷積帶到低層的特征(即有了語義,也有精度),而在MRCNN論文里面說的雙線性差值算法就是這里的top-down反卷積是用的插值算法。

總結

MRCNN有着優異的效果,除去了掩膜分支的作用,很大程度上是因為基礎特征網絡的增強,論文使用的是ResNeXt101+FPN的top-down組合,有着極強的特征學習能力,並且在實驗中夾雜這多種工程調優技巧。

但是吧,MRCNN的缺點也很明顯,需要大的計算能力並且速度慢,這離實際應用還是有很長的路,坐等大神們發力!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM