1. 程式人生 > >轉:全卷積網路(FCN)與影象分割

轉:全卷積網路(FCN)與影象分割

學習收藏。

從影象分類到影象分割

卷積神經網路(CNN)自2012年以來,在影象分類和影象檢測等方面取得了巨大的成就和廣泛的應用。

CNN的強大之處在於它的多層結構能自動學習特徵,並且可以學習到多個層次的特徵:較淺的卷積層感知域較小,學習到一些區域性區域的特徵;較深的卷積層具有較大的感知域,能夠學習到更加抽象一些的特徵。這些抽象特徵對物體的大小、位置和方向等敏感性更低,從而有助於識別效能的提高。

這些抽象的特徵對分類很有幫助,可以很好地判斷出一幅影象中包含什麼類別的物體,但是因為丟失了一些物體的細節,不能很好地給出物體的具體輪廓、指出每個畫素具體屬於哪個物體,因此做到精確的分割就很有難度。

傳統的基於CNN的分割方法的做法通常是:為了對一個畫素分類,使用該畫素周圍的一個影象塊作為CNN的輸入用於訓練和預測。這種方法有幾個缺點:一是儲存開銷很大。例如對每個畫素使用的影象塊的大小為15x15,則所需的儲存空間為原來影象的225倍。二是計算效率低下。相鄰的畫素塊基本上是重複的,針對每個畫素塊逐個計算卷積,這種計算也有很大程度上的重複。三是畫素塊大小的限制了感知區域的大小。通常畫素塊的大小比整幅影象的大小小很多,只能提取一些區域性的特徵,從而導致分類的效能受到限制。

針對這個問題, UC Berkeley的Jonathan Long等人提出了Fully Convolutional Networks (FCN)[1][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倍的上取樣,以得到原圖一樣的大小。

這個上取樣是通過反捲積(deconvolution)實現的。對第5層的輸出(32倍放大)反捲積到原圖大小,得到的結果還是不夠精確,一些細節無法恢復。於是Jonathan將第4層的輸出和第3層的輸出也依次反捲積,分別需要16倍和8倍上取樣,結果就精細一些了。下圖是這個卷積和反捲積上取樣的過程: 這裡寫圖片描述

下圖是32倍,16倍和8倍上取樣得到的結果的對比,可以看到它們得到的結果越來越精確: 這裡寫圖片描述

FCN的優點和不足

與傳統用CNN進行影象分割的方法相比,FCN有兩大明顯的優點:一是可以接受任意大小的輸入影象,而不用要求所有的訓練影象和測試影象具有同樣的尺寸。二是更加高效,因為避免了由於使用畫素塊而帶來的重複儲存和計算卷積的問題。

同時FCN的缺點也比較明顯:一是得到的結果還是不夠精細。進行8倍上取樣雖然比32倍的效果好了很多,但是上取樣的結果還是比較模糊和平滑,對影象中的細節不敏感。二是對各個畫素進行分類,沒有充分考慮畫素與畫素之間的關係,忽略了在通常的基於畫素分類的分割方法中使用的空間規整(spatial regularization)步驟,缺乏空間一致性。

FCN的擴充套件

雖然FCN不夠完美,但是其全新的思路開闢了一個新的影象分割方向,對這個領域的影響是十分巨大的,從2015年3月在arxiv和6月在CVPR會議上發表到寫下這篇部落格的時候一年的時間,該文章已被引用高達400次。

在FCN的基礎上,UCLA DeepLab的Liang-Chieh Chen[2][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][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).

參考: