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

相关文章
相关标签/搜索