1. 程式人生 > >Instance Segmentation 和 Semantic Segmentation

Instance Segmentation 和 Semantic Segmentation

本文轉自:
https://www.zhihu.com/question/51704852
周博磊 MIT博士在讀, AI and Computer Vision
收錄於 編輯推薦 •217 人贊同
最近也在做跟這個相關的問題,來分享一下自己的見解.

這裡寫圖片描述
圖1. 這張圖清楚說明了image classification, object detection, semantic segmentation, instance segmentation之間的關係. 摘自COCO dataset (https://arxiv.org/pdf/1405.0312.pdf)

Semantic segmentation的目的是在一張圖裡分割聚類出不同物體的pixel. 目前的主流框架都是基於Fully Convolutional Neural Networks (FCN,詳情見

https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf).FCN區別於物體識別網路諸如AlexNet最主要的差別是pixel-wise prediction,就是每個畫素點都有個probability, 而AlexNet是一張圖一個prediction.AlexNet或者VGG通過一個小的trick(caffe/net_surgery.ipynb at master · BVLC/caffe · GitHub)就可以轉變成FCN. 這裡有個八卦是當年FCN得到CVPR’15 best paper honorable mention的時候, Yann LeCun等人出來吐槽這個’FCN’的概念早就有了,AlexNet裡面的fully connected layer (FC)本身就是個誤導,因為FC layer可以看成是1x1的convolution, 本來就可以輸入任意大小的圖片.

Semantic segmentation的其他典型代表還有諸SegNet, Dilated Convolution Net, deconvolutionNet
等.這裡又有兩個八卦,比如SegNet相關的幾篇論文連續投了兩年多到現在都還沒中(作者要哭暈在廁所裡了),以及關於deconvolution, dilated convolution, atrous convolution這幾個概念的爭論(這裡有篇分析我覺得不錯Dilated Convolutions and Kronecker Factored Convolutions).在我個人使用過程中,相對於FCN等帶skip connection結構的網路,我更喜歡類似於Dilated Net這種桶狀結構的網路,原因是帶skip connection的網路由於需要normalize不同layer之間的activation, 比較難訓練. Liu Wei有一篇專門分析這個layer之間normalization trick的論文(

http://www.cs.unc.edu/~wliu/papers/parsenet.pdf).

切入正題,semantic segmentation把圖片里人所在的區域分割出來了,但是本身並沒有告訴這裡面有多少個人,以及每個人分別的區域.這裡就跟instance segmentation聯絡了起來,如何把每個人的區域都分別分割出來,是比semantic segmentation要難不少的問題.基於semantic segmentation來做instance segmentation的論文,大家可以看看Jifeng Dai最近的幾篇論文:https://arxiv.org/pdf/1512.04412v1.pdfhttps://arxiv.org/pdf/1603.08678v1.pdf. 大致做法是在dense feature map上面整合個instance region proposal/score map/RoI, 然後再分割.

這裡instance segmentation本身又是跟object detection是緊密相關的.最近Facebook放出來的DeepMask和SharpMask(GitHub - facebookresearch/deepmask: Torch implementation of DeepMask and SharpMask), 很明確地點出了兩者關係. 我之前跟Piotr Dollar也討論過這個問題, 他自己覺得: semantic segmentation is a bad direction, we should focus on object detection. 我不贊同他的觀點,但覺得還是挺有道理:) 這裡可以想象, 如果object proposal和object detection能做得非常好, instance segmentation本身這個問題就能比較好的解決. COCO detection challenge (COCO - Common Objects in Context) 裡面一個track, 就是要求predict segmentation mask rather than bbox, 可惜今年只有兩個隊參加(你參加的話再差都是第三喲:p) .

總結一下, instance segmentation其實是semantic segmentation和object detection殊途同歸的一個結合點, 是個挺重要的研究問題. 我非常期待後面能同時結合semantic segmentation和object detection兩者優勢的instance segmentation演算法和網路結構.

這裡寫圖片描述
圖2. Scene Parsing (MIT Scene Parsing Challenge 2016) from ADE20K dataset (ADE20K dataset). 每張圖的每個物體以及物體的物體都有清楚的標註.

最後,我個人覺得之所以大家猛搞semantic segmentation而忽略instance segmentation的一個原因是沒有好的資料集. pascal dataset裡面一張圖片裡的instance數量非常少, 而且物體種類也只有20種. 這裡自薦下我自己的工作, 我們組最近搞了個Scene parsing dataset and challenge (MIT Scene Parsing Challenge 2016). 這裡scene parsing跟semantic segmentation最大的不同是我們包含了150類概念類別(包括離散物體類別諸如person, car, table, 也包含了很多stuff類別, 如floor, ceiling, wall) , 圖片裡面每個pixel都需要被predict. 分割floor, ceiling, wall這些類對於robot navigation等應用也是非常重要,但是他們並沒有instance segmentation的概念. 今年我們的scene parsing challenge採用semantic segmentation的框架進行, 大家提出了不少新穎的模型, 也挺受歡迎 . 我們明年的scene parsing challenge (ICCV’17) 將設立instance segmentation track, 希望能推動instance segmentation 的進步.

再然後,其實semantic segmentation可以用到很多地方,比如說我們lab之前的一個PhD把這個用在medical imaging中癌症細胞的檢測和分割(https://people.csail.mit.edu/khosla/papers/arxiv2016_Wang.pdf),拿了獎,還開了自己的startup :)