FCN論文筆記

 個人博客:http://www.chenjianqu.com/

原文鏈接:http://www.chenjianqu.com/show-81.html

文:Jonathan Long,Evan Shelhamer,Trevor Darrell.Fully Convolutional Networks for Semantic Segmentation.CVPR 2015

 

素質三連

1.論文貢獻

提出了基於VGG16的FCN語義分割模型,將淺層的表徵信息和深層的語義信息結合起來,產生準確、精細的語義分割。

關鍵點 :

1) 卷積化(Convolutional)

2)上採樣(Upsample)

3)跳躍結構(Skip)

2.實驗結果

達到語義分割的SOTA,在VOC 2012上達到62.2的mean IU,每張圖片分割時間少於0.2s。

3.待解決的問題

分割結果不夠精細。

 

語義分割

    學習圖像處理時就知道了圖像語義分割的概念,即把一張圖片分割爲若干個特定的、具有獨特性質的區域。在2000年之前,主要通過閾值分割、區域分割、邊緣分割、紋理特徵、聚類等方法,2000年到2010年有基於圖論、聚類、分類以及聚類和分類結合的方法,2010年以後主要通過神經網絡進行分割,而本文提出的FCN則是深度學習語義分割的開山之作。從輸入輸出的角度看,語義分割就是將輸入圖片的每一個像素進行分類,因此語義分割也被視爲一種dense prediction。語義分割的實例如下:

1.png

    語義分割和實例分割的不同之處在於它不區分同一類別的實體。語義分割模型接收RGB/灰度圖片作爲輸入,輸出同樣分辨率的分割圖,分割圖的每個像素是對應輸入圖片像素的預測標籤,如下:

1.jpg

    分割圖的每個像素都是一個One-hot向量,即分割圖的不同通道對應不同的類別:

2.jpg

應用場景:

A.自動駕駛

index.jpg

B.醫學圖像診斷

3.jpg

 

FCN語義分割模型

1.模型提出

    Fully Convolutional Network(FCN,全卷積網絡)是一個端到端的、像素到像素的語義分割模型。端對端(end to end)的意思就是輸入到輸出由一個模型搞定,優點是減少了人工操作,模型整體契合度增加,缺點是增加了模型的複雜度,降低了模型的可解釋性。全卷積的意思是整個網絡所有的層都是卷積層。本文提到的FCN指論文提出的用於語義分割的模型。

    全卷積最早出現於拓展LeNet用於識別手寫數字,後來在OverFeat中,使用全卷積網絡用於定位和檢測。有很多工作是使用CNNs進行密集預測(dense prediction),常用以下機制 1.小模型,限制了容量和感受野,2.使用patchwise training 3.使用superpixel projection,random field regularization,filtering,local classification進行後處理。4.輸入移位和輸出交錯,比如OverFeat裏面的offset pooling。5.多尺度金字塔處理。6.飽和tanh非線性。7.使用集成模型。但是FCN並不使用以上機制,而是先在ImageNet上預訓練大型CNNs(比如VGG16),然後將其轉換爲FCN,添加新的層,最後進行微調。

    在這篇論文之前,有人用CNNs進行語義分割,他們用周圍的像素預測某個像素的類別,即patchwise,需要預處理或後處理,使用小型CNNs。相比之下,FCN是像素到像素,即pixelwise,更高效、直接,不需要預處理和後處理,使用預訓練的大型CNNs進行fine-tuning:

4.jpg

    語義分割要解決語義和位置之間的內在衝突:全局信息解決what(是什麼),局部信息解決where(在哪裏)。FCN使用深層特徵層級( Deep feature hierarchies)局部到全局金字塔(local-to- global pyramid)中共同編碼位置和語義,這裏作者提出一個叫”skip”新架構,將深層的、粗糙的語義信息和淺層的、精細的表徵信息結合起來。

 

2.FCN原理和架構

    像LeNet AlexNet這樣的分類模型,由於FC層的存在,只能接收固定分辨率的圖片。因此可以像OverFeat一樣,將FC層轉換爲1x1卷積層,就可以接收不同的分辨率的輸入。

    語義分割需要輸出與原圖相同分辨率的分割圖,而1x1卷積後得到的是粗糙的、抽象的、低分辨率的特徵圖。從粗糙的特徵圖中得到密集預測(也就是分割圖)的方法,OverFeat使用的是shift-and-stitch(或稱爲offset pooling)方法,而FCN使用的是插值的方法。學過圖像處理的都知道,圖像放大採用插值方法,比如最近鄰插值,雙線性插值等。這裏採用插值的方法將低分辨率特徵圖映射到高分辨率的分割圖,採用的是backwards convolution(反捲積、轉置卷積)。轉置卷積在DCGAN裏面也有使用,它的優點是可以端對端訓練和使用,更加高效快速,關於轉置卷積的理解:https://blog.csdn.net/Fate_fjh/article/details/52882134

    將分類模型轉換爲分割模型的示意圖:

5.jpg

 

CNNs選擇

    本論文發表時,可選的預訓練CNNs有AlexNetVGG netGoogLeNet等,這裏對這幾個模型遷移到語義分割的性能做了比較。對於三個分類模型,將FC層轉換爲1x1卷積層,再增加一個有21個通道的1x1卷積層,對應到PASCAL中的分類,最後再後接上採樣層得到語義分割模型。特別的,對於GoogLeNet,僅用最後的輸出層,去掉GAP層。各模型在PASCAL VOC上的對比結果如下:

6.jpg

    可以看到,儘管GoogLeNetVGG16的分類精度差不多,但是很明顯VGG16遷移到FCN的性能要好的多。

 

將what和where聯合起來

    作者提出一種新的架構將粗糙的/高級和精細的/低級的特徵結合起來,名爲跳躍結構(ski),如下圖所示:

7.jpg

    其中FCN-32s表示不使用跳躍連接,32表示上採樣的stride=32; FCN-16s表示先上採樣2x,與pooling4層的輸出經過1x1卷積得到的特徵圖相加,再進行16x的上採樣;而FCN-8s則是先上採樣2x,與pooling4層的輸出經過1x1卷積得到的特徵圖相加,再上採樣2x,與pooling3層的輸出經過1x1卷積得到的特徵圖相加,再上採樣8x。下面是定性對比:

8.jpg

    可以看到,不使用ski架構的情況下(FCN-32s),分割結果十分粗糙,而使用多層語義信息的FCN-8s,分割結果精細得多。這是因爲底層的特徵圖中保留了大量的精細的表徵信息,越往後面,網絡學到的特徵越抽象,因此這種精細層和粗糙層的結合能產生很好的結果。作者稱這種非線性局部特徵層級爲deep jet。下圖爲定量對比:

9.jpg

    從上圖還可以知道,對整個模型fine-tuning的效果要遠好於只fine-tuning新加入的層。除了通過跳躍結構得到精細結果之外,其它的方法包括減小池化層的stride、使用shift-and-stitch等。

 

3.訓練

Fine-tuning參數

    優化器是動量爲0.9的SGD。權重衰減係數爲5^-4或2^-4。batch size爲20。FCN-ALexNet、FCN-VGG16、FCN-GoogLeNet的學習率分別爲10^-3、10^-4、10^-5。偏置參數的學習率是權重參數的兩倍。對class scoring 卷積層使用零初始化。Dropout和預訓練模型裏的一樣。

    這裏使用整張圖片進行訓練,而不是像以前的論文那樣使用patch training。下面是使用兩者效果的對比,可以看到兩者都能收斂到差不多的精度,但是FCN花的時間更少。

10.jpg

Class Balancing

    在神經網絡中,一個重要的問題是需要平衡各類別的訓練樣本數。而FCN可以自己平衡類別,即使輸入的樣本類別不是很平衡,即平均每張圖片中有3/4的像素是背景,但這對模型沒有影響。

數據增強

    作者嘗試對訓練數據使用鏡像或隨機平移32像素,但是發現沒有明顯提升。

訓練數據

    使用PASCAL VOC 2011語義分割訓練集的1112張+Hariharan收集的8498張。

實現

    基於Caffe,在單NVIDIA Tesla K40s上訓練。

 

4.實驗結果

指標(Metrics)

    nij是類別i被預測爲類別j的像素數量,有ncl個不同的類別。令tijnij是類別i的總像素數。計算:

11.jpg

    我給翻譯翻譯:

像素精度:預測正確的像素數/像素總數

平均精度:各個類別的平均像素精度

mIU(Mean Intersection over Union,均交併比):IoU=(A交B)/(A並B ) = Sab / (Sa + Sb - Sab),則mIU是每個類像素總數ti與預測爲該類的像素總數Σjnji的IoU的均值。

頻率加權IU:各類加權的IoU。

    下面是FCN在各個數據集上的測試結果:

PACAL VOC實驗結果

    FCN-8s與RCNN、SDS的對比:

12.jpg

    可以看到FCN不僅性能大幅超過其它模型,達到了SOTA,而且推斷時間大大減小。下面是語義分割實例:

13.jpg

NYUDv2實驗結果

14.jpg

SIFT Flow實驗結果

15.jpg

 

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