FCN: Fully Convolutional Networks for Semantic Segmentation
作者:Jonathan Long, Evan Shelhamer ,Trevor Darrell
UC Berkeley
[pdf]—CVPR2015Best Paper
0. 簡介
本文將經典網絡結構(AlexNet,VGG等)改爲全卷積神經網絡,通過有監督預訓練的方法端到端的完成image semantic segmentation這種像素級任務,取得了 state- of-the-art segmentation of PASCAL VOC (20% relative improvement to 62.2% mean IU on 2012)。文中利用skip connection結合深淺層信息,使得分割結果更加精細,即解決semantics and location之間的矛盾。
a skip architecture that combines semantic information from a deep, coarse layer with appearance information from a shallow, fine layer to produce accurate and detailed segmentations.
1.Fully convolutional networks定義
卷積神經網絡中的常見層(卷積,池化,激活函數)都是隻依賴於相對空間座標,記:
那麼
k是kernel size,s是stride,f決定層的類型。若上式中的函數形式經複合後保持相同的形式,且其kernel size和stride滿足下式如下變換規則:
這樣的網絡叫做全卷積神經網絡。全卷積網絡(FCN)可以處理任意大小的輸入,併產生對應大小的輸出。計算損失函數時也與patchwise處理具有相同作用,如果損失函數是對最後一層所有空間維度損失函數的和,即:
3. Adapting classifiers for dense prediction
帶有全聯接層的網絡結構要求input size是固定的,可以利用kernel size 定義爲 feature map size大小的卷積來代替全連接網絡,如上圖,第一個全連接改爲4096個(6*6)的卷積,之後兩層定義爲若干個1*1的卷積。這樣對於任意尺寸的輸入圖像,都可以通過改變的網絡計算得到相應的heatmap。
4.Upsampling is backwards strided convolution
爲了完成從高層語義特徵到像素類別的映射,作者應用了 deconvolution,文中作者提到了Decreasing subsampling 和shift-and-stitch trick方法,但是應用到網絡中都是不同組成件的trade-off。其實插值法是deconvolution中的一個特例,文中指出反捲積中的參數不需要固定,參數也隨着訓練更新。
5. Segmentation Architecture
We decapitate each net by discarding the final classifier layer, and convert all fully connected layers to convolutions. We append a 1 × 1 convolution with channel dimension 21 to predict scores for each of the PASCAL classes (including background) at each of the coarse output locations, followed by a deconvolution layer to bilinearly upsample the coarse outputs to pixel-dense outputs.
作者實驗了幾種網絡結構,實驗結果如下:
最終實驗網絡爲VGG-16。
FCN-32s直接將conv7的輸出進行反捲積上採樣到與輸入尺寸相同,最終得到的分割結果比較粗糙,作者提出要將高層語義信息於淺層位置信息結合的方法,得到FCN-16s,FCN-8s。FCN-16s將conv7進行上採樣2倍至pool4大小,然後將其進行相加,接着再上採樣16倍至輸入圖片大小;FCN-8s綜合了conv7,pool4,poo3的輸出,實驗證明這種結構效果最好。
實驗結果
與其他方法對比,大幅度領先。