Mask RCNN論文筆記
Mask RCNN是大神Kaiming He的一大神作。
1、概述
Mask RCNN主要是再Faster RCNN上進行了一些調整(將RoIpooling層替換為了RoIAlign層),並且在RoIAlign後增加了一個進行instance segmentation的分支。
上圖展示了一個Mask RCNN的網路結構,用RoIAlign來代替RoIpooling部分,並且在分類與迴歸中添加了並列的分支FCN(mask層)
2、loss function
訓練中,文章定義了多個任務的損失是對每一個RoI有,其中的前兩個損失是同faster RCNN中一樣的定義,而第三個損失
3、RoIAlign【重點推薦:一篇不錯的文】
論文比較主要的地方是用RoIAlign來代替RoIpooling,因為原來的faster RCNN是無需做例項分割的,而例項分割是需要在pixel級別上有較高的精確度,但是因為RoIpooling的量化操作,使其對實力分割上的一個精度會比較低,因此作者就提出了使用RoIAlign來代替RoIpooling。
- RoIpooling的操作主要是為了將不同尺寸的feature map操作成尺寸一樣大小的feature。
- RoIAlign沒有像RoIpooling那樣做量化操作【in paper, use x/16 instead of round(x/16)】,並且使用了雙線性插值to compute the exact values of the input features at four regularly sampled locations in each RoI bin, and aggregate the result(using max or average)【具體細節等看完程式碼吧】
一張來自上面的連結博文的比較好的圖。【理解:RoIAlign的RoI的邊界無需量化取整,而是如圖中RoIAlign部分,將得到的RoIAlign,框的邊界仍然取浮點數,此時,在每個bin(最終需要得到的尺寸的規模為t*t,那麼有t*t個bins)中取樣四個點【平均取的四個點?】】,四個點的值由鄰近的feature map的pixel值通過雙線性插值法來取得,最後將這四個取樣點的值進行max或average來作為這個bin的值,最終可得到尺寸大小一樣的RoI所對應的更加精確的feature map區域值。 第三種方法是使用了積分的方法,連結博文中說會更加精確,但是會比較耗時。】
4、結果對比
5、Mask RCNN擴充套件——