本人碩士研究生研究課題:弱監督學習框架下的全卷積神經網絡圖像語義分割
2018年1月16日,學院開題答辯,定下了這個題目。
今天是2018年6月10日。到現在,包括中間的寒假,五個月過去了,看一下當下的狀況,並無任何進展,當然說的是課題方面。因為答辯之后貪玩的暫時解放心理,因為各種其他事情需要兼顧(我覺得這可能是借口吧),因為意志不堅,自從定完題目,好像再也沒有深入研究下去,而是擱置一旁,去做其他學業上的事情了(這就牽涉到思維方式、科研與學習方法的問題)。
心無旁騖是如此的重要,溫水煮青蛙所導致的危險后果是如此的明顯,“生於憂患,死於安樂”。
距秋招還有不到三個月,這三個月給自己立個flag,必須一定要心無旁騖,以研究課題為中心,該好好做點事情了,研三畢業的師兄說,一定要注意時間節點,什么時候該完成什么,一定要去完成,錯過那個時間點,新的別的事情會讓你失措,能力是通過在一定時間節點上的卓有成效彰顯出來的,否則就是一個不會自我管理的失敗者。惰性作為人性中能輕易毀掉一個人的弱點之一,及時意識到,時常問自己,當下在做的事是不是最重要的,及時跳出舒適區,避免陷入溫水青蛙的境地。現在就是最早的時候,三個月,無問西東,但求無愧我心。自律+堅定+靈活應對(不鑽牛角尖)!
今天再次回顧了一下“語義分割中的弱監督學習”,參見https://blog.csdn.net/XWUkefr2tnh4/article/details/78734093。我的目的就是使用弱監督學習方法解決圖像語義分割問題。算法,網絡,所用技術,比如AE(Adversarial erasing)、PSL(prohibitive segmentation learning)等等,可以自己看看鏈接內容,最后關注到了作者說未來會集中於兩個方面的研究:
1)同時的弱監督物體檢測和語義分割,這兩個任務可能會相互促進;
2) 半監督的物體檢測和語義分割。
雖然現在的弱監督方法取得了一定的成績,但是和全監督方法還有一定的差距。作者希望通過結合更多弱監督的標注樣本和現有的少量的標注樣本通過半監督的方式訓練出性能更好的語義分割模型。
另外學習了程明明老師的“面向弱監督的圖像理解”,參見https://blog.csdn.net/xwukefr2tnh4/article/details/78955546。
先來看一段詩:
若言琴上有琴聲,放在匣中何不鳴?
若言聲在指頭上,何不於君指上聽?
蘇軾的《琴詩》暗示了全局認知對於場景理解的重要性。而在圖像理解領域,相較於基於精細標注數據的全監督學習,弱監督學習本質上是一種試圖從全局出發來理解場景的方式,也更接近於人類對世界的認知機制。
程明明老師對截至18年初所做的工作做了一些梳理:
在low level vision層面,做了一些基於attention mechanism(注意力機制)的工作,以及邊緣檢測和區域分割工作來對圖像進行預處理和category-independent的圖像分析,注意力機制可以幫助我們准確快速地定位圖像的區域,而不需要進行人工分割。
在light weighted semantic parsing方面,一方面將介紹語義分割,另一方面介紹它和interaction的結合。
最后,為大家介紹它們在圖像及視覺領域的應用,比如進行editing(編輯)、Synthesis(合成)、web images(網絡圖片)方面的工作。
視覺注意力機制在圖像認知中起到了非常重要的作用。對於機器而言,傳統方法采用滑動窗口機制來檢測圖像中的每一個位置可能是什么樣的物體,而人類觀察圖像並不是基於滑動窗口的機制對上百萬個圖像窗口進行搜索和檢測,往往是借助很強的注意力來定位可能的物體區域,只是判斷少量潛在物體區域的具體類別信息,這能夠幫助我們進行快速有效地識別,並擺脫對大數據的依賴。
注意力機制有幾個重要的分支:
其一為fixation prediction,旨在預測出圖像中的注視點,這個注視點有可能是bottom-up與任務無關的,還有可能是top-down與當前任務相關的;
其二為salient object detection(顯著性物體檢測);
其三為objectness proposals,它是基於窗口的度量方法,通過預測圖像中的每個窗口有多大可能性含有物體,有助於后期做物體檢測。
首先介紹基於全局對比的顯著性區域檢測工作。我們通過對圖像預分割,根據圖像區域和其他所有區域的對比度(RC:region contrast)來計算顯著性物體的區域。將在后面介紹如何用它來進行弱監督的學習。
剛才的工作無論是選擇特征還是特征組合都是基於人手工的方法來做的。我們提出了基於學習的方式進行顯著性物體檢測,對每個區域提取特征,基於機器學習的方式自動選擇特征的組合,這樣能得到更好的分割結果。這個工作也取得了非深度學習方法中最好的結果。
除了對特征的組合進行學習,去年CVPR上有一個工作通過深度方法對特征本身也進行學習,來得到顯著性物體的區域。通過把不同層次的深度特征結合起來,通過一些short connections(短連接)的形式,能得到非常好的顯著性物體檢測結果。
采用多層次的信息融合方式,如下圖中間所示,它是一種深度神經網絡架構。對於程老師團隊提出的方法,越高層的卷積運算,可以得到更大尺度的信息。把不同尺度信息通過short-connection層連接起來,同時通過side output做指導,能夠得到更好的顯著性物體檢測的結果。
近幾年,顯著性物體檢測取得了很大的進步。在很多公開數據集上,顯著性物體檢測的結果已接近實用,比如在MSRA-B和ECSSD數據集上precision和recall都已達到了90%以上的結果,同時missing error都已下降到零點零幾的水平。由此啟發我們是否能將它用於弱監督學習中去,從顯著性物體檢測的結果來學習知識。
物體是由閉合輪廓圍成的區域並有其重心,程老師在2014年的一個工作中據此設計了一種根據圖像梯度估計圖像中區域可能含有物體的可能性的方法。該方法和傳統的方法效果基本接近,但是其速度要快出1000倍。
除了注意力機制,邊緣檢測也是對弱監督學習非常有幫助的。
下面是程老師團隊發表在CVPR2017的邊緣檢測方面的工作。他們發現在不同的卷積層都有不同的有用信息,與其從池化層的前一層中拿出來做整合,不如提出所有卷積層的信息充分利用。
傳統上,在幾次卷積運算之后再做池化,中間層的特征只利用池化前的最后一層。新的工作把不同層的信息疊加起來,通過concat的方式來得到更加豐富的特征表達,通過這樣的特征表達來訓練邊緣檢測的結果。
值得一提的是,這樣的方法也達到了非常好的效果。比如在pascal voc數據集上,該方法是國際上首個能夠實時運算,並且結果的F measure值已經超過當時在伯克利segmentation dataset上的人類平均的標注質量的方法。
此外,在low level vision里面,還有分割問題。通過對圖像分組得到很多區域,期望每一個region里面只含有一個物體類別,作為比較強的約束信息可以幫助我們更好地理解圖像內容。
這里邊一個例子就是,我們(指程明明老師團隊,下同)曾經用顯著性物體檢測的結果幫助我們initialize圖像的區域,然后通過iteratively run GrabCut的方法分割出圖像中的重要物體區域。這些分割信息加上keyword 信息本身可以幫助我們生成一些高質量的pixel-accurcy label(像素層面的圖像標簽),來更好地做語義分割。
除了做語義分割之外,我們直接用圖像處理的方式(比如顯著性物體檢測、分割等)進行處理,我們對Internet image做object segmentation和顯著性物體檢測,借助一些關鍵字在分割里面做retrievel,得到這些retreival信息后,top ranking里面的retrieval results信息很多都是我們需要的物體類別,通過物體類別自動獲取的example 包括它的分割信息去學習一些apperance model學習一些更加重要的知識,通過這些知識來更新我們對顯著性物體的理解。
還有一個分割的工作是對圖像做over segmentation,就是把圖像分成很多塊,我們希望每個塊都不要跨越多個物體,因為同一個塊通常只屬於其中一個物體,哪怕區域里面有一些噪聲,通過平均抑制噪聲讓分割信息更好,之前常用的over segmentation方法是efficient graph based image segmentation,其缺點是比較慢,因此我們在ECCV2016提出了一種基於GPU的方法對圖像預處理而得到superpixel(超像素),然后對超像素提取特征並通過SVM(支持向量機)去學習一些特征組合,再對特征組合進行融合來得到非常好的結果。
在伯克利的數據集上我們的方法取得了非常好的結果,速度上每秒能處理幾十上百張圖像,F measure值也不錯,可以作為low-level領域的一個很好的工具去更好地約束弱監督學習的方式。
之前介紹的low level vision領域的注意力機制、邊緣檢測、圖像分割相關工作結果都和圖像的object category(物體類別)無關,因此這些信息就可以直接地運用到圖像中去,幫助我們約束一個問題。比如圖像里只含有一個物體,訓練集里哪怕沒有語義分割信息只有關鍵字信息,也會幫助我們去做語義分割。
這里介紹一個工作(STC:A Simple to Complex Framework for Weakly-supervised Semantic Segmentation)。文章開頭提到過的,詳見https://blog.csdn.net/XWUkefr2tnh4/article/details/78734093,通過顯著性物體檢測的結果,自動地生成語義分割的標簽。通過low-level vision得到的約束能夠幫助我們在弱監督的語義分割的學習中,減少對人工標注的依賴。
該方法本質上是對同一個結構的網絡利用不同的監督信息訓練了三次。
-
利用簡單圖片的顯著圖作為監督信息。由於簡單圖片往往只包含了一類物體,我們基於顯著圖可以獲取每一個像素有多大的概率屬於前景物體或者背景。我們利用顯著圖作為監督信息並采用multi-label cross-entropy loss訓練出一個initial DCNN(I-DCNN),使得該網絡具備一定語義分割能力。
-
我們利用I-DCNN對訓練樣本做預測,同時又根據image-level label剔除一些噪聲,由此可得到針對簡單圖片的segmentation mask,進而基於預測出來的segmentation mask,按照全監督的卷積神經網絡通用的損失函數去訓練一個Enhanced DCNN(E-DCNN),進一步提升網絡的語義分割能力。
-
引入更多的復雜圖片,結合E-DCNN和其image-level label,預測segmentation mask,進而用它們作為監督信息重新訓練一個更好的Powerful DCNN(P-DCNN)。
總結起來,這個網絡的語義分割能力會通過這三步的訓練方式一步步提升。STC框架如下圖:
還有之前的上一工作,通過bottom-up的方式進行分割,發表在CVPR2017上,它使用一種top-down的方式。比如針對一個分類任務,可以通過attention network找到哪個區域屬於哪類別,通過迭代使用top-down的注意力機制,更好地實現語義分割。
除了語義分割之外,通過light weighted semantic parsing,還可以支持一些interaction、圖像編輯等等的工作。由於本人目前只集中注意力關注圖像語義分割方法,有興趣的小伙伴請仔細讀完原鏈接后面部分的內容,再次附上鏈接https://blog.csdn.net/xwukefr2tnh4/article/details/78955546。