FCN论文理解

代码参考

准备接触一下图像分割,首先从FCN看起。

FCN中主要是进行encoder-decoder的过程,将图像输入conv层得到feature map,再通过upsampling的方式,deconv为和如图图像一样的大小。

以vgg16为例,pool层一共有5个,每进行一次pooling操作,因为其stride为2,所以计算后feature的大小就会成为计算前的1/2,所以在pool5输出后,图像为原大小的1/32。

FCN提出了三种结构,FCN-32s,FCN16s,FCN-8s,其中FCN-8s的效果最好。

FCN的训练需要训练三次,FCN32s、FCN16s、FCN8s

FCN-32s

原vgg16的结构如下

FCN-32s的结构如下:

其中fc6为kernel为7的卷积层,fc7为kernel为7,stride为1。

drop7的输出,输入到score_fr中,score_fr用来分成21类;通过upscore上采样,生成score;score和输入的data相比较,crop成和data一样的大小。

FCN-8s

FCN-8s的结构如下:

score_fr:输出fc7层的分类

upscore2:stride为2的deconvolution,上采样为1/16

score_pool4:输出pool4层的分类

score_pool4c:通过upscore2的大小,crop score_pool4

fuse_pool4:将pool5 devonvolution为1/16和pool4出来的层elewise相加

upscore_pool4:将fuse_pool4上采样2倍

score_pool3:pool3输出21类分类

score_pool3c:通过upscore_pool4的大小,crop score_pool3

fuse_pool3c:upscore_pool4为1/8和pool3出来的层elewise相加

upscore8:上采样8

score:crop

 

总结:

1.在最后一层后加上softmax,就可以实现对不同类别大小的概率进行估计,实现end to end

2.FCN的核心贡献为提出卷积层实现让图片end to end分类

3.缺点为,由于使用了较浅层的同志,因为fuse操作会加上浅层的pool后的特征值,导致高维特征不能很好的利用;同时因为crop,导致FCN对于图像大小的变化有要求,如果测试集与训练集的图像相差较大,则效果会变差。

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值