pascalcontext-fcn全卷積網絡結構理解


一、說明

fcn的開源代碼:https://github.com/shelhamer/fcn.berkeleyvision.org

論文地址:fully convolutional networks for semantic segmentation

其中,pascalcontext-fcn語義分割,算上背景,一共分割為60類。

pascalcontext-fcn全卷積神經網絡主要使用了三種技術:

1. 卷積化(Convolutional)

2. 上采樣(Upsample)

3. 跳躍結構(Skip Layer)

 

二、網絡結構概況

image

1、FCN-32s

通過前五段的卷積層,直接從第五個最大池化層通過32倍上采樣,得到和原圖高寬一致的多通道預測label;

2、FCN-16s

pool5通過兩倍上采樣,得到預測label,與pool4 的預測label求和,再進行16倍上采樣,得到和原圖高寬一致的多通道預測label;

3、FCN-8s

pool5通過兩倍上采樣,得到預測label,與pool4 的預測label求和,再將求和結果進行2倍上采樣,與pool3的預測label求和,最終進行8倍上采樣,得到和原圖高寬一致的多通道預測label。

4、訓練過程

使用vgg16初始化FCN-32s網絡結構;再將訓練好的FCN-32s去初始化FCN-16s;再將訓練好的FCN-16s去初始化FCN-8s。

 

三、各階段網絡結構

1、pascalcontext-fcn32s

image

原vgg16的最后三層全連接層,都改為卷積層,通過上采樣得到upscore,再進行crop得到和原圖寬高一致的預測label(score層)。

2、pascalcontext-fcn16s

image

將scrore_fr進行兩倍上采樣得到預測標簽upscore2;將pool4的預測s標簽core_pool4進行crop,得到和upscore2一樣尺寸的預測標簽score_pool4c;然后將upscore2與score_pool4c求和,得到fuse_pool4;再進行16倍上采樣,再crop,就得到預測標簽score。

3、pascalcontext-fcn8s

image

將fuse_pool4進行兩倍上采樣得到upscore_pool4;將pool3的預測標簽score_pool3進行crop(寬高與upscore_pool4一致),得到score_pool3c;將upscore_pool4與score_pool3c求和得到fuse_pool3;然后進行8倍上采樣,crop,得到預測標簽score。

 

四、其他說明

1、查看網絡結構的在線工具:http://ethereon.github.io/netscope/#/editor

2、pool4、pool3的上采樣,有進行了crop操作,會造成信息的損失,該網絡結構有一個巧妙的處理,在第一層卷積層四周添加pad為100,再進行卷積操作,即先擴展圖片,之后再進行crop。裁切

的區域也是補出來的區域,這樣就能無損地像素級分割。讀者可試着計算pad的最小值。

layer {
  name: "conv1_1"
  type: "Convolution"
  bottom: "data"
  top: "conv1_1"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 64
    pad: 100
    kernel_size: 3
    stride: 1
  }
}

 

 

end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM