論文:A Survey on Instance Segmentation: State of the art
目標檢測( Object detection)不僅需要提供圖像中物體的類別,還需要提供物體的位置(bounding box)。語義分割( Semantic segmentation)需要預測出輸入圖像的每一個像素點屬於哪一類的標簽。實例分割( instance segmentation)在語義分割的基礎上,還需要區分出同一類不同的個體。
本文主要介紹實例分割的背景( background),問題( issues),技巧方法( techniques),進展( evolution),熱門的數據集( popular datasets),最先進的相關工作( related work up to the state of the art)和未來的發展方向( future scope)。
1. Introduction
1.1 Background
物體分類只要預測出圖像中出現的物體的類別;目標檢測( Object detection)不僅需要提供圖像中物體的類別,還需要提供物體的位置(bounding box)。語義分割( Semantic segmentation)需要預測出輸入圖像的每一個像素點屬於哪一類的標簽。實例分割( instance segmentation)在語義分割的基礎上,還需要區分出同一類不同的個體。如下圖Figure 1所示。
注:作者給出語義分割(c)與實例分割(d)的示意圖應該是弄反了。
1.2 Issues
對於語義分割( semantic segmentation),我們希望分割精度( segmentation accuracy)和分割效率( segmentation efficiency)都達到一個比較好的程度。好的分割精度主要表現在定位的精確和物體類別識別的准確;好的分割效率指的是在可接受的內存/存儲的情況下,時間達到實時。
用於分割的目標檢測器的重要組成部分之一是良好的特征表示( good feature representation),它在目標檢測中其中至關重要的作用。以前,有一些手工設計的特征,如SIFT,HOG等;目前大都是使用CNN來提取特征。
基於CNN的檢測器,如RCNN,Faster RCNN和YOLO等,通常使用最上的CNN層作為物體的表示。不過存在一個問題,就是物體的尺度變化很大,這對檢測任務是一個難點。解決這個問題的其中一個方法是使用圖像金字塔( pyramid of images),但是這個方法比較耗資源和耗時。
實例分割目前存在的一些問題和難點。
-
小物體分割問題。深層的神經網絡一般有更大的感受野,對姿態,形變,光照等更具有魯棒性,但是分辨率( resolution)比較低,細節也丟失了;淺層的神經網絡的感受野比較窄,細節比較豐富,分辨率比較大,但缺少了語義上的信息。因此,如果一個物體比較小時,它的細節在淺層的CNN層中會更少,同樣的細節在深層網絡中幾乎會消失。解決這個問題的方法有dilated convolution和增大特征的分辨率。
-
處理幾何變換( geometric transformation)的問題。對於幾何變換,CNN本質上並不是空間不變的( spatially invariant)。
-
處理遮擋( occlusions)問題。遮擋會造成目標信息的丟失。目前提出了一些方法來解決這個問題,如 deformable ROI pooling,deformable convolution和 adversarial network。另外,也可能可以使用GAN來解決這個問題。
-
處理圖像退化( image degradations)的問題。造成圖像退化的原因有光照,低質量的攝像機和圖像壓縮等。不過目前大多數數據集(如ImageNet,COCO和PASCAL VOC等)都不存在圖像退化的問題。
2. Instance Segmentation Techniques: A Taxonomy
2.1 Classification of mask proposals
下圖Figure2 展示了 Classification of mask proposals的大體框架。
2.1.1 Bottom-up Mask Proposals
在COCO推廣之前,現代意義的實例分割是由 Hariharan等人(見論文: Simultaneous detection and segmentation)引入的。提出的方法包括mask proposals的生成,然后對這些生成的proposal進行分類。早期的時候,這種mask proposal的分類方法在其他很多地方使用。比如說Selective Search,可以用該方法獲取box detection並用於語義分割;該方法也同樣可以用於實例分割上。
2.1.2 Deep Learning
在深度學習熱門之前,一般依賴於 bottom-up mask proposal的生成。后來,該方法就被新的結構替代了,如RCNN。盡管RCNN有比較高的分割精度,但是也有一些缺點。比如,RCNN訓練時是多階段的,每一階段需要分開訓練,比較慢,並且比較難優化。后來,Fast RCNN和Faster RCNN等解決了這些問題。
2.2 Detection followed by segmentation
The popular approach for instance segmentation involves object detection using a box followed by object-box segmentation。
下圖Figure 3展示了這種方法的大體框架。
2.2.1 Mask Based Techniques
其中一個比較成功的方法是Mask RCNN。Mask RCNN是在Faster RCNN的基礎上進行改進的,增加了一個簡單的mask predictor。Mask RCNN訓練更加容易,有更好的泛化性,並且在Faster RCNN上只需增加一點點的計算量。Mask RCNN最終精度也是不錯的。
2.2.2 Other Techniques
檢測目標bounding box,下面方法也會使用:
-
sliding-window techniques
-
region-based techniques
2.3 Labelling pixels followed by clustering
該方法包括將每一個圖像像素點進行分類標注。接下來是使用聚類算法將像素分組到對象實例中。總體框架如下:
該方法得益於語義分割的積極發展,可以預測高分辨率的object mask。相比於 detection-followed-by-segmentation方法,該方法的精度較低;另外由於像素標記需要密集的計算,通常需要更多的算力。
2.4 Dense sliding window methods
該方法的總體架構如下:
2.4.1 Class Agnostic Mask Generation Techniques
這些方法使用密集滑動窗口( dense sliding-window)的方法來生成CNN的mask proposal,比如DeepMask和InstanceFCN等。
2.4.2 TensorMask
與2.4.1提到的方法不同, TensorMask使用了一個新的架構並且有更好的效果。TensorMask涉及對多個類進行分類,這是與預測mask並行完成的。該特點也對實例分割很有用。該方法在COCO上有不錯的表現,但是算法的復雜度比較高。
下面的表格Table 1是對Section 2的一個總結。
3. The Evolution of Instance Segmentation
Section 2部分提到了很多算法,這些算法提出的時間線如下圖Figure 6。
3.1 RCNN
RCNN是一篇比較早的使用CNN來做實例分割的。該方法結合了AlexNet和selective search的region proposal方法。訓練RCNN的包括如下步驟:
-
使用selective search計算region proposals
-
使用region proposals來fine-tune一個已經預訓練好的CNN模型,如AlexNet
-
CNN提取到特征之后,利用SVM分類器來對不同類別分類
RCNN雖然有較高的精度(當時而言),但是也有很多缺點,如多階段的訓練比較慢也比較難(不同階段需要單獨訓練);訓練SVM分類器和BBox regressor也是分開的,這導致需要更多的資源和時間;另外,測試也很慢,每一個object proposal都需要經過一遍CNN來提取特征。后續,Fast RCNN和Faster RCNN針對這些缺點做出了改進。
3.2 Fast RCNN
Fast RCNN解決了一部分RCNN的缺點,也提高了目標檢測的精度。Fast RCNN使用端到端的訓練方法。它同時學習sofamax分類器和特定類的bbox回歸,而不是像RCNN那樣單獨訓練模型的各個部分。Fast RCNN采用共享卷積和ROI pooling 的方法來提取region proposal的區域特征。這種方法可以大大加快訓練速度。
3.3 MultiPath Network
見論文: Zagoruyko S, Lerer A, Lin T-Y, Pinheiro PO, Gross S, Chintala S, Dollár P (2016) A multipath network for object detection. arXiv preprint arXiv:160402135
3.4 Faster RCNN
見論文: Ren S, He K, Girshick R, Sun J (2017) Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. IEEE Transactions on Pattern Analysis and Machine Intelligence 39 (6):1137-1149. doi:10.1109/TPAMI.2016.2577031
3.5 Mask R-CNN
見論文: He K, Gkioxari G, Dollar P, Girshick R (2018) Mask R-CNN. IEEE transactions on pattern analysis and machine intelligence. doi:10.1109/tpami.2018.2844175
3.6 MaskLab
見論文: Chen L, Hermans A, Papandreou G, Schroff F, Wang P, Adam H MaskLab: Instance Segmentation by Refining Object Detection with Semantic and Direction Features. In: 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition, 18-23 June 2018 2018. pp 4013-4022.
doi:10.1109/CVPR.2018.00422
3.7 Non-local Neural Networks
見論文: Wang X, Girshick R, Gupta A, He K Non-local Neural Networks. In: 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition, 18-23 June 2018 2018. pp 7794-7803. doi:10.1109/CVPR.2018.00813
3.8 Path Aggregation Network (PANet)
見論文: Liu S, Qi L, Qin H, Shi J, Jia J Path aggregation network for instance segmentation. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2018. pp 8759-8768
3.9 Hybrid Task Cascade
見論文: Chen K, Pang J, Wang J, Xiong Y, Li X, Sun S, Feng W, Liu Z, Shi J, Ouyang W (2019) Hybrid task cascade for instance segmentation. arXiv preprint arXiv:190107518
3.10 GCNet
見論文: Cao Y, Xu J, Lin S, Wei F, Hu H (25 Apr 2019) GCNet: Non-local Networks Meet SqueezeExcitation Networks and Beyond. doi:arXiv:1904.11492v1
3.11 YOLACT
見論文: Bolya D, Zhou C, Xiao F, Lee YJ (2019) YOLACT: Real-time Instance Segmentation. arXiv preprint arXiv:190402689
3.12 Mask Scoring R-CNN
見論文: Huang Z, Huang L, Gong Y, Huang C, Wang X (2019) Mask Scoring R-CNN. arXiv e-prints
3.13 TensorMask
見論文: Chen X, Girshick R, He K, Dollár P (2019) TensorMask: A Foundation for Dense Object Segmentation. arXiv preprint arXiv:190312174
4. Datasets
下面介紹一些熱門的實例分割的2D圖像數據集(2D圖像指灰度圖像或者RGB圖像)。
-
Microsoft Common Objects in Context (COCO) Dataset。提供了82783張訓練圖像,40504張驗證集圖像,超過80000張的測試圖像;包含80類物體。
-
Cityscapes Dataset。該數據集是一個城市-街道-場景( urban-street-scene)圖像的大集合。它側重於對街景的語義理解。該數據集提供了語義標注,特定實例的標注和特定像素的標注,包含5000張標注良好的圖像和20000張粗略標注的圖像。
-
The Mapillary Vistas Dataset (MVD)。該數據集是另外一個大型的街景圖像數據集。它包含25000張標注好的圖像,66個類別。
5. Summary and Discussion
在這一部分,我們主要討論基於深度學習的實例分割出現的關鍵因素和問題。
5.1 Detection frameworks: Two Stage versus Single Stage
如果以階段數作為框架分類的方法,那么可以分為二階段( Region based)和一階段( unified framework)。
如果計算資源比較豐富,那么兩階段框架比單階段框架有更好的精度。這是因為兩階段的框架更加靈活,更加適合於 region based detection,如 Mask RCNN。
一階段的檢測器,如YOLO,通常比兩階段的檢測器速度上更快,這是因此一階段檢測器缺少了預處理,backbone比較輕量,候選區域個數也更少,並且使用全卷積。然而一階段框架相比於二階段框架比較難檢測小目標。
為了提高檢測器的精度與效率,大家做了很多嘗試,最終導致一些關鍵的設計選擇趨同:
-
全卷積網絡框架
-
從相關任務中探索互補的信息,如Mask RCNN
-
使用滑動窗口
-
主干網絡中多層信息的融合
5.2 Backbone networks
主干網絡對精度上的影響是一個很重要的因素。盡管如ResNet、ResNext等深度網絡很成功,但是這些都比較耗計算資源。
5.3 Improvement in robustness of representation of objects
遇到的問題以及解決方法。
-
目標的大小/尺度( Object Size/Scale)。尤其是小目標,姿態等是難點。解決方法有如下:
-
使用圖像金字塔( image pyramids)
-
使用不同卷積層不同分辨率的特征
-
在網絡中提高分辨率( Up-scaling to better resolution)來檢測小目標
-
遮擋、形變和其他因素( Occlusion, deformation and other factors)。
-
使用空間轉換網絡( spatial transformer network)。 該方法利用回歸得到變形區域,然后根據變形區域對特征進行變形。
-
旋轉問題在實際環境中經常出現,但是熱門數據集(如COCO)中沒有旋轉角度很大的情況
-
遮擋問題在本領域研究比較少
5.4 Detection proposals
檢測方案大大減少了實例分割候選對象的搜索空間。其中RPN是一個不錯的方案。
5.5 Strengths and weaknesses with various Instance Segmentation Techniques
各種實例分割技術的優缺點如下表Table 3.