Facebook的物體分割新框架研究4——MultiPathNet

Facebook的物體分割新框架研究4——MultiPathNet

相關文章:

Facebook的物體分割新框架研究1——寫在前面

Facebook的物體分割新框架研究2——DeepMask

Facebook的物體分割新框架研究3——SharpMask

MSRA Instace-aware semantic segmentation框架:InstanceFCN、R-FCN、FCIS

二、MultiPathNet【A MultiPath Network for Object Detection.2016 ECCV】

有了DeepMask輸出的粗略分割mask,經過SharpMask refine邊緣,接下來就要靠MultiPathNet來對mask中的物體進行識別分類了。MultiPathNet目的是提高物體檢測效能,包括定位的精確度和解決一些尺度、遮擋、叢集的問題。網路的起點是Fast R-CNN,所以如果你不知道Fast R-CNN是什麼,先閱讀博主關於Fast
R-CNN的筆記吧 關於Faster R-CNN的一切——筆記2: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【有人要問博主了,明明是conv1-5怎麼13層呢?咳咳,數字代表的其實是卷積層的通道數發生了變化,比如conv1其實代表兩個3*3,64kernel的卷積層;conv5代表三個3*3,512個kernel的卷積層。寶寶們請自行查閱VGG16的結構數數就明白了~】,然後經過RoI pooling層提取特徵【如果你還記得Fast
R-CNN的話,RoI pooling層其實就是一種把影象特徵對映到一個能夠描述regions的固定大小的feature map的方式~】。從結構圖裡可以看到,對每個object proposal,都產生4個不同的region crops,相當於從不同的尺度來看這個物體,這就是所謂的‘foveal region’【為啥這樣就能達到利用contextual資訊了呢?樓主覺得可能因為相同大小的RoI,物體尺寸變小,相應的包含進來的contextual資訊就多了吧~】。
  • 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分類器(這個說得太模糊了,博主只好暫停這篇paper,去看了這個【Inside-Outside Net:Detecting Objects in Context with Skip Pooling
and Recurrent Neural Networks.CVPR 2016】才搞清楚,不明白的寶寶也可以去看看),這種級聯使得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。
最後的實驗部分博主就不寫了~其實作者只是想在COCO集上提供一個baseline~所以大家還有很多改進空間吶。比如怎麼更好的利用環境資訊?
-The End-
  • Skip connections
VGG16有四個pooling層,所以影象尺寸