MaskXRCnn俨然成為一個現階段最成功的圖像檢測分割網絡,關于MaskXRCnn的介紹,需要從MaskRCNN看起。
當然一個煽情的介紹可見:何恺明團隊推出Mask^X R-CNN,将執行個體分割擴充到3000類。
MaskRCnn取得的精細結果有三個主要技術構架:DeepMask、SharpMask、MultiPathNet。MaskRCNN與普通FNN的典型不同之處,重要兩點為添加了SharpMask、MultiPathNet。
文章連結:FaceBook的物體檢測新架構研究
Index
一、DeepMask【Learning to Segment Object Candidates.2015 NIPS】DeepMask筆記
二、SharpMask【Learning to Refine Object Segments.2016 ECCV】SharpMask筆記
三、MultipathNet【A MultiPath Network for Object Detection.2016 BMVC】
FAIR開發了一項用于發現和切割單張圖像中每個物體的新技術,這一技術的主要驅動算法是DeepMask——一個新的圖像分割架構,以及SharpMask——一個圖像分割refine模型,二者結合使得FAIR的機器視覺系統能夠感覺并且精确的描繪一張圖檔中任何物體的輪廓。這一識别管道中的最後一步,研究院使用了一個特殊的卷積網絡,稱為MultiPathNet,為圖檔中檢測到的物體添加标簽。也就是說Facebook研究院的物體檢測系統遵循一個三階段的過程:(1)DeepMask生成初始物體mask(2)SharpMask優化這些mask(3)MutiPathNet識别每個mask框定的物體。
DeepMask證明了:訓練深度學習模型執行類别不可知掩碼預測任務(不考慮類别而預測目标掩碼)是不可能實作的。對于掩碼品質稍微損失的Mask R-CNN而言也是這樣。
- DeepMask的技巧是把分割看成是一個海量的二進制分類問題
-
- 對一張圖像中的每一個重疊的圖像塊:這個圖像塊包含一個物體嗎?如果包含,那對于一個圖像塊中的每個像素:這個像素是圖像塊中心物體的一部分嗎?用深度網絡來回答每一個Yes/No的問題
-
- 上層功能以相當低的空間分辨率計算,這為mask預測帶來一個問題:mask能捕捉一個物體大緻外形,但不能準确捕捉物體邊界。
- SharpMask優化DeepMask的輸出,産生具有更高保真度的能精确框定物體邊界的mask
-
- 在DeepMask預測前向通過網絡時,SharpMask反轉資訊在深度網絡的流向,并通過使用progressively earlier layers的特性來優化DeepMask做的預測。
-
- 要捕捉物體外形,你必須高度了解你正在看的是什麼(DeepMask);但是要準确框出邊界,你需要使用低層次的特性一直到像素級(SharpMask)
- DeepMask不知道具體對象類型,盡管可以框定但不能區分物體;以及沒有選擇性,會為不是很有趣的圖像區域生成mask
-
- 訓練一個單獨的深度網絡來對每一個DeepMask産生的mask的物體類型進行分類(包括“無”),采用R-CNN
-
- 改進是使用DeepMask作為R-CNN的第一階段。
-
- 對于RCNN的第二階段,使用一個專門的網絡架構來對每一個mask進行分類,也就是MultiPathNet,允許資訊以多種路徑通過網絡,進而使其能夠在多種圖像尺寸和圖像背景中挖掘資訊。
- MultiPathNet目的是提高物體檢測性能,包括定位的精确度和解決一些尺度、遮擋、叢集的問題。網絡的起點是Fast R-CNN。
-
- 基本上,MultiPathNet就是把Fast R-CNN與DeepMask/SharpMask一起使用,但是做了一些特殊的改造,例如:skip connections、foveal regions和integral loss function。
請繼續參考原文...............
MultiPathNet
A MultiPath Network for Object Detection
- intro: BMVC 2016. Facebook AI Research (FAIR)
- arxiv: http://arxiv.org/abs/1604.02135
- github: https://github.com/facebookresearch/multipathnet
原文連結: ******A MultiPath Network for Object Detection-分割網絡
CNN一般完成對框的檢測,而MaskRCNN則識别Mask。
有了DeepMask輸出的粗略分割mask,經過SharpMask refine邊緣,接下來就要靠MultiPathNet來對mask中的物體進行識别分類了。MultiPathNet目的是提高物體檢測性能,包括定位的精确度和解決一些尺度、遮擋、叢集的問題。網絡的起點是Fast R-CNN,基本上,MultiPathNet就是把Fast R-CNN與DeepMask/SharpMask一起使用,但是做了一些特殊的改造,例如:skip connections、foveal regions和integral loss function。
1.背景工作
顯然自從Fast R-CNN出現以來的object detector基本都是将它作為起點,進行一些改造,我們先來總結一下這些改造,以便了解本文的想法。Context核心思想就是利用物體周圍的環境資訊,比如有人在每個物體周圍crop了10個contextual區域輔助檢測。本文就是借鑒這種做法不過隻用了4個contextual區域,涉及特殊的結構。
Skip connections
Sermanet提出一個多階段的分類器利用許多個卷積層的特征來實作行人檢測,取得了很好的效果,這種‘skip’結構最近在語義分割方面也很火呐
Classifers
大家都知道現在基本上是CNN結構的天下啦。。。本文用的是VGG-D,如果和何凱明的ResNet結合效果應該會更好哒。
2.網絡結構
先上整個結構圖:

Foveal regions
像Fast R-CNN一樣,圖像先經過VGG16的13個卷積層生成conv feature map,然後經過RoI pooling層提取特征。從結構圖裡可以看到,對每個object proposal,都産生4個不同的region crops,相當于從不同的尺度來看這個物體,這就是所謂的‘foveal region’。
Skip connections
VGG16有四個pooling層,是以圖像尺寸會/16,那我們設想一個32*32大小的物體,經過VGG16就剩2*2了。雖然RoI pooling層輸出7*7的feature map,但是很顯然我們損失了太多的空間資訊 。
是以呢,要把conv3(/4*256)、conv4(/8*512)、conv5(/16*512)層的【RoI-pooled normalized 】feature級聯起來一起送到foveal分類器,這種級聯使得foveal分類器可以利用不同位置的特征,有種彌補空間資訊損失的味道在裡面呢~注意需要用1*1的卷積層把級聯特征的次元降低到分類器的輸入次元。
文章說,他們隻把conv3連接配接到1×的分類器head,conv4連接配接到1×、1.5×和2×的head。
- Integral Loss
在原來的Fast R-CNN中,如果一個proposal與一個ground-truth box的IoU大于50,那麼就給它配置設定ground-truth的标簽,否則就是0。然後在Fast R-CNN的分類loss裡面(用的是log loss),對所有proposal的IoU大于50的一樣對待,這其實有點不合理:我們希望IoU越大的對loss的貢獻越大吧~是以本文就用Integral loss代替了原來Fast-RCNN的分類loss:
那當然積分就要用加和的方式近似啦,本文選擇用n=6個不同的門檻值,是以現在對每一個object rpoposal實際上有n個ground-truth label了,每個門檻值一個~相應的每個門檻值應該也得有一個分類輸出的機率吧,是以我們看到結構圖最後有6個分類器。在inference的時候,每個分類器的softmax機率輸出求平均得到最終的class probabilities。
至此,Mask識别完成。
參考:
P. O. Pinheiro, R. Collobert, and P. Dollar. Learning to segmentobject candidates. In NIPS, 2015. 2, 3[33] P. O. Pinheiro, T.-Y. Lin, R. Collobert, and P.
P. O. Pinheiro, T.-Y. Lin, R. Collobert, and P . Doll´ar. Learningto refine object segments. In ECCV, 2016. 2, 3