Instance Segmentation入門總結


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

初見instance segmentation

分類、檢測、分割是有天然的聯系的:從目的來講,三個任務都是為了正確的分類一張(或一部分)圖像;進一步,檢測和分割還共同負責定位任務。這些任務之間的不同是由於人在解決同一類問題時,對問題的描述方案不同導致的,是人為的。因而,可以找到一種共同的描述(或任務),即instance segmentation。那么,instance segmentation既然集成了上述3種任務,如果有上述3種任務的結果,是不是通過簡單組合就可以得到instance segmentation的結果呢?顯然是不行的。

 為什么不可以呢?或者說需要補全什么才可以得到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的背景部分。

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

也可借助另外一種方案使用segmentation map:利用邊緣圖對segmentation map進行分割,分割成不同的物體。[9]使用instance segmentation的標注訓練了邊緣檢測器,注意這里的“邊緣”是boundary,而不是edge。然后,使用這個邊緣圖划分超像素,以超像素為單位對圖進行划分和貼標簽。這里假設了一個物體一定對應一個聯通域(這個假設是有問題的,有時候由於遮擋等問題可能對應多個聯通域)。

 

其中,image partition采取非深度學習的方法進行求解,是CRF和multicut的結合。我自己對這部分的理解如下。

輸入有三種:

其中,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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM