原文:http://blog.csdn.net/taigw/article/details/51401448
從圖像分類到圖像分割
卷積神經網絡(CNN)自2012年以來,在圖像分類和圖像檢測等方面取得了巨大的成就和普遍的應用。網絡
CNN的強大之處在於它的多層結構能自動學習特徵,而且能夠學習到多個層次的特徵:較淺的卷積層感知域較小,學習到一些局部區域的特徵;較深的卷積層具備較大的感知域,可以學習到更加抽象一些的特徵。這些抽象特徵對物體的大小、位置和方向等敏感性更低,從而有助於識別性能的提升。框架
這些抽象的特徵對分類頗有幫助,能夠很好地判斷出一幅圖像中包含什麼類別的物體,可是由於丟失了一些物體的細節,不能很好地給出物體的具體輪廓、指出每一個像素具體屬於哪一個物體,所以作到精確的分割就頗有難度。dom
傳統的基於CNN的分割方法的作法一般是:爲了對一個像素分類,使用該像素周圍的一個圖像塊做爲CNN的輸入用於訓練和預測。這種方法有幾個缺點:一是存儲開銷很大。例如對每一個像素使用的圖像塊的大小爲15x15,則所需的存儲空間爲原來圖像的225倍。二是計算效率低下。相鄰的像素塊基本上是重複的,針對每一個像素塊逐個計算卷積,這種計算也有很大程度上的重複。三是像素塊大小的限制了感知區域的大小。一般像素塊的大小比整幅圖像的大小小不少,只能提取一些局部的特徵,從而致使分類的性能受到限制。函數
針對這個問題, UC Berkeley的Jonathan Long等人提出了Fully Convolutional Networks (FCN)[1]性能
用於圖像的分割。該網絡試圖從抽象的特徵中恢復出每一個像素所屬的類別。即從圖像級別的分類進一步延伸到像素級別的分類。學習
FCN的原理
FCN將傳統CNN中的全鏈接層轉化成一個個的卷積層。以下圖所示,在傳統的CNN結構中,前5層是卷積層,第6層和第7層分別是一個長度爲4096的一維向量,第8層是長度爲1000的一維向量,分別對應1000個類別的機率。FCN將這3層表示爲卷積層,卷積核的大小(通道數,寬,高)分別爲(4096,1,1)、(4096,1,1)、(1000,1,1)。全部的層都是卷積層,故稱爲全卷積網絡。
測試
能夠發現,通過屢次卷積(還有pooling)之後,獲得的圖像愈來愈小,分辨率愈來愈低(粗略的圖像),那麼FCN是如何獲得圖像中每個像素的類別的呢?爲了從這個分辨率低的粗略圖像恢復到原圖的分辨率,FCN使用了上採樣。例如通過5次卷積(和pooling)之後,圖像的分辨率依次縮小了2,4,8,16,32倍。對於最後一層的輸出圖像,須要進行32倍的上採樣,以獲得原圖同樣的大小。spa
這個上採樣是經過反捲積(deconvolution)實現的。對第5層的輸出(32倍放大)反捲積到原圖大小,獲得的結果仍是不夠精確,一些細節沒法恢復。因而Jonathan將第4層的輸出和第3層的輸出也依次反捲積,分別須要16倍和8倍上採樣,結果就精細一些了。下圖是這個卷積和反捲積上採樣的過程:
.net
下圖是32倍,16倍和8倍上採樣獲得的結果的對比,能夠看到它們獲得的結果愈來愈精確:
blog
FCN的優勢和不足
與傳統用CNN進行圖像分割的方法相比,FCN有兩大明顯的優勢:一是能夠接受任意大小的輸入圖像,而不用要求全部的訓練圖像和測試圖像具備一樣的尺寸。二是更加高效,由於避免了因爲使用像素塊而帶來的重複存儲和計算卷積的問題。
同時FCN的缺點也比較明顯:一是獲得的結果仍是不夠精細。進行8倍上採樣雖然比32倍的效果好了不少,可是上採樣的結果仍是比較模糊和平滑,對圖像中的細節不敏感。二是對各個像素進行分類,沒有充分考慮像素與像素之間的關係,忽略了在一般的基於像素分類的分割方法中使用的空間規整(spatial regularization)步驟,缺少空間一致性。
FCN的擴展
雖然FCN不夠完美,可是其全新的思路開闢了一個新的圖像分割方向,對這個領域的影響是十分巨大的,從2015年3月在arxiv和6月在CVPR會議上發表到寫下這篇博客的時候一年的時間,該文章已被引用高達400次。
在FCN的基礎上,UCLA DeepLab的Liang-Chieh Chen[2]
等在獲得像素分類結果後使用了全鏈接的條件隨機場(fully connected conditional random fields),考慮圖像中的空間信息,獲得更加精細而且具備空間一致性的結果。
Liang-Chieh的這篇文章有兩大特色,一是忽略下采樣過程,轉而使用稀疏的卷積核以增長感知範圍。以下圖所示:
二是使用了Fully Connected CRF。CRF的能量函數中包括數據項和平滑項兩部分,數據項與各個像素屬於各種別的機率有關,平滑項控制像素與像素間類別的一致性。傳統的CRF的平滑項只考慮相鄰像素類別的關聯性,而Fully Connected CRF將圖像中任意兩個像素之間的類別關聯性都考慮進來。
下圖是CNN與Fully Connected CRF結合的示意圖。
實際上,CRF或者Fully Connected CRF是對CNN或者FCN輸出的一種後處理技術。像素分類和空間規整這兩步是分別進行的。Shuai Zheng[3]
等人將Fully Connected CRF表示成迴流神經網絡的結構(recurrent neuron network,RNN),將CNN與這個RNN放到一個統一的框架中,能夠一步到位地對二者同時進行訓練。將圖像分割中的三個步驟:特徵提取、分類器預測和空間規整所有自動化處理,經過學習得到,獲得的結果比FCN-8s和DeepLab的方法的效果好了許多。以下圖結果:
CNN、FCN與Fully Connected CRF的結合及統一的自動訓練具備很不錯的應用價值,已有不少的研究對這幾篇文章進行跟進([2]和[3]的引用都已過百)。例如,帝國理工的Konstantinos Kamnitsas,Daniel Rueckert等人在這幾篇文章的基礎上,提出了三維的多尺度CNN和全鏈接CRF結合的方法,稱爲DeepMedic, 用於腦腫瘤的分割,最近(4月4號)剛發表於arXiv。
參考文獻 1,Long, Jonathan, Evan Shelhamer, and Trevor Darrell. 「Fully convolutional networks for semantic segmentation.」 Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015. 2,Chen, Liang-Chieh, et al. 「Semantic image segmentation with deep convolutional nets and fully connected crfs.」 arXiv preprint arXiv:1412.7062 (2014). 3,Zheng, Shuai, et al. 「Conditional random fields as recurrent neural networks.」 Proceedings of the IEEE International Conference on Computer Vision. 2015. 4,Kamnitsas, Konstantinos, et al. 「Efficient Multi-Scale 3D CNN with Fully Connected CRF for Accurate Brain Lesion Segmentation.」 arXiv preprint arXiv:1603.05959 (2016).