如何評價 Kaiming He 最新的 Mask R-CNN?

https://arxiv.org/pdf/1703.06870.pdf

Abstract: We present a conceptually simple, flexible, and general framework for object instance segmentation. Our approach efficiently detects objects in an image while simultaneously generating a high-quality segmentation mask for each instance. The method, called Mask R-CNN, extends Faster R-CNN by adding a branch for predicting an object mask in parallel with the existing branch for bounding box recognition. Mask R-CNN is simple to train and adds only a small overhead to Faster R-CNN, running at 5 fps. Moreover, Mask R-CNN is easy to generalize to other tasks, e.g., allowing us to estimate human poses in the same framework. We show top results in all three tracks of the COCO suite of challenges, including instance segmentation, bounding-box object detection, and person keypoint detection. Without tricks, Mask R-CNN outperforms all existing, single-model entries on every task, including the COCO 2016 challenge winners. We hope our simple and effective approach will serve as a solid baseline and help ease future research in instance-level recognition. Code will be made available.


Mask-RCNN 的結果在不加任何 trick 的情況下能夠超過各種數據增強加持下的 COCO 2016 分割挑戰的冠軍 FCIS 了,一個特點就是 Mask-RCNN 的檢測和分割是並行出結果的,而不像以前是分割完了之後再做分類,結果是很 amazing 的。

Mask-RCNN 大體框架還是 Faster-RCNN 的框架,可以說在基礎特徵網路之後又加入了全連接的分割子網,由原來的兩個任務(分類+回歸)變為了三個任務(分類+回歸+分割)

主要改進點在:

1. 基礎網路的增強,ResNeXt-101+FPN的組合可以說是現在特徵學習的王牌了

2. 分割 loss 的改進,由原來的 FCIS 的 基於單像素softmax的多項式交叉熵變為了基於單像素sigmod二值交叉熵,經 @Oh233同學指正 ,softmax會產生FCIS的 ROI inside map與ROI outside map的競爭。但文章作者確實寫到了類間的競爭, 二值交叉熵會使得每一類的 mask 不相互競爭,而不是和其他類別的 mask 比較 。

3. RoIAlign 層的加入,說白了就是對 feature map 的插值,直接的ROIPooling的那種量化操作會使得得到的mask與實際物體位置有一個微小偏移,個人感覺這個沒什麼 insight,就是工程上更好的實現方式

文章還指出在物體檢測中,Mask-RCNN 比一般的 state-of-the-art 方法(用Fatser-RCNN+ResNet-101+FPN實現)在 bounding-box 的 AP 上高3.6個點,1.1來自ROIAlign,0.9來自多任務訓練,1.6來自更好的基礎網路(ResNeXt-101)

說一點個人愚見,這麼好的效果是由多個階段的優化實現的,大頭的提升還是由數據和基礎網路的提升:多任務訓練帶來的好處其實可以看作是更多的數據帶來的好處;FPN 的特徵金字塔,ResNeXt更強大的特徵表達能力都是基礎網路

源碼出來之後才能知道更多的細節~


為什麼不仔細讀一下在膜拜大神呢?

Mask RCNN 是基於Kaiming 之前的工作 FPN (Feature Pyramid Network) 很形象地說就是用FPN產生的檢測結果, 後面加了一個分割的網路.

文章中用到了 Top-Down + Bottom-Up 最近很流行的多層網路, 因為最開始Faster-RCNN只是在最後一層上面檢測, 很容易丟掉小目標物體, 並且對細節遮擋也很不敏感. 最近的趨勢就是結合多層 特徵, 答主孔濤就很早發現了這個insight, 做出了HyperNet 並中了CVPR roal!!!

Top-Down + Bottom-Up 結構比HyperNet更進一步, 乾脆不簡單地拼合多層特徵了, 再做一層"反卷積(把圖片增大的卷積, 和卷積沒本質區別)" 把高層特徵帶到低層次去, 這樣低層次既有細節又有語義. 這樣的做法進一步提高了coco上的性能 大約5個點吧. 和FPN一起出來的還有Google一個工作 Top-Down Modulation for Object Detection.

Kaiming的另外一個發現是用 class-wise 的 binary loss 比以往多分類的softmax with entropy loss更有用, 很小的改進就提升了幾個點.

btw 另外大家現在都不在 VOC上做了, 主要目標轉到了coco, 有更多的小物體, 更挑戰, 更多的數據 (14萬) 標註.

這項工作不足之處也很多, FPN最大的問題就是就是它的最好地方, 巨大搜索空間, 原來Faster RCNN 只有上千個anchors(初始化區域), FPN是數十萬級別! 用python單單生成這些候選區域都要0.05s, cython加速也只做到0.01s.

這個工作只是開始, 肯定不是終點. 不過彎道超車的確極難. 前面的Google FB MSRA 都有上千GPU 上TB的ImageNet 眾多實習生和數位大神 ...

在嘗試實現 Mask RCNN (in progress), 有興趣的可以關注一下 CharlesShang/FastMaskRCNN


(抖機靈的回答,沒有乾貨)
謝邀,等代碼吧,Facebook在計算機視覺上的人才積累,說句大話,基本上沒有別的公司比得過了。


Kaiming大神對我打擊最大的,不是Dark Channel去霧,不是Faster R-CNN, 也不是ResNet,不是Mask R-CNN。而是

有一次看到他說他忙裡偷閒就上了個傳說。。。

對於常年低保用戶,感覺到一股真切的智商碾壓。。


Mask R-CNN 這個結果確實很強,但要同時注意它主要是加上了許多(都是很有用的)engineering techniques 。

比如說 anchor 從 12 增加到了15個,圖像 size 從600變成了800,還有ROI batch size變到了512,從FPN那篇paper來看,這些 better practice 會有對性能十分明顯的提升 (table 3 baseline: AP=26.3 -&> 31.6)。

而我們組16年的coco分割競賽冠軍 ,Fully Convolutional Instance-aware Semantic Segmentation (FCIS)的代碼昨晚終於開源了。限於計算資源,我們並沒有加上這些改進。這些改進應該是比較 general 的,也會適用於 FCIS。歡迎大家試用一波。

FCIS 提供了一種簡單高效的框架去解決 instance segmentation 的問題。跟之前 COCO 2015 的冠軍 MNC 相比,它的主要不同在於 mask estimation 和 detection 是共同做的,而不是先估計 mask 再做 detection。在 FCIS 中 detection/mask estimation 之間通過 inside/outside score map 互相影響,利用了這兩個緊密相連 task 之間的共性。

現在 release 版本基於支持多卡訓練的MXNet,msracver/FCIS。實際上大概今年一月份我們就已經寫出了外面可以使用的Caffe版本,但是當時官方 Caffe 只支持單卡做複雜任務的訓練,對於COCO這種大規模數據集來說用單卡訓練的話一下子幾周的時間就過去了。考慮到大家用起來會非常蛋疼,最後還是決定沒有release這個版本。


謝幾位童鞋邀,本身自己是做這個方向的,最近忙著開題的事情,也沒來得及回答。

對於Mask R-CNN其實沒什麼可評價的,在這裡我想說的是當我等小輩還在想著怎麼復現大神的此時工作的時候,大神應該在做更加有意思的work。另外,看起來FPN只是中了poster,我比較好奇今年cvpr在object detection/recognition這個section的oral都做到了什麼水平。


坐等代碼!

RBG再來一發RPG,從DPM,RCNN,fast-RCNN到faster-RCNN,現在又來個mask-RCNN, 已經霸佔這個子方向快10年了!!

幸虧當年自己做Pascal VOC的時候是做的classification還有segmentation。 不過現在classification快被Kaiming的Resnet系列搞定,detection已經被壟斷10年了,現在這倆人居然還聯手!!!別人怎麼玩!!感覺做detection這個方向的PHD趁早轉行得了,這還做個毛線!


文章下載地址:Mask R-CNN

1 簡述

Mask R-CNN是一個小巧、靈活的通用對象實例分割框架(object instance segmentation)。它不僅可對圖像中的目標進行檢測,還可以對每一個目標給出一個高質量的分割結果。它在Faster R-CNN[1]基礎之上進行擴展,並行地在bounding box recognition分支上添加一個用於預測目標掩模(object mask)的新分支。該網路還很容易擴展到其他任務中,比如估計人的姿勢,也就是關鍵點識別(person keypoint detection)。該框架在COCO的一些列挑戰任務重都取得了最好的結果,包括實例分割(instance segmentation)、候選框目標檢測(bounding-box object detection)和人關鍵點檢測(person keypoint detection)。

2 結構

一共可以分為兩個分支:

(1)第一個分支為原始Faster R-CNN的結構,它用於對候選窗口進行分類和窗口坐標回歸。(2)第二個分支對每一個感興趣區域(Region of Interest,RoI)預測分割掩模,它利用了一個小的全卷積網路結構[2](Fully Convolutional Network,FCN)。

3 主要關鍵因素

關鍵點1:解決特徵圖與原始圖像上的RoI不對準問題

問題描述:RoIPool[3]是一種針對每一個RoI的提取一個小尺度特徵圖(e.g. 7x7)的標準操作,它用以解決將不同尺度的RoI提取成相同尺度的特徵大小的問題。RoIPool首先將浮點數值的RoI量化成離散顆粒的特徵圖,然後將量化的RoI分成幾個空間的小塊(spatial bins),最後對每個小塊進行max pooling操作生成最後的結果。該操作類似於下圖,但只取了一個尺度。

通過計算[x/16]在連續坐標x上進行量化,其中16是特徵圖的步長,[ . ]表示四捨五入。這些量化引入了RoI與提取到的特徵的不對準問題。由於分類問題對平移問題比較魯棒,所以影響比較小。但是這在預測像素級精度的掩模時會產生一個非常的大的負面影響。

解決方案:作者提出RoIAlign層來解決這個問題,並且將提取到的特徵與輸入對齊。方法很簡單,避免對RoI的邊界或者塊(bins)做任何量化,例如直接使用x/16代替[x/16]。作者使用雙線性插值(bilinear interpolation)在每個RoI塊中4個採樣位置上計算輸入特徵的精確值,並將結果聚合(使用max或者average)。

關鍵點2:將掩模預測和分類預測拆解

該框架對每個類別獨立地預測一個二值掩模,沒有引入類間競爭,每個二值掩模的類別依靠網路RoI分類分支給出的分類預測結果。這與FCNs不同,FCNs是對每個像素進行多類別分類,它同時進行分類和分割,基於實驗結果表明這樣對於對象實例分割會得到一個較差的性能。

下面介紹一下更多的細節,在訓練階段,作者對於每個採樣的RoI定義一個多任務損失函數,前兩項不過多介紹。掩模分支對於每個RoI會有一個維度的輸出,它編碼了K個解析度為的二值掩模,分別對應著K個類別。因此作者利用了a per-pixel sigmoid,並且定義為平均二值交叉熵損失(the average binary cross-entropy loss)。對於一個屬於第k個類別的RoI,僅僅考慮第k個mask(其他的掩模輸入不會貢獻到損失函數中)。這樣的定義會允許對每個類別都會生成掩模,並且不會存在類間競爭。

關鍵點3:掩模表示

一個掩模編碼了一個輸入對象的空間布局。作者使用了一個FCN來對每個RoI預測一個的掩模,這保留了空間結構信息。

對於以上幾個關鍵點,作者在表格2中給出了詳細的性能比較。

針對關鍵點1:

針對關鍵點2:

針對關鍵點3:

4 結果展示與性能對比

[1] Faster R-CNN: To- wards real-time object detection with region proposal net- works. In NIPS, 2015.

[2] Fully convolutional networks for semantic segmentation. In CVPR, 2015.

[3] Fast R-CNN. In ICCV, 2015.


原文地址:Mask R-CNN個人理解 - 知乎專欄


大批博士正在轉行中......


預告:一篇工業級小黃文!!!「Ross,Wherever you are,my home is there.(你在哪,我的家就在哪。)」 ----Kaiming He

大神的世界繽紛又多彩,接下來我要開扒了。

你們在認真看嗎,溫馨提醒,後面很驚人的同人文。

好,我要開始了。
...

--------------------基情滿滿的分割線-----------------
好吧,其實是篇科普文。你們點進來看的只能夠收穫一堆乾貨,而不是情色小說。
由於第二天大早上學弟要做presentation,他打算講這篇論文。然後恰好無聊,於是學弟帶著本弱渣一起連夜重看了舊的三篇論文rcnn、fast rcnn、faster rcnn以及這篇新的mask rcnn。早上起床寫篇知乎替學弟整理下整個系列,舒緩下想要編曲的衝動。
四篇論文層層遞進的關係,我先簡單講下前三篇的工作吧。然後再簡單講mask rcnn的工作。
第一篇是rcnn是ross girshick在UCB Darrell組的時候的工作,這篇論文主要是先selective search去選出若干proposals,然後resize到同一個scale放入alexnet類似的網路抽特徵,加k個svm或者softmax得到分類結果。然後測試階段走個非極大值抑制的演算法去得到結果。整個網路是最初始化的rcnn,很多人都覺得思路很簡單,不過在那個時候算是最開始利用CNN做detection的一批。

第二篇RBG去了MSR,然後單手擼了一篇改進版fast rcnn。看看paper作者那欄,一個人孤單寂寞的編曲。。。還是基於ss得到的proposals,這篇論文重點在roipool那部分,怎麼做呢?參考論文2.1求得sub-windows大小之後,劃分為7*7的grid。這樣無論你的RoI的scale多大,都可以map到同一個size。這樣你可以把之前2000次前向,縮減到只有一次前向就可以得到若干個roi部分的特徵,然後跟兩個sibling layers,一個做分類,一個回歸bb。這樣測試階段比第一篇節省了很多很多時間。

第三篇論文Ross開始和MSRA的學者合作了,shaoqing、kaiming、jian sun等。終於不再孤單的編曲。。。這篇論文基於fast rcnn幹了這麼一個事情,把selective search那種很傻很笨的辦法用RPN的網路取代了。然後這個RPN網路可以直接在一個完整的網路中給ROIpool那塊提供proposal的信息。訓練過程中,RPN的region proposal的task和object detection的task部分實際上是交替訓練的。另外看論文圖三那個最重要的圖示,他在top的conv feature maps那裡接一個3*3的sliding windows。這部分本身receptive fields比較大嘛~然後作者在這裡加了9種anchors的變化,對應圖一c中的multi scale。這樣之後再sibling layers然後做是不是object的score和坐標回歸。整個思路就是加了這些。

第四篇論文,也就是知乎提問的mask rcnn。此時此刻,RBG去了FAIR,而kaiming又和RBG重逢了,滿滿的基情就是你在哪,我的paper就跟你一起掛在哪。實際上本篇就在第三篇faster rcnn基礎上加了roialign部分【這一部分實際上是對roipool的改進】,以及加了一個segmentation的branch。為什麼roipool不好呢?因為在你roi縮到7*7的過程中,如果你roi剛好是8*7的大小,那麼你按w/W,h/H取整縮小是不是漏了幾個pixel,這幾個pixel對應的receptive field確是很大的,帶來所謂的misalignment。那麼怎麼辦?好,借鑒STN論文裡面的雙線性插值,我把8*7的大小擴大到14*14,然後再做聚合,到7*7的大小。這樣就充分利用了那個被忽略了的部分。(這部分細節上可能我理解不對,具體要等ross源碼公布了再能確定,如有錯誤,希望指出)。然後看論文圖三,就可以分出一個branch給segmentation的部分,這部分deconv做到28*28之後,直接resize到roi的大小,然後參考第三頁左下角,用per-pixel sigmoid和binary loss的方式優化。

好了,其實kaiming大大沒有說過那句話,只是覺得從faster rcnn到mask rcnn,kaiming大大和ross大大一路基情滿滿。從MSR一起跳到FAIR,然後又一起在兩個單位合作論文。祝福你們越來越偉大!(′?_?`)
btw本來打算寫篇同人文,結果歪樓了。對不住了老鐵


文章是篇好文章,剛剛拜讀完畢,不過代碼還沒有放出來,大概的思想明白了,有些細節東西還是要等code放出來之後仔細揣摩一下才能知道,坐等代碼~~~~~~~


很想復現一個


看了論文之後只想說我好激動啊,KGR三位大神又搞出了大新聞!

現在馬上就想復現,上次有這種衝動的還是在resnet,再次膜拜三位大神Orz。

RoiAling/parallel multitask/pixel classification to class mask....文中對比做的非常細緻,非常值得仔細閱讀。另外特別吸引人的是是訓練單機僅需要兩天,可以預見Mask r-cnn會成為後續DET/SEG/PE等領域的新baseline。


從去年就開始追msra的 FCIS,覺得目標檢測和分割結合的instance seg絕對是未來熱門的方向,那效果圖太迷人了,結果FCIS等了半年,代碼還沒放出來,急得哥一天看一遍github。

對於諸神之作Mask R-CNN,不想多說,只想說:趕緊開源代碼,讓我等屁民開開眼。


Mask R-CNN 第一份開源代碼剛剛由圖森放出,MXNet實現的,大家可以參考學習。 https://github.com/TuSimple/mx-maskrcnn


看這個 : Facebook 最新論文:Mask R-CNN實例分割通用框架,檢測,分割和特徵點定位一次搞定(多圖)

Mask R-CNN是Faster R-CNN的擴展形式,能夠有效地檢測圖像中的目標,同時還能為每個實例生成一個高質量的分割掩碼。

Mask R-CNN 的優點:

  • 由於目前已有許多設計良好,可用於Faster R-CNN的構架,因此,作為Faster R-CNN的擴展,Mask R-CNN在應用時也沒有阻礙;
  • 考慮到掩碼層只給整個系統增加一小部分計算量,所以該方法運行起來非常高效;
  • Mask R-CNN 還可以很容易泛化到其它任務上。比如,可以在同一個框架中估計人物的動作。

在COCO測試中可以看到,Mask R-CNN 在實例分割、邊界框目標檢測和人物關鍵點檢測這三個難點上都獲得了較好的實驗效果,並且比每個現有的獨立模型,包括 COCO 2016 挑戰賽的獲勝模型,表現都要好。

Mask R-CNN在 COCO 測試集上的測試結果。結果顯示,Mask R-CNN能用 ResNet-101,在 5 fps 的度下實現 35.7 的 mask AP。圖上不同的顏色表示不同的掩碼,另外也給出的邊界框、類別和置信度。

用Mask R-CNN (ResNet-50-FPN)在COCO測試上進行關鍵點測試。該模型在 5 fps 條件下實現了 63.1 的關鍵點 AP。


他們幾個神牛還老聯手,讓別人怎麼玩。。。


這又是一個系列?
後面應該要有大拿們更進
Fast Mask RCNN,
Faster Mask RCNN?


真是神師出高徒(? ??_??)?
加上訓練的時間,三天就復現了


簡直無解,這種像素級分割是不是讓做物體識別的感到絕望?


推薦閱讀:

怎麼及時掌握/把握深度學習的發展動向和狀態?
Instance Segmentation 比 Semantic Segmentation 難很多嗎?
如何評價李飛飛和李佳加盟谷歌?
如何通俗易懂地講解 Photoshop 中的「通道」概念?

TAG:計算機視覺 | 深度學習(Deep Learning) | 卷積神經網路(CNN) |