【技術綜述】閑聊圖像分割這件事兒

【技術綜述】閑聊圖像分割這件事兒

來自專欄有三AI學院6 人贊了文章

首發於微信公眾號《與有三學AI》

【技術綜述】閑聊圖像分割這件事兒?

mp.weixin.qq.com圖標

最近遇到很多人問我圖像分割技術發展怎麼樣了,落地了嗎?有三隻想說,豈止落地了,都貼在地上摩擦了。老規矩,分幾塊說起。

1 閑聊往事

想當年,大學的時候。同學們進進出出圖書館,手裡揣著的都是什麼微積分,明朝那些事兒之類的書。而我幾年下來,全是adobe photoshop,adobe premiere,adobe after effects,adobe flash,總之就是adobe全家桶。別人在網吧打遊戲,我經常鼓搗七八個小時的繪聲繪影,premiere,nero等等。

要不是因為窮,就去武大修動漫雙學位了,日語二級都考好了,這會兒可能奔我的玄機科技去了,哪裡還在這裡碼代碼。

扯的貌似有點遠,只想說和音視頻早已經建立了割不斷的聯繫。現在還鼓搗了一個攝影公眾號《有三工作室》,有興趣大家可以支持下,美女自然是少不了你們的,配套的小程序也做起來了。

回歸正題。當年學Adobe,最喜歡玩的就是摳圖,磁性套索一度讓我不可自拔,那對我而言就是圖像分割技術的啟蒙了。

到後來從傳統方法搞到cnn,一直未曾脫離關係。

這一次,咱不談高深的技術,而是談歷史,談故事,說的輕鬆一點,盡量短一些,畢竟長文讀著累,留幾手,下次說。

2 沒有深度學習的那些年

圖像處理演算法都是從傳統方法開始的,我們就簡單理解為非深度學習的方法吧。

圖像分割是什麼?如果下學術定義,就是把圖像分割成想要的語義上相同的若干子區域,看上面的自動駕駛的分割任務,路是路,車是車,樹是樹。

這些子區域,組成圖像的完備子集,相互之間不重疊。圖像分割可以被看作是一個逐像素的圖像分類問題

沒有深度學習的那些年,也發展出了非常多的圖像分割技術,下面挑重點長話短說。

2.1 邊緣與閾值法

簡單的邊緣檢測也曾被用於圖像分割,但是因為要做複雜後處理以及後面和其他方法有重疊,這裡就不再說了,而是從閾值法開始說。

閾值法的基本思想是基於圖像的灰度特徵來計算一個或多個灰度閾值,並將圖像中每個像素的灰度值與閾值相比較。

其中,最廣泛使用也最具有代表性質就是OTSU【1】方法,它是用於灰度圖像分割的方法,核心思想就是使類間方差最大

這樣的方法,非常簡單,要求被分割的物體顏色紋理比較緊湊,類內方差小,只適合一些文本圖像的處理,比如車牌,比如指紋。

如果感興趣,有很多的綜述的,大家可以去關注。雖然簡單,讀研時也用它水了一篇文章和專利。

2.2 區域增長,分裂

閾值法的一個硬傷是太粗暴簡單,哪怕是自適應的局部閾值法,一樣難逃無法分割類內方差較大的目標的宿命。它完全沒有利用好像素的空間信息,導致分割結果極其容易受雜訊干擾,經常出現斷裂的邊緣,需要後處理。

所以,區域生長法出現了,它通過一些種子點,再加上相似性準則來不斷擴充區域直到達到類別的邊界,這時候分割結果是連續的了。

區域分裂則是反過程,不再詳述。區域增長法的佼佼者,就是分水嶺演算法【2】。

分水嶺演算法是一種基於拓撲理論的數學形態學的分割方法,將圖像中每一點像素的灰度值表示該點的海拔高度,每一個局部極小值稱為集水盆,而集水盆的邊界則是分水嶺。分水嶺演算法有很多種實現演算法,常用浸水模擬法。

分水嶺演算法對於弱邊緣有不錯的響應,因此常被用於材料圖像的分割,以及產生超像素用於提高其他方法的分割效率。咱在碩士期間也與師姐鼓搗過半導體材料的分割,還不錯。

說到這裡,超像素也是很重要的一種方法,某種程度上也能被歸為圖像分割的方法。SLIC,Meanshift等都是非常經典的方法,去文【3】中做更詳細解讀吧。筆者在很多的實際項目中都使用過,配合下面要講的方法一起使用,絕配。

2.3 圖割

以graphcut【4】為代表的圖割方法,是傳統圖像分割裡面魯棒性最好的方法,它是一種概率無向圖模型(Probabilistic undirected graphical model),又被稱Markov random field馬爾可夫隨機場。

Graphcut的基本思路,就是建立一張圖,看下面這張圖,其中以圖像像素或者超像素作為圖像頂點,然後優化的目標就是要找到一個切割,使得各個子圖不相連從而實現分割,前提是移除邊的和權重最小。

後來圖割方法從MRF發展到CRF,也就是條件隨機場。它通常包含兩個優化目標,一個是區域的相似度,被稱為區域能量項,即piecewise能量。一個是被切斷邊的相似度,被稱為邊緣能量項,即pairwise能量。它追求區域能量項的最大化以及邊緣能量的最小化,也就是區域內部越相似越好,區域間相似度越低越好。

圖割方法很通用,對於紋理比較複雜的圖像分割效果也不錯。缺點是時間複雜度和空間複雜度較高,所以通常使用超像素進行加速計算,上面的分水嶺演算法就可以拿來用用。

graphcut的迭代版本,也就是grabcut【5】更好用,它的基本思路是;使用混合高斯模型(Gaussian Mixture Model,GMM)替代了graphcut基於灰度的模型,初始的混合高斯模型的構建,通過用戶交互來指定,只需要指定確定性的背景像素區域即可,通常是畫一個框。

多年以後再看下面這張圖,效果依然是驚艷的,邊緣很不錯。不像上面的幾個方法,圖割方法仍然被廣泛使用,deeplab系列的前幾篇文章就用到了全連接的crf,它與mrf的區別可以參考這裡:

summerschool.vgiscience.org

圖割方法很好用,是每個想做圖像分割的同學必須掌握的,我從碩士論文,從第一個實習項目一直用到了現在。

2.4 輪廓模型

輪廓模型大部分人可能不知道,它的基本思想是使用連續曲線來表達目標輪廓,並定義一個能量泛函,其自變數為曲線,將分割過程轉變為求解能量泛函的最小值的過程。數值實現可通過求解函數對應的歐拉(Euler-Lagrange)方程來實現。包括以snake模型為代表的參數活動輪廓模型和以水平集方法為代表的幾何活動輪廓模型。

當能量達到最小時的,曲線位置就處於正確的目標輪廓。

該類分割方法具有幾個顯著的特點:(1)由於能量泛函是在連續狀態下實現,所以最終得到的圖像輪廓可以達到較高的精度;(2)通過約束目標輪廓為光滑,同時融入其它關於目標形狀的先驗信息,演算法可以具有較強的魯棒性;(3)使用光滑的閉合曲線表示物體的輪廓,可獲取完整的輪廓,從而避免傳統圖像分割方法中的預/後處理過程。

不過,缺點也很明顯,比較敏感,容易陷入局部極值。

下面是我的碩士論文【6】中採用水平集方法分割出的腫瘤,就是白色那一塊。這個方法的數學味有點濃,考慮到咱們是閑聊,就不擺公式了,畢竟後面還有很多事。

傳統方法遠不止於此,但是我們應該接著說深度學習的方法了。

3 有了深度學習後

大家認可的第一篇採用深度學習方法來做圖像分割的是FCN【7】。分類任務到了最後,圖像被表徵成了一個一維的向量,而分割任務則需要恢復一張與原圖大小相等的圖,所以全連接自然是不行了。

不可免俗也放這張圖,說的是在從最小解析度的featuremap上採樣的過程中,融合了卷積過程中同一解析度大小的特徵圖。這種將網路淺層和深層信息融合的思想是分割網路的必備了,關於網路的結構,其實我們看segnet【8】會更有感覺,對稱,優美,更符合我的審美。

有了FCN之後,各路方法大顯神通。不同的上採樣方法,帶孔卷積等增加感受野的方法,圖片與特徵的多尺度信息融合,增加crf等後處理方法

萬變不離其宗,最終分割結果的好壞往往取決於網路的表徵能力,問題的簡化,以及好的標註數據。刷比賽的那些技巧,我也不豐富就不多說了。

更多的細節,先按下不表,下一期專門講,如果等不及,看文【9】,上個圖先簡單的爽上一爽。

4 分割不僅僅是分類問題

我們前面說的,都還是將分割當成一個分類問題來解讀的,就是每個像素要被歸為明確的類別。

然而分割的終極目標不只這一個,比如為了做背景替換的摳圖這件事。

二分類的問題,前背景能完美融合才怪,經不起仔細觀察。所以,我們需要帶透明度通道的分割,或者先分割出來再利用泊松融合等技術進行邊緣融合

這就是一個image matting問題。image matting問題可以用一個簡單的數學表達式表達,I = aF + (1-a)B,其中F是前景,B是背景,a是透明度,一張圖可以看作是在透明度圖像的控制下,前景和背景的線性融合。

只是,解這個問題有點病態,對於三通道的RGB圖像,只有3個方程,卻需要解出6個變數。所以像closed matting等方法都要做局部區域顏色不變的約束才能求出解析解。

image matting問題也從傳統方法發展到了深度學習, alphamatting.com這裡有主流方法的比較,儘管一看。

之所以大家重新想起來這檔事,是因為adobe前幾年搞的end to end的方案deep image matting【10】重新吊起了大家的胃口。

在這個基礎上,摳腦袋做個表情包【11】也未必不可能,只是實際效果仍然欠缺。

技術當然不會止步於此,關注這個領域的朋友自然又會看到siggraph2018有人【12】出來搞事情,原來是MIT和Adobe,也是,沒有Adobe誰有這能力。

我們只看文中的幾個關鍵詞,譜分割(spectral segmentation),Laplacian矩陣,soft transitions與layers,SLIC等。譜分割與laplacian矩陣是graphcut的歸一化版本Normalized Cut的核心,而soft transitions與layers是photoshop最核心的思想,SLIC則是用於減少計算量的超像素方法。

再加上深度學習,徹底的牛逼圖像分割方法大融合了。

終於,傳統方法又和深度學習走到了一起。咱們閑聊也該結束了,下次再說技術細節。

參考文獻

【1】Otsu N. A Threshold Selection Method from Gray-Level Histograms[J]. IEEE Trans.syst.man. & Cybern, 2007, 9(1):62-66.

【2】L. Vincent and P. Soille, 「Watersheds in digital spaces: an efficient algorithm based on immersion simulations,」 IEEE Trans. Patt. Anal. Mach. Intell., vol. 13, pp. 583-598, 1991.

【3】Stutz D, Hermans A, Leibe B. Superpixels: an evaluation of the state-of-the-art[J]. Computer Vision and Image Understanding, 2018, 166: 1-27.

【4】Boykov Y Y, Jolly M P. Interactive Graph Cuts for Optimal Boundary & Region Segmentation of Objects in N-D Images[C]// IEEE International Conference on Computer Vision. IEEE Computer Society, 2001:105.

【5】Rother C, Kolmogorov V, Blake A. "GrabCut": interactive foreground extraction using iterated graph cuts[C]// ACM SIGGRAPH. ACM, 2004:309-314.

【6】龍鵬. MRI醫學圖像增強與分割新方法[D]. 中國科學院大學, 2015.

【7】Shelhamer E, Long J, Darrell T. Fully Convolutional Networks for Semantic Segmentation[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2014, 39(4):1-1.

【8】Kendall A, Badrinarayanan V, Cipolla R. Bayesian segnet: Model uncertainty in deep convolutional encoder-decoder architectures for scene understanding[J]. arXiv preprint arXiv:1511.02680, 2015.

【9】Garcia-Garcia A, Orts-Escolano S, Oprea S, et al. A review on deep learning techniques applied to semantic segmentation[J]. arXiv preprint arXiv:1704.06857, 2017.

【10】Xu N, Price B L, Cohen S, et al. Deep Image Matting[C]//CVPR. 2017, 2: 4.

【11】Zhu B, Chen Y, Wang J, et al. Fast Deep Matting for Portrait Animation on Mobile Phone[C]//Proceedings of the 2017 ACM on Multimedia Conference. ACM, 2017: 297-305.

【12】OH T A E H, MATUSIK W. Semantic Soft Segmentation[J]. 2018.

打一個小廣告,本公眾號的計算機視覺公開課《AI 圖像識別項目從入門到上線》上線了,將講述從零基礎到完成一個實際的項目到微信小程序上線的整個流程,歡迎交流捧場。

往期綜述

【技術綜述】一文道盡softmax loss及其變種

【技術綜述】計算機審美,學的怎麼樣了?

為了壓榨CNN模型,這幾年大家都幹了什麼

往期學員分享

  • 【技術綜述】人臉表情識別研究

  • 【技術綜述】人臉臉型分類研究現狀

  • 【技術綜述】人臉顏值研究綜述

往期開源框架

  • [caffe解讀] caffe從數學公式到代碼實現4-認識caffe自帶的7大loss

  • 【開源框架】從Google百度到微博,優酷騰訊到抖音,這些爬蟲你用過了嗎?

  • 【開源框架】一文道盡主流開源框架中的數據增強

往期模型解讀

  • 【模型解讀】resnet中的殘差連接,你確定真的看懂了?

  • 【模型解讀】pooling去哪兒了?

  • 【模型解讀】network in network中的1*1卷積,你懂了

往期行業趨勢

  • 【行業進展】國內自動駕駛發展的怎麼樣了?

  • 【行業進展】AI:新葯研發的新紀元

  • 【行業進展】哪些公司在搞「新零售」

推薦閱讀:

ICCV2015語義分割相關論文摘要及框架
車道線檢測論文閱讀:LaneNet
語義分割:Large Kernel Matters
run-length 編碼和解碼
經典CNN模型+經典圖像語義分割模型總結

TAG:計算機視覺 | 圖像分割 | 深度學習DeepLearning |