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

1、說明git

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

論文地址:fully convolutional networks for semantic segmentation網絡

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

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

1. 卷積化(Convolutional)spa

2. 上採樣(Upsample)code

3. 跳躍結構(Skip Layer)blog

 

2、網絡結構概況圖片

image

一、FCN-32sip

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

二、FCN-16s

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

三、FCN-8s

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

四、訓練過程

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

 

3、各階段網絡結構

一、pascalcontext-fcn32s

image

原vgg16的最後三層全鏈接層,都改成卷積層,經過上採樣獲得upscore,再進行crop獲得和原圖寬高一致的預測label(score層)。

二、pascalcontext-fcn16s

image

將scrore_fr進行兩倍上採樣獲得預測標籤upscore2;將pool4的預測s標籤core_pool4進行crop,獲得和upscore2同樣尺寸的預測標籤score_pool4c;而後將upscore2與score_pool4c求和,獲得fuse_pool4;再進行16倍上採樣,再crop,就獲得預測標籤score。

三、pascalcontext-fcn8s

image

將fuse_pool4進行兩倍上採樣獲得upscore_pool4;將pool3的預測標籤score_pool3進行crop(寬高與upscore_pool4一致),獲得score_pool3c;將upscore_pool4與score_pool3c求和獲得fuse_pool3;而後進行8倍上採樣,crop,獲得預測標籤score。

 

4、其餘說明

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

二、pool四、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

相關文章
相關標籤/搜索