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中只使用了一種粒度的特徵圖:atom

mark

平面示意圖以下:spa

mark

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

16的量化的步長, [·]

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

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

mark

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

總結

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

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

相關文章
相關標籤/搜索