MaskRCNN:三大基礎結構DeepMask、SharpMask、MultiPathNet

        MaskXRCnn儼然成爲一個現階段最成功的圖像檢測分割網絡,關於MaskXRCnn的介紹,須要從MaskRCNN看起。
git

        固然一個煽情的介紹可見:何愷明團隊推出Mask^X R-CNN,將實例分割擴展到3000類。github

        MaskRCnn取得的精細結果有三個主要技術構架:DeepMaskSharpMaskMultiPathNet。MaskRCNN與普通FNN的典型不一樣之處,重要兩點爲添加了SharpMaskMultiPathNet算法

        文章連接:FaceBook的物體檢測新框架研究
網絡

Index
架構

1、DeepMask【Learning to Segment Object Candidates.2015 NIPS】DeepMask筆記
2、SharpMask【Learning to Refine Object Segments.2016 ECCV】SharpMask筆記
3、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框定的物體。app

  • 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性能

原文連接: ******A MultiPath Network for Object Detection-分割網絡優化

        CNN通常完成對框的檢測,而MaskRCNN則識別Mask。spa

       有了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
相關文章
相關標籤/搜索