通俗易懂理解FCN全卷积网络模型

温故而知新,可以为师矣!

一、参考资料

深度学习笔记(二十三)Semantic Segmentation(FCN/U-Net/PSPNet/SegNet/U-Net++/ICNet/DFANet/Fast-SCNN)

二、FCN相关介绍

1. FCN简介

全卷积神经网络(Fully Convolutional Networks, 简称FCN),是利用深度学习进行语义分割的开山之作。FCN将传统的分类网络改造成分割网络:替换全连接层为卷积层,利用转置卷积进行上采样获得高分辨率的语义特征图,输出 feature map 的每一维通道预测一个类别的分割结果。

FCN主要用来做 pixel-wiseimage segmentation 预测,先用传统的CNN结构得到 feature map, 再将传统的 full connected 转换成了对应参数的卷积层。比如,传统pool5层的尺寸是7×7×512,fc6的尺寸是4096, full connected weight 是7×7×512×4096;将全连接层转成卷积层,kernel size 为7×7,input channel 为512,output channel 为4096,这就实现了将传统的网络(分别带有卷积层和全连接层)转成了全卷积网络(fully convolutional network, FCN)。简单理解,FCN全卷积网络就是全部都由卷积层构成的网络,没有FC层

FCN的一个好处是输入图片尺寸可以任意,不受传统网络全连接层尺寸限制,传统的方法还要用类似SPP结构来避免这个问题。FCN中为了得到 pixel-wise 的prediction,也要把 feature map 通过转置卷积转化到像素空间。

2. FCN网络结构

FCN大致网络结构如下:

在这里插入图片描述

上图模型结构为针对VOC数据集的21个语义分割,即数据集包含21种不同分割类型。当图像进入神经网络,第一个卷积层将图像由三通道转换为96通道 feature map,第二个卷积层转换为256个通道,第三个卷积层384个通道,直到最后一个卷积层变为21个通道,每个通道对应不同分割类型。实际上,卷积层整个网络结构中卷积层的通道数可以根据不同任务进行调整,前面每经过一层会对图像进行一次宽高减半的下采样,经过5个卷积层以后,feature map 的尺寸为输入的1/32,最后通过转置卷积将 feature map 宽高恢复到原始输入图像尺寸。

3. FCN网络结构分解

FCN模型结构可以根据分割细粒度使用FCN32s、FCN16s、FCN8s等结构,32s即从32倍下采样的 feature map 恢复到原始输入尺寸,16s和8s则是从16倍和8倍下采样恢复到原始输入尺寸,当然还可以使用4s、2s结构,数字越小使用的转置卷积层进行上采样越多,对应模型结构更加复杂,理论上分割的效果更精细

3.1 FCN32s模型结构

FCN32s模型结构示意图:

在这里插入图片描述

3.2 FCN16s模型结构

FCN16s模型结构示意图:

在这里插入图片描述

3.3 FCN8s模型结构

FCN8s模型结构示意图:

在这里插入图片描述

4. FCN的特征融合(Add)

在FCN论文中,作者采用对 low-levelhigh-level 特征进行融合的方式。这是因为:

  1. 网络比较深的时候,特征图尺寸通常比较小,对这种特征图进行上采样,有很好的语义信息,但分辨率很差。
  2. 网络比较浅的时候,特征图尺寸通常比较大(接近input image),对这种特征图进行上采样,有很好的细节,但语义信息很差。

因此,对 low-levelhigh-level 特征进行融合,可以在得到很好的细节基础上,也能获得尽可能强的图像语义信息。

三、相关经验

(MindSpore)代码实现

图像语义分割网络FCN(32s、16s、8s)原理及MindSpore实现

(TensorFlow)代码实现

github代码:tensorflow-fcn

四、参考文献

Long J, Shelhamer E, Darrell T. Fully convolutional networks for semantic segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 3431-3440.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/434596.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL-删除重复数据

在实际应用中,遇到一个这样的问题,MySQL中存储的数据为资讯类数据,在页面展示时会出现多个平台的新闻报导相同的内容,导致页面会出现重复数据。因为数据是每天定期更新,所以最快捷有效的方式是在更新完数据后增加一个去…

$monitor和$strobe都看的是啥

注:本文来自硅芯思见 在编写测试平时,经常会用到$monitor和$strobe监测某些信号,并且使用格式上与$display比较类似,但是它们之间还是存在差异的,它们在当前仿真时间槽(time-slot)中被执行的区间…

【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero

【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero 大家好 我是寸铁👊 总结了一篇Windows11安装go-zero代码生成工具goctl的文章✨ 喜欢的小伙伴可以点点关注 💝 goctl介绍 背景:goctl 的最早功能是为了解决 GRPC 内网…

leetcode:1768. 交替合并字符串(python3解法)

难度:简单 给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 示例 1: 输入:w…

一些反序列化总结

1 反序列化漏洞原理 如果反序列化的内容就是那串字符串,是用户可以控制的(即变量的值),且后台不正当的使用了PHP中的魔法函数,就会导致反序列化漏洞,可以执行任意命令。Java 序列化指 Java 对象转换为字节序…

迷人的数据结构:揭秘数组和链表的不同

数据结构中的数组和链表的区别 一、简介二、数组的特点和特性三、链表的特点和特性四、数组和链表的对比五、数组和链表的代码实现六、总结 一、简介 数据结构是组织和存储数据的方式,直接影响着程序性能、内存利用和资源管理等关键方面。 数据结构提供了各种方法来…

如何使用react框架进行两个html页面的切换?

如何使用react框架进行两个html页面的切换? 项目背景首先是古老的做法login.htmlindex.html 正文->react框架如何设置两个页面的跳转?配置react框架的环境react框架如何实现两个页面的跳转? 项目背景 古老的html页面跳转的做法无法在react框架中直接适配,所以非常有必要…

代码随想录算法刷题训练营day16

代码随想录算法刷题训练营day16:LeetCode(104)二叉树的最大深度 、LeetCode(559)n叉树的最大深度、LeetCode(111)二叉树的最小深度、LeetCode(222)完全二叉树的节点个数 LeetCode(104)二叉树的最大深度 题目 代码 /*** Definition for a binary tree node.* publ…

NC开发客户端(前端)连接启动失败can‘t connect to server, please wait

效果图 解决方法 IP地址和端口要对应 1-IP地址中间启动,肯定是这个127.0.0.1 2-端口号,要对应中间件启动在控制台输出的端口 或者是在home目录-》bin-》sysConfig.bat这里面的服务器, 里面可以看到对应启动ip地址和端口

一天吃透面试八股文

内容摘自我的学习网站:topjavaer.cn 分享50道Java并发高频面试题。 线程池 线程池:一个管理线程的池子。 为什么平时都是使用线程池创建线程,直接new一个线程不好吗? 嗯,手动创建线程有两个缺点 不受控风险频繁创…

include文件包含

include 文件包含利用日志文件什么是日志文件 之所以会burp抓包上传就可以成功的原因,是因为burp可以绕过url编码,导致写入日志文件中的代码没有进行编码,可以直接解析成php文件 声明:其中图片并非本人实操,而是直接截…

java生成验证码工具类,java生成图片验证码

java生成验证码工具类,java生成图片验证码 java生成验证码工具类,java生成图片验证码,java生成彩色图片验证码,带干扰线验证码。 调用结果: 工具类调用: GetMapping("/validateCode")public vo…