全卷積神經網路FCN

-牧野-發表於2018-07-19

卷積神經網路CNN(YannLecun,1998年)通過構建多層的卷積層自動提取影象上的特徵,一般來說,排在前邊較淺的卷積層採用較小的感知域,可以學習到影象的一些區域性的特徵(如紋理特徵),排在後邊較深的卷積層採用較大的感知域,可以學習到更加抽象的特徵(如物體大小,位置和方向資訊等)。CNN在影象分類和影象檢測領域取得了廣泛應用。
 
CNN提取的抽象特徵對影象分類、影象中包含哪些類別的物體,以及影象中物體粗略位置的定位很有效,但是由於採用了感知域,對影象特徵的提取更多的是以“一小塊臨域”為單位的,因此很難做到精細(畫素級)的分割,不能很準確的劃定物體具體的輪廓。
 
針對CNN在影象精細分割上存在的侷限性,UC Berkeley的Jonathan Long等人2015年在其論文 “Fully convolutional networks for semantic segmentation”(用於語義分割的全卷積神經網路)中提出了Fully Convolutional Networks (FCN)用於影象的分割,要解決的核心問題就是影象畫素級別的分類。論文連結: https://arxiv.org/abs/1411.4038
 
FCN與CNN的核心區別就是FCN將CNN末尾的全連線層轉化成了卷積層:


以Alexnet為例,輸入是227*227*3的影象,前5層是卷積層,第5層的輸出是256個特徵圖,大小是6*6,即256*6*6,第6、7、8層分別是長度是4096、4096、1000的一維向量。

 

在FCN中第6、7、8層都是通過卷積得到的,卷積核的大小全部是1*1,第6層的輸出是4096*7*7,第7層的輸出是4096*7*7,第8層的輸出是1000*7*7(7是輸入影象大小的1/32),即1000個大小是7*7的特徵圖(稱為heatmap)。

 

經過多次卷積後,影象的解析度越來越低,,為了從低解析度的heatmap恢復到原圖大小,以便對原圖上每一個畫素點進行分類預測,需要對heatmap進行反摺積,也就是上取樣。論文中首先進行了一個上池化操作,再進行反摺積,使得影象解析度提高到原圖大小:

 

 對第5層的輸出執行32倍的反摺積得到原圖,得到的結果不是很精確,論文中同時執行了第4層和第3層輸出的反摺積操作(分別需要16倍和8倍的上取樣),再把這3個反摺積的結果影象融合,提升了結果的精確度:


最後畫素的分類按照該點在1000張上取樣得到的圖上的最大的概率來定。
 

FCN可以接受任意大小的輸入影象,但是FCN的分類結果還是不夠精細,對細節不太敏感,再者沒有考慮到畫素與畫素之間的關聯關係,丟失了部分空間資訊。

相關文章