FCN的理解

FCN的理解直观展现网络结构 http ethereon github io netscope editor 卷积与逆卷积的动图 https github com vdumoulin conv arithmetic 原文图 Fullyconvolu nbsp 上图中 32x 即为扩大 32 倍

直观展现网络结构:http://ethereon.github.io/netscope/#/editor

卷积与逆卷积的动图https://github.com/vdumoulin/conv_arithmetic

【原文图】“Fully convolutional networks for semantic segmentation.” 

FCN的理解

上图中,32x即为扩大32倍。

Pool5扩大32倍就可以得到原来图像大小了。

Pool5扩大2倍与Pool4融合得到,再扩大16倍也可以得到原来图像大小了。

扩大2倍与Pool3融合再扩大8倍也可以得到原来图像大小了。

以下内容来自http://blog.csdn.net/shenxiaolu1984/article/details/

核心思想

网络结构

全卷积-提取特征

论文中,达到最高精度的分类网络是VGG16,但提供的模型基于AlexNet。此处使用AlexNet便于绘图。

逐像素预测

虚线下半部分中,分别从卷积网络的不同阶段,以卷积层(蓝色×3)预测深度为21的分类结果。

反卷积-升采样

(这里会先进行上采样,即扩大像素;再进行卷积——通过学习获得权值)

下半部分,反卷积层(橙色×3)可以把输入数据尺寸放大。和卷积层一样,上采样的具体参数经过训练确定。

这里图像的反卷积与下图的full卷积原理是一样的,使用了这一种反卷积手段使得图像可以变大,FCN作者使用的方法是这里所说反卷积的一种变体,这样就可以获得相应的像素值,图像可以实现end to end

跳级结构

下半部分,使用逐数据相加(黄色×2),把三个不同深度的预测结果进行融合:较浅的结果更为精细,较深的结果更为鲁棒。 
在融合之前,使用裁剪层(灰色×2)统一两者大小。最后裁剪成和输入相同尺寸输出。

训练

训练过程分为四个阶段,也体现了作者的设计思路,值得研究。

第1阶段

这里写图片描述 
以经典的分类网络为初始化。最后两级是全连接(红色),参数弃去不用。

第2阶段

这里写图片描述 
从特征小图(16*16*4096)预测分割小图(16*16*21),之后直接升采样为大图。 
反卷积(橙色)的步长为32,这个网络称为FCN-32s。 
这一阶段使用单GPU训练约需3天。


第3阶段

这里写图片描述 
升采样分为两次完成(橙色×2)。 
在第二次升采样前,把第4个pooling层(绿色)的预测结果(蓝色)融合进来。使用跳级结构提升精确性。 
第二次反卷积步长为16,这个网络称为FCN-16s。 
这一阶段使用单GPU训练约需1天。



第4阶段

这里写图片描述 
升采样分为三次完成(橙色×3)。 
进一步融合了第3个pooling层的预测结果。 
第三次反卷积步长为8,记为FCN-8s。 
这一阶段使用单GPU训练约需1天。



较浅层的预测结果包含了更多细节信息。比较2,3,4阶段可以看出,跳级结构利用浅层信息辅助逐步升采样,有更精细的结果。 
这里写图片描述

其他参数

minibatch:20张图片 
learning rate:0.001 
初始化: 
分类网络之外的卷积层参数初始化为0。 
反卷积参数初始化为bilinear插值。最后一层反卷积固定位bilinear插值不做学习。



结论

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176306.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午10:15
下一篇 2026年3月26日 下午10:15


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号