全卷积网络FCN几点认识

FCN全卷积网络,作为语义分割的鼻祖,研究了一下,但是,其中几个问题一直没有想明白,现汇总一下。

1、首个卷积层为什么pad=100 ?

这里写图片描述

我们从VGG16网络结构中探究原因。
VGG16的特点是,conv5之前的卷积层均使用卷积核 kernel_size=3,pad=1,因此,卷积前后不改变数据尺寸,改变featrueMap的尺寸只有pooling层。
现在我们只考虑pooling层,所有pooling层参数也一致: kernel_size: 2,stride: 2
pool1的输入图像尺寸 h
pool1:h1=(h2)/2+1=h/2
pool2:h2=(h12)/2+1=h/22
pool3:h3=(h22)/2+1=h/23
…………………………
…………………………
pool5:h5=(h42)/2+1=h/25
可以看出,图像尺寸缩小了32倍。之后为卷积化后的fc6。
这里写图片描述

fc6:h6=(h57)/1+1=(h192)/25 …………………………………………………………….式(1)
后接着的层为 fc7和 score_fr_sem层,此两层均为 1*1卷积核,不会对featureMap大小产生影响。因此输入反卷积层的输入尺寸为 h6 !!!!!
通过以上可以看出,如果不加pad 100,那么原始图像尺寸小于192则出现问题。当pad 100后,原始图像尺寸设为 h ,则输入至pool1的尺寸为:
conv1:h=(h3+2100)/1+1=h+198
带入式(1),最终可知输入反卷积的尺寸为:
fc6:h6=(h+6)/25

2、反卷积层和Crop层如何产生和原图尺寸相同的输出?

这里写图片描述

stride=32,因为图像缩小了32倍,因此在featureMap上相邻像素在原图的间隔为32.
kernel_size=64,不明白是啥原因。只知道64可保证2*2个featureMap的值参与局部差值运算。

卷积后的输出尺寸计算方法:
W=(WikernelSize+2pad)/stride+1
因此反卷积输出尺寸计算方法:
Wi=Wstridestride+kernelSize2pad
因此根据以上公式,继续推倒:
upscore:h7=(h61)32+64=((h+6)/321)32+64=h+38
反卷积之后与原图的尺寸不一致,因此需要crop层参与剪切。

1、axis 从 0开始,
2、offset 偏移量

参数axis=2,表明我们只想裁剪后两个维度,亦即输出尺寸,offset=19,对应于C = A[: , : , 19: 19+h , 19: 19+h ],这正是从(h+38,w+38)upscore层中裁剪出中间的(h,h)的图像,这也就产生了和原图尺寸相同的最终输出!

3、Deconv层,学习率为0,如何理解?

这里写图片描述

我们知道,如果lr_mult=0,则在训练过程中,该层的参数不会参与学习,而默认初始化为constant初始化为,均为0,那么该层有啥作用呢?

通过查看solver.py文件可知,当网络模型加载之后,又调用了surgery.interp函数对反卷积层进行了参数初始化(线性差值)。
这里写图片描述

surgery.py只要调用 upsample_filt函数生成核函数的参数,如下,7*7卷积核生成数据如下:

[[ 0.0625  0.125   0.1875  0.25    0.1875  0.125   0.0625]
 [ 0.125   0.25    0.375   0.5     0.375   0.25    0.125 ]
 [ 0.1875  0.375   0.5625  0.75    0.5625  0.375   0.1875]
 [ 0.25    0.5     0.75    1.      0.75    0.5     0.25  ]
 [ 0.1875  0.375   0.5625  0.75    0.5625  0.375   0.1875]
 [ 0.125   0.25    0.375   0.5     0.375   0.25    0.125 ]
 [ 0.0625  0.125   0.1875  0.25    0.1875  0.125   0.0625]]

4 FCN为什么能进行分割任务呢?

直观上理解,最后全链接层的输出视为heatmap,它的每一个点代表类别概率,代表了某一感受野下的类别。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值