Instance Segmentation入門總結

前一陣子好忙啊,很久沒更新了。最近正好挖了新坑,來更新下。由於以前是作檢測的,而目前課題順道偏到了instance segmentation,這篇文章簡單梳理一下從檢測、分割結果到instance segmentation結果問題在哪裏,以及已有的解決方案。dom

初見instance segmentation

分類、檢測、分割是有自然的聯繫的:從目的來說,三個任務都是爲了正確的分類一張(或一部分)圖像;進一步,檢測和分割還共同負責定位任務。這些任務之間的不一樣是因爲人在解決同一類問題時,對問題的描述方案不一樣致使的,是人爲的。於是,能夠找到一種共同的描述(或任務),即instance segmentation。那麼,instance segmentation既然集成了上述3種任務,若是有上述3種任務的結果,是否是經過簡單組合就能夠獲得instance segmentation的結果呢?顯然是不行的。ide

 爲何不能夠呢?或者說須要補全什麼才能夠獲得instance segmentation的結果呢?咱們先從每一個任務分開來看,工具

  • 檢測:已經編碼了空間上的相關性,可是缺乏精細的定位(即segmentation mask)
  • 分割:已經具有了精細的定位,可是缺乏空間相關性

解釋一下空間上的相關性,它對於檢測和instance segmentation都很是重要。空間上的相關性即同一個像素因爲處在物體的不一樣相對位置,它對於不一樣物體可能語義並不相同,如圖中人的框雖然覆蓋了部分羊,可是該框並不會分到羊這個類別,而是分到了人,正是因爲空間上,羊沒並有主導整個框。既然如此,解決方案彷佛顯而易見了,缺什麼補什麼就好了。學習

經常使用instance segmentation範例

依然沿着以上思路,精細定位比較容易補出來,那麼空間相關性如何編碼呢?與檢測類似,能夠採用roi pooling或position sensitive map解決。因爲region是不規則的相似one-stage detection的anchor box的方案,就比較難實現了。咱們能夠開發出幾種不一樣的解決方案:優化

  • segmnetation-first:rank segmentation proposal, cut segmentation map
    • 使用分割結果做爲初步結果,進一步加工產生結果
  • instance-first
    • 使用bounding box做爲初步結果,而後在框內估計region mask
  • simutaneously
    • 藉助position-sensitive map同時產生instance segmentation和detection的結果

 對於每個方案,將簡要介紹一篇相關論文,加深理解。僅僅是爲了闡述明白每個解決方案,文章不是特別新,你們多包涵了。編碼

Segmnetation-first

Rank Segmentation Proposal: Simultaneous detection and segmentation [2] (2014)

這篇文章解決方案很是直接,對每一個segmentation proposal提取特徵,對他們進行分類,就能夠獲得instance segmentation的結果。採用兩種特徵:1)segmentation proposal bounding box內的特徵,2)以上特徵mask掉segmentation proposal的背景部分。spa

Cut Segmentation Map: Instancecut: from edges to instances with multi-cut [9] (2017)

也可藉助另一種方案使用segmentation map:利用邊緣圖對segmentation map進行分割,分割成不一樣的物體。[9]使用instance segmentation的標註訓練了邊緣檢測器,注意這裏的「邊緣」是boundary,而不是edge。而後,使用這個邊緣圖劃分超像素,以超像素爲單位對圖進行劃分和貼標籤。這裏假設了一個物體必定對應一個聯通域(這個假設是有問題的,有時候因爲遮擋等問題可能對應多個聯通域)。3d

 

其中,image partition採起非深度學習的方法進行求解,是CRF和multicut的結合。我本身對這部分的理解以下。orm

輸入有三種:blog

其中,u,v是兩個超像素,l,l'是他們的label。

爲了給全部超像素選取標籤(xu,l=1表示超像素u標註爲l)採用conditional random field(CRF),這裏先假設同標籤的超像素之間不存在邊緣。

利用已有的數學工具可有效的對最後一個方程式求解。

爲了分割屬於不一樣物體但被標爲同一類別的像素,採用multicut的方法。

最後一個方程的不等式約束,使得圖中全部的cycle只能包含0個或2個以上cutting edge。設想若是沒有第二個cutting edge那麼必定存在一個cycle能夠聯通兩個區域,即沒法造成聯通域;若是有2個或以上cutting edge則能夠將cycle完全階段,只能造成區域內和區域外的循環。 一樣,利用已有的數學工具可有效的對方程式求解。

最後,爲了同時對上述兩個問題求解,只須要優化一個共同的目標,即:

 

Instance-first

這類方法比較多,如著名的mask RCNN就屬於這種方法,思路是先進行檢測,再對檢測框中的內容進行分割。

我選的這篇文章Instance-aware semantic segmentation via multi-task network cascades [11] 年代更早一點,從結構圖中,能夠清晰的看到先進行類別無關的物體檢測(rpn),而後對框內的部分估計一個類別無關的mask,最後對mask進行分類(與[1]方法類似)。

注意在stage3上再加入一個額外的box regression支路,這個結構就能夠進行屢次疊加。

Simutaneously

這裏介紹Fully convolutional instance-aware semantic segmentation [12],把它分爲simutaneously不知道是否合適,不過這個方法確實比較不一樣。

 

因爲物體的部件很難徹底重合在一塊兒,那麼經過部件位置+類別就能夠區分出不一樣物體,於是採用inside score map。outside score map是爲了同時進行檢測和分割任務,outside部分雖然不屬於物體,可是對bounding box有貢獻,也須要有響應,於是又設置了outside score map並使用pixel-wise max的方式對inside和outside map進行結合,投票出檢測結果。

總結

Reference

  • Segmentation First
    • Resort segment proposals
      • [1] B. Hariharan, P. Arbela ́ez, R. Girshick, and J. Malik. Simultaneous detection and segmentation. In ECCV. 2014.
      • [2]  B.Hariharan,P.Arbela ́ez,R.Girshick,andJ.Malik.Hyper- columns for object segmentation and fine-grained localization. In CVPR, 2015. 
      • [3] J. Dai, K. He, and J. Sun. Convolutional feature masking for joint object and stuff segmentation. In CVPR, 2015 
    • Learn to propose
      • [4]  P. O. Pinheiro, R. Collobert, and P. Dollar. Learning to segment object candidates. In NIPS, 2015. 
      • [5] P. O. Pinheiro, T.-Y. Lin, R. Collobert, and P. Dolla ́r. Learning to refine object segments. In ECCV, 2016.
      • [6]  J. Dai, K. He, Y. Li, S. Ren, and J. Sun. Instance-sensitive fully convolutional networks. In ECCV, 2016. 
    • Cut semantic segmentation map into instances
      • [7]  A. Arnab and P. H. Torr. Pixelwise instance segmentation with a dynamically instantiated network. In CVPR, 2017.
      • [8]  M. Bai and R. Urtasun. Deep watershed transform for in- stance segmentation. In CVPR, 2017.
      • [9] A. Kirillov, E. Levinkov, B. Andres, B. Savchynskyy, and C. Rother. Instancecut: from edges to instances with multi- cut. In CVPR, 2017. 
      • [10]  S. Liu, J. Jia, S. Fidler, and R. Urtasun. SGN: Sequen- tial grouping networks for instance segmentation. In ICCV, 2017. 
  • Instance First
    • [11]  J. Dai, K. He, and J. Sun. Instance-aware semantic segmentation via multi-task network cascades. In CVPR, 2016. 
    • Mask RCNN (2018)
  • Simultaneously
    • [12]  Y. Li, H. Qi, J. Dai, X. Ji, and Y. Wei. Fully convolutional instance-aware semantic segmentation. In CVPR, 2017.
相關文章
相關標籤/搜索