各种卷积类型Convolution
从最开始的卷积层,发展至今,卷积已不再是当初的卷积,而是一个研究方向。在反卷积这篇博客中,介绍了一些常见的卷积的关系,本篇博客就是要梳理这些有趣的卷积结构。
阅读本篇博客之前,建议将这篇博客结合在一起阅读,想必会有更深的理解。另外,不管是什么类型的卷积,我们都把它理解成一种运算操作。
- Group convolution
Group convolution是最早应用在2012年Alexnet的双GPU架构模型中,相当于把channel这一维度均分到两个GPU,进行分组卷积。如图所示:
这篇论文是:ImageNet Classification with Deep Convolutional Neural Networks。由图可见,上下两个并行的网络结构只有在部分层中才有信息交互,而且网络结构一模一样,这就是Group convolution最早的应用,但是在caffe中经常使用的单机多GPU并行训练和上述问题存在本质区别,因为Group convolution是指将channel维度细分成多个group,然后再分组进行Convolution,而多GPU的训练只是一个数据并行分组的方式,其中minibatch和batch之间的关系就是batch=minibatch*GPU_num,这并不存在对channel的分组。
总之,Group convolution是一种卷积操作,想要切分channel,然后分组卷积,运算上没有什么特别的地方。
2.Pointwise convolution
点积,就是卷积核大小是1*1的,那为啥起名点积呢?就是因为这和向量中的点积运算很类似,举个例子,一张3通道的feature map,卷积核大小是1*1*3,那它的运算其实就是:Σ卷积核*单通道feature map。
总之,Pointwise convolution是一种卷积操作,而且是一种特殊的卷积运算,代表着卷积核的大小是1*1。
3.Separable convolution
可分离卷积,这种思路其实就是起了个高深的名字,也很常见。也是想在channel维度上改变经典的卷积运算,咋办呢?经典的卷积核都是k*k*channel大小的,其中channel是上一层的输出即本层的输入,这不太好,我们想任意指定一个channel,作为卷积核的大小,这样并不影响输入输出的特征图的长宽尺寸,仅仅改变了channel这一维度。这就变得很有意思了,同Group convolution不一样的是,可分离卷积可增加channel维度,而并没有依赖GPU。
举个例子,对于经典的卷积运算,如果说所需的参数量为256*3*3*256=589824。而对于可分离卷积,假设我们指定的卷积核是3*3*4,那首先是256*3*3*4=9216,接下来我们得到了4*256=1024个通道数,但是呢?这并没有完成,因为还需要下一个过程将channel重新压缩回256,接着有1024*1*1*256=262144,整个过程就是9216+262144=271360,看看,589824是271360的两倍多。虽然,这在很多框架上也许未能比较出效果的显著差异,那是多方面的原因。
值得一提的是,上面举的例子可以认为是Separable convolution 和Pointwise convolution结合在一起,事实上就是配套使用的。
最早的Separable convolution来源于论文:Simplifying ConvNets for Fast Learning,作者用的是k*1和1*k的卷积核,起名为可分离卷积,而本处的可分离卷积来源于另一篇论文:Xception: Deep Learning with Depthwise Separable Convolutions。
总之,Separable convolution是一种卷积操作,而且是一种特殊的卷积运算,代表着卷积核的channel维度可以自己任意选取。
4.Depthwise convolution
深度卷积,这名字又开始很高深了,其实它的意思就是拓展Separable convolution而来,我们可以让卷积核的channel维度等于1啊,这样就是深度卷积,意为在每一个channel上做卷积。值得注意的是,往往Separable convolution和Depthwise convolution是统称为Depthwise convolution。假设卷积核的shape是[filter_height, filter_width, in_channels, channel_multiplier],区别仅在于channel_multiplier,由于参考同一篇论文,此处将其统一。
这样说来,前面的例子中其实就是Depthwise separable convolution = Depthwise convolution + Pointwise convolution,这就是深度可分离卷积的真正内涵。这也就是以下论文的工作:Xception: Deep Learning with Depthwise Separable Convolutions
总之,Depthwise convolution是一种卷积操作,和Separable convolution一样,表示对channel维度进行卷积的一种方式。
5.Dilated convolution
空洞卷积是解决pixel-wise输出模型的一种常用的卷积方式。一种普遍的认识是,pooling下采样操作导致的信息丢失是不可逆的,通常的分类识别模型,只需要预测每一类的概率,所以我们不需要考虑pooling会导致损失图像细节信息的问题,但是做像素级的预测时(譬如语义分割),就要考虑到这个问题了。那么空洞卷积可以用下图来说明:
也就是以下论文:Multi-scale context aggregation by dilated convolutions
总之,空洞卷积是卷积运算的一种方式,在于增大了感受野却不丢失语义信息。
转载于:https://www.cnblogs.com/cvtoEyes/p/8848815.html
各种卷积类型Convolution相关推荐
- 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一)
本文属于图神经网络的系列文章,文章目录如下: 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一) 从图(Graph)到图卷积(Graph Convolutio ...
- tensorflow一维卷积输入_深度学习中的反卷积(Transposed Convolution)
反卷积(Transposed Convolution)是一种图像上采样(UpSample)的方法,在DCGAN中用它来将随机采样的值转换为一张完整的图像. DCGAN生成手写数字.图片来源[5] Tr ...
- 【转】史上最全!多图带你读懂各种常见卷积类型
英文原文: A Comprehensive Introduction to Different Types of Convolutions in Deep Learning 如果你在深度学习中听说过不 ...
- 转置卷积Transposed Convolution
转置卷积Transposed Convolution 我们为卷积神经网络引入的层,包括卷积层和池层,通常会减小输入的宽度和高度,或者保持不变.然而,语义分割和生成对抗网络等应用程序需要预测每个像素的值 ...
- 卷积神经网络四种卷积类型
卷积神经网络四种卷积类型 https://www.toutiao.com/a6631333810287936013/ 一般卷积 首先,我们需要就定义卷积层的一些参数达成一致. 卷积核大小(Kernel ...
- 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络 (二)
在从图(Graph)到图卷积(Graph Convolution): 漫谈图神经网络 (一)中,我们简单介绍了基于循环图神经网络的两种重要模型,在本篇中,我们将着大量笔墨介绍图卷积神经网络中的卷积操作 ...
- 卷积(convolution)与相关(correlation)(matlab 实现)
1. 卷积(convolution) 输出 y(n)y(n) 是作为在 x(k)x(k) 和 h(n−k)h(n-k)(反转和移位)重叠之下的样本和求出的. 考虑下面两个序列: x(n)=[3,11, ...
- 膨胀卷积(空洞卷积 dilated convolution)
学习的B站大佬的视频大部分图片来自于课中,文章结尾有大佬视频链接,以及阅读<深度学习之pytorch物体检测实战>,刚开始学习可能有些错误,希望大佬指正 1.空洞卷积了解 空洞卷积最初是为 ...
- 膨胀卷积dilated convolution 相关
[时间]2019.03.10 [题目]膨胀卷积dilated convolution 相关及keras实现 1.Dilated Convolution 2.Dilated Convolutions 空 ...
最新文章
- PRD 的编写和修改注意事项
- iOS12系统应用发送邮件中的附件
- ABAddressBookSave关于保存到通讯录失败的问题
- makefile的选项CFLAGS和LDFLAGS
- C++set容器-查找和统计
- jquery报.live() is not a function的解决方法
- RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)
- python图书管理系统源代码_python实现 图书管理系统源码(入门级控制台项目)...
- sql server 数据库安装教程
- Python多字段排序之cmp_to_key详解
- matlab自由落体程序,基于MATLAB的自由落体运动仿真.pdf
- 知道一点怎么设直线方程_已知两点坐标怎样求直线方程
- 一次成功——奶香提子酥
- CVPR 2020 论文大盘点-人脸技术篇
- 2021 字节前端面试题汇总
- 【HTML】iframe标签
- RT-Thread 传感器软件包归类
- 互联网摸鱼日报(2022-12-15)
- uniGUI获取设备信息
- Docker 4 之 Docker 客户端和守护进程