FCN详解

FCN详解FCN fullyconvolu FCN 对图像进行像素级的分类 从而解决了语义级别的图像分割 semanticsegm 问题 与经典的 CNN 在卷积层之后使用全连接层得到固定长度的特征向量进行分类 全连接层 softmax 输出 不同 FCN 可以接受任意尺寸的输入图像 为什么 因为全连接层的输入要求是个定值 这样层层向前推进 输入也就是固定的了 采用反卷积层对

FCN(fully convolution net)

FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全连接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像(为什么?因为全连接层的输入要求是个定值,这样层层向前推进,输入也就是固定的了),采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。 ​

FCN详解

 

 (1)在CNN中, 猫的图片输入到AlexNet, 得到一个长为1000的输出向量, 表示输入图像属于每一类的概率, 其中在“tabby cat”这一类统计概率最高, 用来做分类任务。

(2)FCN与CNN的区别在于把CNN最后的全连接层转换成卷积层,输出的是一张已经带有标签的图片, 而这个图片就可以做语义分割。

(3)CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征: 较浅的卷积层感知域较小,学习到一些局部区域的特征;较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。高层的抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高, 所以我们常常可以将卷积层看作是特征提取器。

 FCN详解

(1)全连接层转化为全卷积层 : 在CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个不同类别的概率。FCN将这3层表示为卷积层,卷积核的大小分别为 (1,1,4096)、(1,1,4096)、(1,1,1000)。

(2)经过多次卷积和pooling以后,得到的图像越来越小,分辨率越来越低。上图中7*78channel之后对原图像进行unpooling,把图像进行放大几次到原图像的大小。

 

UnPooling UnsamplingDeconvolution的区别:

unpooling是填充0unsampling是填充相同的值

FCN详解

FCN详解

上图是full卷积,full卷积:输入(蓝色2*2大小的图形)为N1*N1,卷积核(灰色的3*3)大小为N2*N2,卷积后图像大小为N1+N2-1(绿色4*4)

 

图像的deconvolution实现过程:

FCN详解

输入:2X2, 卷积核4X4,滑动步长:3,输出7X7

输入与输出的关系为:outputSize = (input – 1) * stride + kernel_size

1.先对每一个像素做full卷积,卷积后输出大小为1+4-1=4,得到4*4大小的特征图(2*2大小分开卷积,相当于4个1*1的图形做卷积)

2.对四个特征图进行步长为3的fusion(相加),步长为3是指每隔3个像素进行fusion,重叠部分进行相加,即输出的第一行第四列是由红色特征图的第一行第四列与绿色特征图第一行第一列相加得到,其他的依此类推

 

反卷积说明

反卷积(deconvolutional)运算的参数和CNN的参数一样是在训练FCN模型的过程中通过bp算法学习得到。反卷积层也是卷积层,不关心input大小,滑窗卷积后输出output。deconv并不是真正的deconvolution(卷积的逆变换),最近比较公认的叫法应该是transposed convolution,deconv的前向传播就是conv的反向传播。

反卷积参数: 利用卷积过程filter的转置(先水平翻转,再竖直方向上翻转filter)作为计算卷积前的特征图。

蓝色是反卷积层的input,绿色是output

FCN详解

FCN详解

跳级(skip)结构

对CNN的结果做处理,得到了dense prediction,而作者在试验中发现,得到的分割结果比较粗糙,所以考虑加入更多前层的细节信息,也就是把倒数第几层的输出和最后的输出做一个fusion,就是对应元素相加

FCN详解

 

FCN例子: 输入可为任意尺寸图像彩色图像;输出与输入尺寸相同,深度为:20类目标+背景=21,模型基于AlexNet。

蓝色:卷积层。

绿色:Max Pooling层。

黄色: 求和运算, 使用逐数据相加,把三个不同深度的预测结果进行融合:较浅的结果更为精细,较深的结果更为鲁棒。

灰色: 裁剪, 在融合之前,使用裁剪层统一两者大小, 最后裁剪成和输入相同尺寸输出。

对于不同尺寸的输入图像,各层数据的尺寸(height,width)相应变化,深度(channel)不变。

 

 FCN详解

FCN缺点

(1)得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。

(2)对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。

 

参考:https://github.com/scutan90/DeepLearning-500-questions

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

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

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


相关推荐

  • SchedulerFactoryBean的问题「建议收藏」

    SchedulerFactoryBean的问题「建议收藏」http://blog.csdn.net/beliefer/article/details/51578546转载于:https://www.cnblogs.com/yangwei20160911/p/6867182.html

    2022年5月10日
    43
  • 前端常见的浏览器兼容问题

    前端常见的浏览器兼容问题不同浏览器的内核不尽相同 所以各个浏览器对网页的解析存在一定的差异 浏览器内核主要分为两种 一是渲染引擎 另一个是 js 引擎所以浏览器兼容性问题一般指 css 兼容 js 兼容一 样式初始化由于各大浏览器会有自身的默认样式 并且不尽相同 所以为了尽可能的保证样式的统一性 前端在开发项目之前都会先进行样式格式化 最常见的分为以下几个方面 1 pandding 值和 margin 值均设置为 0 将 html body a li ol input textarea select button 等标签的

    2026年3月16日
    2
  • MySQL数据库管理工具_Mysql数据库

    MySQL数据库管理工具_Mysql数据库官方社区版免费工具MySQLWorkbenchMySql官方社区版下载:MySQLCommunityDownloadsMySQLYumRepository MySQLAPTRepository MySQLSUSERepository MySQLCommunityServer MySQLCluster MySQLRouter MySQLShell MySQLWorkbench MySQLInstallerforWind…

    2022年8月22日
    9
  • 全网最全OpenClaw(小龙虾)安全放生指南:告别“龙虾”,不留安全隐患

    全网最全OpenClaw(小龙虾)安全放生指南:告别“龙虾”,不留安全隐患

    2026年3月12日
    3
  • spring boot的自动配置原理_springboot的工作原理

    spring boot的自动配置原理_springboot的工作原理深入Springboot启动流程+自动配置原理?写在前面?相关常见面试题Springboot启动入口@SpringBootConfiguration解读@ComponentScan解读@EnableAutoConfiguration解读(重点)@AutoConfigurationPackage解读@Import({AutoConfigurationImportSelector.class})解读(重点)?写在前面?自从SpringBoot问世以来,开发界可以说是乱了套。我还记得我朋友几年前去参加

    2022年8月20日
    7
  • vue子组件向父组件传值的方法

    vue子组件向父组件传值的方法子组件向父组件,使用$emit方法,demo:子组件的代码:<template><div><h1>thisischildcomponent</h1><button@click=”toParent”>向父组件传值</button></div>…

    2022年6月6日
    38

发表回复

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

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