FCNN全卷積神經網路補充

FCNN全卷積神經網路補充

1.unsample的具體實現方法

首先看FCN-32s,只需要看第一行,網路中共有五個pool層,所以conv7層得到的特徵圖是原始圖像的1/32。由於最左側原始輸入圖像的尺寸為32 	imes 32,所以conv7層對應的特徵圖為1 	imes 1,然後再經過32x unsampled prediction 圖片變回32 	imes 32。FCN的作者在這裡加了一個卷積層,卷積後的大小為輸入圖像的32倍,假設這個卷積核的大小是32,這樣就是需要通過反饋訓練32 	imes 32個權重變數即可讓圖像實現end to end,完成了一個32x的unsample,FCN作者稱之為後卷積。

再看FCN-16s,把第一行和第二行連起來看,忽略32x unsampled prediction。在conv7層,先要進行一個2x conv7的操作,也是增加一個卷積層,卷積後的特徵圖為conv7的2倍。此時2x conv7的圖像大小和pool4的大小是一樣的,這時候將2x conv7層和pool4層的圖像進行一個fuse操作(實為將兩個層的圖像相加),fuse後的圖像仍為2 	imes 2,然後進行16x unsampled操作,得到的圖像為32 	imes 32,尺寸與原始圖像大小一致。

最後我們看FCN-8s,把第一行和第三行連起來看,同樣忽略32x unsampled prediction。在conv7層經過一次4x unsample操作,輸出的特徵圖為4 	imes 4。再把pool4層進行一次2x unsample操作,得到的特徵圖大小為4 	imes 4,最後把4x conv7,2x pool4和pool3的輸出進行fuse操作,求和得到的特徵圖進行8x unsample操作,得到與原始圖像尺寸同為32 	imes 32的的輸出圖像。

由上述三種unsample的方法可以看出,其實際是通過增加卷積層和使用bp反饋的訓練方法訓練卷積層達到end to end,此時卷積層的作用可以認為是pool的逆過程。同時,作者通過實驗得出結論:FCN-8s優於FCN-16s和FCN-32s。

2.如何改進得到更好的結果

unsample中的卷積步長為32,假設輸入圖像為500 	imes 500 	imes 3,輸出是544 	imes 544,邊緣很不好,並且限制了上採樣輸出圖像的細節。

為了解決這一問題,通常使用skiplayer的方法,在淺層處減少unsample的步長,並將得到的fineplayer和高層得到的coarselayer做融合,然後在unsample得到輸出。

這種做法兼顧了local和global的信息,即作者文中的combining what and where,取得了不錯的效果提升。


推薦閱讀:

谷歌今日上線基於TensorFlow的機器學習速成課程(免費中文版)
第三章 線性模型
機器學習:分類演算法(Classification)
採用牛頓法來最大化對數似然函數
計算機視覺領域的一些牛人博客,超有實力的研究機構等的網站鏈接

TAG:深度學習DeepLearning | 神經網路 | 機器學習 |