論文筆記:Fully Convolutional Networks for Semantic Segmentation(FCN)

一、基本信息

標題:Fully Convolutional Networks for Semantic Segmentation
時間:2015
出版源:CVPR
論文領域:計算機視覺、CNN、FCN、語義分割
引用格式:Long, J., Shelhamer, E., & Darrell, T. (2015). Fully convolutional networks for semantic segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 3431-3440).
鏈接:https://www.cv-foundation.org/openaccess/content_cvpr_2015/html/Long_Fully_Convolutional_Networks_2015_CVPR_paper.html

二、研究背景

本文提出端到端的像素到像素的語義分隔網絡,它將語義信息從一個較深、較粗的層結合到一個較淺、較細的層,從而產生精確和詳細的分段。
以往的方法主要有以下的缺點:
(1) 限制容量和感受野的小模型;
(2) 分塊訓練;
(3) 超像素投影的預處理,隨機場正則化、濾波或局部分類;
(4) 對於密集輸出採用輸入移位和輸出交錯的方法;
(5) 多尺度金字塔處理;
(6) 飽和雙曲線正切非線性;
(7) 集成

傳統的基於CNN的分割方法:爲了對一個像素分類,使用該像素周圍的一個圖像塊作爲CNN的輸入用於訓練和預測。
這種方法有幾個缺點:

  • 一是存儲開銷很大例如對每個像素使用的圖像塊的大小爲15x15,然後不斷滑動窗口,每次滑動的窗口給CNN進行判別分類,因此則所需的存儲空間根據滑動窗口的次數和大小急劇上升。
  • 二是計算效率低下。 相鄰的像素塊基本上是重複的,針對每個像素塊逐個計算卷積,這種計算也有很大程度上的重複。
  • 三是像素塊大小的限制了感知區域的大小。 通常像素塊的大小比整幅圖像的大小小很多,只能提取一些局部的特徵,從而導致分類的性能受到限制。

傳統的分類卷積神經網絡,如AlexNet,VGG等都是輸入一幅圖像,輸出圖像所屬類別的概率,因此爲對整幅圖像的類別的預測.而本文中的FCN全卷積網絡則適用於圖像語義分割,即輸入一幅圖像,輸出仍然爲一幅圖像

三、創新點

全卷積網絡

AleNet

在這裏插入圖片描述
輸入是 224x224x3 的圖像,一系列的卷積層和下采樣層將圖像數據變爲尺寸爲 7x7x512 的激活數據體。
AlexNet使用了兩個尺寸爲4096的全連接層,最後一個有1000個神經元的全連接層用於計算分類評分。我們可以將這3個全連接層中的任意一個轉化爲卷積層。

全連接轉化爲卷積層

  • 針對第一個連接區域是[7x7x512]的全連接層,令其濾波器尺寸爲F=7 (卷積核爲7x7),這樣輸出數據體就爲[1x1x4096]了。
  • 針對第二個全連接層,令其濾波器尺寸爲F=1 (卷積核爲1x1),這樣輸出數據體爲[1x1x4096]。
  • 對最後一個全連接層也做類似的,令其F=1 (卷積核爲1x1),最終輸出爲[1x1x1000]

這裏解釋了:卷積核爲1x1
在這裏插入圖片描述

在FCN模型中,完全拋棄了全連接層,並且全部用卷積層替代,從頭到尾的進行卷積操作.最後將會得到一個三維的特徵圖,這個特徵圖的每一個channel的特徵圖代表一個類別的分數,以此進行預測.具體結構如下:

全卷積神經網絡的主要優點在於可以輸入任意大小的圖像

在一個卷積神經網絡中,可以很明顯的看到卷積層是與輸入圖像的大小沒有關係的,即無論圖像多大,都可以進行卷積操作,只是卷積層輸出的特徵圖大小不同.
在卷積神經網絡中,真正限制輸入圖像大小的是最後的全連接層神經元數,因爲全連接層單元數必須與最後一層卷積的輸出特徵圖相匹配(否則會造成全連接層權值參數個數不一致).
使用全卷積網絡替換全連接層,這樣就沒有全連接層單元數的限制,因此可以輸入任意大小的圖像(至少要大於224X224).
當輸入不同大小的圖像時全卷積網絡將會產生不同大小的輸出特徵圖,例如輸入224X224的圖像,則輸出特徵圖爲1X1X1000,輸入512X512的圖像,則輸出特徵圖爲16X16X1000.
另外,全卷積網絡輸出三維特徵圖,保留了原始圖像中的座標信息,這是全連接層所不具備的.
在這裏插入圖片描述

上採樣方法

本文中採用的是雙線性插值.雙線性插值的基本思想就是根據與像素點相鄰的四個像素點進行x,y兩個方向的線性插值,從而得到該像素點的預測值.(圖像處理中的雙線性插值)

跳躍結構

在這裏插入圖片描述
在這裏插入圖片描述

FCN-32s

未使用跳躍結構的模型爲FCN-32s,它直接將最後一層池化的特徵圖進行反捲積得到分割圖像.
原始圖像經過FCN模型中的5次池化,圖像大小壓縮爲原來的1/321/321/32,因此FCN-32s模型中的最後一層直接對它進行了因子ff爲32的上採樣操作
缺點:由於上採樣倍數過大,輸出圖像完全無法體現出原始圖像的細節,是的結果非常差.

FCN-16s

首先對最後一個池化後的特徵圖進行因子爲2的上採樣操作,轉化爲2X2的圖像,然後再與第四次池化後的2X2的特徵圖相疊加,最後對疊加後的結果進行因子爲16的上採樣操作.

FCN-8s

首先對FCN-16s疊加後的特徵圖進行因子爲2的上採樣操作,轉化爲4X4的圖像,然後再與第三次池化後的4X4的特徵圖相疊加,最後對疊加後的結果進行因子爲8的上採樣操作.
在這裏插入圖片描述
通過上面的實驗結果可以發現,FCN-8s 的效果最好;當上採樣的步長降低到 8 的時候,效果提升已經不是很明顯了。即收益遞減,可以不用融合更多的淺層特徵了。

shift and stitch

要從粗糙的原始圖像上採樣得到密集預測,文中提出了shift and stitch方法,但是最後的FCN模型中似乎沒有使用該方法
shift and stitch的主要思想是對原始圖像進行多層次平移池化,即原始圖像產生多套池化特徵圖,最後上採樣的時候可以根據多個池化特徵圖精準的復原圖像。
具體操作是,設降採樣因子爲f,把輸入圖像向右平移x個像素,向下平移y個像素,x,y分別從0~f,產生f2f^2個版本的池化特徵圖,理論上這些特徵圖的總和包含原始圖像的全部信息,沒有因爲池化而損失信息。把這f2f^2個版本的特徵圖連接起來(stitch),就是上採樣過程。

作者發現從上採樣中學習更有效和高效,特別是結合了跨層融合。

patchwise training

通常做語義分割都是使用patchwise training,就是將一張圖片的重要部分裁剪下來進行訓練,以避免整張圖片直接進行訓練所產生的信息冗餘,這種方法有助於快速收斂。但本文提出直接使用整張圖片也許能使效果更好,而patchwise training可能使信息受損(所以原文中說,patchwise training is loss sampling)。因爲,一整張圖片可能是空間相關性的,而patchwise就減少了這種相關性。
patchwise訓練是一種損失採樣

小結

實際上理解好這篇文章,只需要理解好一下三點即可

  1. 將分類網改寫爲用於分割的像素點分類網。具體的包括兩個方面,即將全連接層改寫爲卷積層,和使用反捲積完成上採樣的過程;
  2. 使用跳躍連接的結構,將深的粗糙的信息與淺的精細的信息相結合,產生準確和精細的分割;
  3. 使用微調進行實驗。

四、實驗結果

在這裏插入圖片描述
圖五說明下采樣對速度沒有提示,這也就解釋爲什麼不用patchwise training
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

五、結論與思考

作者結論

全卷積網絡是模型非常重要的部分,是現代化分類網絡中一個特殊的例子。認識到這個,將這些分類網絡擴展到分割並通過多分辨率的層結合顯著提高先進的技術,同時簡化和加速學習和推理。

總結

初步理解FCN,主要思想是把CNN中原來的全連接層換成全卷積層,實現端到端預測,爲了細化預測,又提出FCN-16,FCN-8,使用跳躍結構。

思考

實驗過程不是很明白。對於全卷積過程沒有進行仔細推導。

參考

卷積神經網絡分析與總結(FCN圖像分割)
FCN——Fully convolutional networks for semantic segmentations
Fully Convolutional Networks for semantic Segmentation(深度學習經典論文翻譯)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章