为什么使用卷积层替代CNN末尾的全连接层
2017-04-16 11:32
246 查看
CNN网络的经典结构是: 输入层—>(卷积层+—>池化层?)+—>全连接层+
(其中+表示至少匹配1次,?表示匹配0次或1次)
首先,说一下卷积层和全连接层的区别:卷积层为局部连接;而全连接层则使用图像的全局信息。可以想象一下,最大的局部是不是就等于全局了?这首先说明全连接层使用卷积层来替代的可行性。
然后,究竟使用卷积层代替全连接层会带来什么好处呢?答案:可以让卷积网络在一张更大的输入图片上滑动,得到每个区域的输出(这样就突破了输入尺寸的限制)。论文里Fully Convolutional Networks for Semantic Segmentation介绍的很清楚,解读如下:
![](http://img.blog.csdn.net/20170416224205593?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTk5OTk5OTk5OTk5OWQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
需要说明的是这一特性不仅可用于语义分割,在物体分类、目标检测中都可以使用。
参考:
How does the conversion of last layers of CNN from fully connected to fully convolutional allow it to process images of different size?
CS231n课程笔记翻译:卷积神经网络笔记
论文笔记–Fully Convolutional Networks for Semantic Segmentation
(其中+表示至少匹配1次,?表示匹配0次或1次)
全卷积神经网络Fully Convolutional Network (FCN)
全卷积神经网络即把CNN网络最后的全连接层替换为卷积层。为什么这么做?换句话说这样会带来什么好处呢?首先,说一下卷积层和全连接层的区别:卷积层为局部连接;而全连接层则使用图像的全局信息。可以想象一下,最大的局部是不是就等于全局了?这首先说明全连接层使用卷积层来替代的可行性。
然后,究竟使用卷积层代替全连接层会带来什么好处呢?答案:可以让卷积网络在一张更大的输入图片上滑动,得到每个区域的输出(这样就突破了输入尺寸的限制)。论文里Fully Convolutional Networks for Semantic Segmentation介绍的很清楚,解读如下:
需要说明的是这一特性不仅可用于语义分割,在物体分类、目标检测中都可以使用。
参考:
How does the conversion of last layers of CNN from fully connected to fully convolutional allow it to process images of different size?
CS231n课程笔记翻译:卷积神经网络笔记
论文笔记–Fully Convolutional Networks for Semantic Segmentation
相关文章推荐
- 为什么使用卷积层替代CNN末尾的全连接层
- 为什么使用windows标准账户替代管理员账号
- 为什么使用MMS协议无法连接MMS服务器
- 为什么总连不上--之在Linux系统下使用CLI连接Microsoft Azure 21V版本
- WebSocket 是什么原理?为什么可以实现持久连接?什么情况使用WebSocket
- 为什么我们可以使用while(~scanf("%d"))读到文件末尾
- FAQ:使用CATS函数替代使用TRIM/LEFT/和||连接符来连接文本
- 卷积神经网络入门一种全卷积神经网络(LeNet),从左至右依次为卷积→子采样→卷积→子采样→全连接→全连接→高斯连接测试 最后,为了检验 CNN 能否工作,我们准备不同的另一组图片与标记集(不能在训练
- 字符串连接:使用StringBuffer#append来替代”+”真的会带来性能提升吗?
- UE4为什么使用C++替代UnrealScript?
- 为什么Android开发者应该使用FlatBuffers替代JSON?
- VC/MFC中当使用了文件对话框后,就不能连接数据库了,为什么?
- UE4学习笔记(三): 为什么使用C++替代UnrealScript?
- 连接n个字符串而重复的使用+,需要n的平方级别的时间?为什么?
- 为什么总连不上--之在Windows系统下使用CLI连接Microsoft Azure 21V版本 推荐
- 为什么我的IPHONE连接到电脑,电脑提示无法使用此IPHONE
- 为什么使用using(sqlconnection cnn=new sqlconnection)
- Linux 下 FreeSWITCH 远程连接使用 MySQL 替代 SQLite
- UE4学习笔记(三): 为什么使用C++替代UnrealScript?
- Java中为什么尽量使用apache StringUtils.split替代String.split