【技术综述】基于弱监督深度学习的图像分割方法综述
文章首發于微信公眾號《有三AI》
【技術綜述】基于弱監督深度學習的圖像分割方法綜述?
本文是基于弱監督的深度學習的圖像分割方法的綜述,闡述了弱監督方法的原理以及相對于全監督方法的優勢,首發與《有三AI》
作者 | 孫叔橋 編輯 | 言有三?
?
1 基礎概念
生活中,我們和周圍的事物都是有“標簽”的,比如人、杯子、天空等等。在不同的場景下,相同的事物可能對應了不同的標簽,比如長在地上的一片小草稱為“草地”,長在花盆里的很可能屬于“盆栽”,畫在畫中的又屬于“裝飾”。
如果把整幅圖像比作我們生活的世界,那么具有相同“標簽”的像素就組成了我們和周圍的事物。圖像分割的任務就是給這些像素標注它們所對應的“標簽”,而這個標簽通常取決于這個像素所屬于的“整體”的類別。比如下圖中就被分割成了天空、植被、草地和大象。
當然,與生活中相似,根據分類方式的不同,一個像素可能屬于多種類別。比如下圖中組成椅子的像素,按照整體應標注為“椅子”,細分下又屬于“椅背”,按照材料分又屬于“木頭”。
根據方法和任務的不同,圖像分割可以分成很多類。比如在只關心圖像主要內容的時候,類別可能只有兩類:前景(關心的內容)和背景(除前景之外的其他部分,即不關心的內容)。或者只關心可數的目標,比如行人、自行車、杯子等等;或只關心不可數目標,比如天空、草地、海洋等。由此,我們給出了下面兩種可能的分類方式:
?-?按模型分類:根據實現分割的手段,圖像分割可以大致分為傳統方法與基于深度學習的方法。前者依靠純數學公式推導實現分割,而后者則依靠深度學習結構(如神經網絡、隨機樹等)實現分割。
?-?按任務分類:根據圖像分割的具體任務,又可以將其分為語義分割(semantic?segmentation)、實例分割(instancesegmentation)與全景分割(panoptic?segmentation)。
如上圖所示,語義分割是比較容易的一種,其要求的是對所有像素點進行類別標注,比如天空、車、杯子等,但是不區分相同類別的個體,即所有屬于“杯子”的像素點都被標注成相同的標簽。而實例分割比語義分割困難一些,其不僅要求要標注像素點,還要區分相同類別的不同實例,比如“這個杯子”和“那個杯子”。
但是實例分割受限其要求,通常都是對可數的物體進行分割,而在不可數內容上(比如草地、馬路等),要么沒有分割,要么屬于一個類別。當其將屬于某一個不可數類別的像素點都標注成相同標簽,而所有屬于可數類別的像素點按實例標注時,就成為了所謂的全景分割(如下圖所示)。
本文中我們主要介紹基于深度學習的圖像分割方法,包括語義分割、實例分割和全景分割。
?
2?為什么要弱監督學習?
像前面說過的,圖像分割的任務是對每個像素都進行標注。因此,在深度學習方法中,直觀上就需要所有的像素都有真值標注。不難看出,這個要求下,真值標注的生成是極度耗時耗力的,尤其是以人工標注的方式。比如,CityScapes數據庫,在精標條件下,一張圖片的標注就需要1.5個小時。如此一來,數據庫標注的成本可想而知。
基于此,許多研究人員就想到用弱監督的方式進行網絡訓練,從而降低標注成本。所謂弱監督,就是用更容易獲得的真值標注替代逐像素的真值標注,常見的輸入有image-level?tags和bounding?boxes。下圖給出的是這兩種標注的示例。
image-level?tag:一張圖片對應一個標簽。如上圖,標簽為“貓”。
bounding?box:即用一個矩形框(2D)或長方體(3D)給出目標存在的位置及標簽。
可見,這兩種標注的獲得比逐個像素標注容易太多。具體來說,一個bounding?box的標注只需要7秒,而一個image-level?tag的標注只需要1秒,按照這種方式,CityScapes數據庫的標注時間將縮短30倍。
在弱監督算法中,有的網絡是直接利用這些標注作為輸入;也有的網絡是在這些標注的基礎上生成部分像素點的標注,再進行全監督訓練。但無論哪種方式,都可見直接降低了標注成本。
?
3?常用的弱監督分割算法
說完了基本概念和必要性,下面我們從輸入的角度具體聊一下常用的弱監督分割算法有哪些。在分割任務中,常用的分割網絡有AlexNet、VGG、GoogleNet、ResNet和ReNet等,且通常借助遷移學習和必要的數據處理及擴張實現較好的分割。這些方法和結構在弱監督分割算法中也非常常見。具體而言,分割任務中常用的方法有譯碼器(decoder)的變體;整合上下文信息的方法,如條件隨機場、擴張卷積、多尺度估計、特征融合等。
下圖就是一個典型的編碼器-解碼器結構。
考慮到關于分割算法的綜述有許多,本文著重介紹弱監督分割算法中特殊的處理方法。針對不同任務需求,每種輸入下的算法都按照語義分割、實例分割進行歸納(前景分割被歸入語義分割中);而全景分割要同時完成兩種分割任務,因此單獨列出來。總體上,目前弱監督的語義分割研究成果比較多,但是實例分割與全景分割則要少很多。由于論文數量龐大,這里每種場景僅列出一篇有代表性的論文作為范例。
1.?基于image-level?tags的分割算法
Image-level?tags已經在前文給出了示例,可以看出這一種標注中主要包含的是相同類別之間的共性,但無法區分實例(比如所有的車都會被標注成“車”,而不會區分顏色、形狀、大小、牌子等等)。因此基于image-level?tags的算法大多用于語義分割,或是具有語義分割功能的實例分割或全景分割算法。下面就按照分類介紹部分基于image-level?tags的深度學習分割算法。
(1)?《Built-in?Foreground/Background?Prior?for?Weakly-Supervised?Semantic?Segmentation》
這篇論文中提出的方法,是利用目標標簽作為語義分割訓練的先驗,從而實現更高精度的分割效果。為了實現這個目的,這個方法中構建了一個預訓練網絡,其作用是給出前景像素點信息,而忽略背景信息。
下圖是具體的網絡結構。給定輸入圖像,網絡經過了一個典型的編碼器-解碼器結構,隨后通過一個條件隨機場(CRF)生成最后的mask。整個網絡的訓練只需要image-level?tags就可以。
帶有內置前背景先驗的弱監督網絡結構,圖片來源于論文。
上圖是編碼器-解碼器神經網絡部分的完整結構,圖片來源于論文。該網絡結構是從VGG-16網絡結構來的,感受野128,步長8。
(2)?《Exploiting?saliency?for?object?segmentation?from?image?level?labels》
此前的研究已經證明,可以從image-level?labels中提取不同目標的信息(如下圖所示)。
熱度圖(heatmap),圖片來源于論文。
但是從上面的熱度圖也可以看出,如果目標之間存在遮擋,那么在沒有額外信息的情況下,獲取完整的目標就很困難了(固有的不適定問題)。
出于這個考慮,這篇論文中提出了一個可以提供輔助信息的模型。整個網絡的訓練只用到了image-level?labels和saliency?masks。下圖是標注和論文結果。
下圖是具體的網絡結構,可以看出,輔助信息與分割網絡是并行的,共同用于計算最后的損失。圖片來源于論文。
2.?基于bounding?boxes的分割算法
Bounding?boxes是目標識別中常用的一種標注方式。現在許多算法已經能夠實現很高精度的bounding?boxes檢測了,因此COCOChallenge等許多比賽已經取消了bounding?boxes為輸出的部分,而是更多關注于像素級的分割任務。
盡管如此,bounding?boxes作為一種能夠有效區分不同實例的標注方式,既包含了語義信息,也包含了實例信息。因此,boundingboxes被廣泛應用于分割任務中,尤其是實例分割與全景分割。
(1)?語義分割
《Image?Segmentation?with?A?Bounding?Box?Prior》
這篇論文放在這里作為一個基準,是微軟2009年提出的一種基于傳統手段的前景分割方法。在此之前,盡管bounding?box被廣泛利用與圖像分割任務中,但是大多數算法只是用其排除外部信息或有時用于初始化能量函數。
這篇論文中提出bounding?box可以作為一種強大的拓撲先驗(topological?prior),既可以防止模型過度萎縮(分割小于前景目標的區域),也可以確保bounding?box就足夠用于分割任務了。論文用包含在全局能量最小化框架內的強約束表達此先驗,從而構造一個NP-hard的完整程序。
下圖左邊是沒有先驗的分割結果,右邊是有先驗的分割結果。圖片來源于論文。???
下面的公式是將tightness?prior融入圖割(gruph?cut?framework)而得到的integer?program(IP):
論文隨后還介紹了一種可能的優化策略,包括linear?relaxation和一種新的graph?cut算法(稱作pinpointing)。后者既可以作為fractional?LP?solution的舍入法(rounding?method,效果比閾值方法好),也可以作為獨立的快速啟發式搜索(fast?standaloneheuristic)。下圖是pinpointing的結果,圖片來源于論文。
下圖是論文中的算法與其他算法的實驗結果比較,圖片來源于論文。可以看出,在人的頭部附近和植物枝干附近,這篇論文中的算法具有明顯優勢。
(2)?實例分割
《DeepCut:?Object?Segmentation?from?Bounding?Box?Annotations?using?Convolutional?Neural?Networks》
這篇論文提出了一種給定弱標注的實例分割方法。其將微軟研究院提出的GrabCut進行擴展,可以實現給定bounding?boxes的神經網絡分類器訓練。該論文將分類問題視為在稠密連接的條件隨機場下的能量最小化問題,并通過不斷迭代實現實例分割。
論文中還提出了一些DeepCut方法的變體,并將它們與其它算法在弱監督條件下進行了比較。值得注意的是,該算法在解決大腦和肺的兩個問題上已經得到了實驗,精度還不錯(使用的數據庫是fetal?magnetric?resonance?dataset)。下圖是基本的DeepCut網絡結構,圖片來源于論文。
下圖是實驗結果,圖片來自于論文。
3.?全景分割
《Weakly-?and?Semi-Supervised?Panoptic?Segmentation》
這篇文章介紹了一種基于弱監督的全景分割(實例分割加語義分割)的網絡結構,目前在CityScapes上面語義分割與實例分割都是第一。論文中其實主要提出的是一種可以通過image-level?tags和bounding?boxes生成像素點標注的方法,當然這個方法無法標注全部的像素點的真值,但是按照前文所提到的理論,這些像素點的個數已經足夠支撐網絡的訓練。同時,真值會隨著網絡結構的不斷訓練,逐漸完善。下圖是真值標注的完善過程,圖片來源于論文。
結果示例,圖片來源于論文。
論文效果,圖片來源于論文。
?
4?總結一下
通過這篇文章,我們了解了什么是圖像分割及其種類,什么是圖像分割中的弱監督訓練,以及常用的方法。簡而言之,弱監督訓練就是用更少、更容易獲得的真值標注,替代逐像素的真值標注,從而在降低標注成本的基礎上,維持較高水平的分割。
目前,隨著分割領域的不斷發展,語義分割與實例分割逐漸融合,全景分割正在成為新的主流趨勢。至于如何用好弱監督標簽,怎么實現高精度的全景分割,就靠各位了。
?
參考文獻
[1]?A.?Bansal,?X.?Chen,?B.?C.?Russell,?et?al.?Pixelnet:?Representation?of?the?pixels,?by?the?pixels,?and?for?the?pixels[C].CoRR,2017.
[2]?Saleh?F.,?Aliakbarian?M.S.,?Salzmann?M.,?et?al.?Built-in?Foreground/Background?Prior?for?Weakly-Supervised?SemanticSegmentation[C].?ECCV,?2016,?vol?9912.
[3]?S.?J.?Oh,?R.?Benenson,?A.?Khoreva,?et?al.?Exploiting?saliency?for?object?segmentation?from?image?level?labels[C].?CVPR,2017.?
[4]?V.?S.?Lempitsky,?P.?Kohli,?C.?Rother,?et?al.?Image
segmentation?with?a?bounding?box?prior[C].?ICCV?2009:?277–284.
[5]?M.?Rajchl,?M.?C.?H.?Lee,?O.?Oktay,?et?al.?Deepcut:?Object?segmentation?from?bounding?box?annotations?usingconvolutional?neural?networks[J].?IEEE?transactions?on?Medical?Imaging,?2017,?36(2):?674–683.?
[6]?Q.?Li,?A.?Arnab,?and?P.?H.?S.?Torr.?Weakly-?and?semi-supervised?panoptic?segmentation[C].?ECCV,?2018:?106–124.
[7]?C.?Rother,?V.?Kolmogorov,?and?A.?Blake.?Grabcut:?interactive?foreground?extraction?using?iterated?graph?cuts[J].?ACMTransactions?on?Graphics,?2004,?23(3):?309–314. 、
?
2019年有三AI培養計劃已經開始,一個季度一期,系統性進階為深度學習算法工程師,不妨看看。
重新解釋“季”劃?&?為什么我不是在搞培訓
?
另外本周知乎Live,歡迎來看
轉載文章請后臺聯系
侵權必究
感謝各位看官的耐心閱讀,不足之處希望多多指教。后續內容將會不定期奉上,歡迎大家關注有三公眾號 有三AI!
總結
以上是生活随笔為你收集整理的【技术综述】基于弱监督深度学习的图像分割方法综述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【AI-1000问】你知道为什么Goog
- 下一篇: 【DL4J速成】Deeplearning