花式卷积

在DL中,卷积实际上是一大类计算的总称。除了原始的卷积、反卷积(Deconvolution)之外,还有各种各样的花式卷积。

卷积在CNN和数学领域中的概念差异

首先需要明确一点,CNN中的卷积和反卷积,实际上和数学意义上的卷积、反卷积是有差异的。

数学上的卷积主要用于傅立叶变换,在计算中有个时域上的反向操作,并不是简单的向量内积运算。在信号处理领域,卷积主要用作信号的采样

数学上的反卷积主要作为卷积的逆运算,相当于信号的重建,或者解微分方程。因此,它的难度远远大于卷积运算,常见的有Wiener deconvolution、Richardson–Lucy deconvolution等。

CNN的反卷积就简单多了,它只是误差的反向算法而已。因此,也有人用back convolution, transpose convolution这样更精确的说法,来描述CNN的误差反向算法。

Dilated convolution

上图是Dilated convolution的操作。又叫做多孔卷积(atrous convolution)。

上图是transpose convolution的操作。它和Dilated convolution的差别在于,前者是图像上有洞,而后者是kernel上有洞。

和池化相比,Dilated convolution实际上也是一种下采样,只不过采样的位置是固定的,因而能够更好的保持空间结构信息。

Dilated convolution在CNN方面的应用主要是Fisher Yu的贡献。

论文:

《Multi-Scale Context Aggregation by Dilated Convolutions》

《Dilated Residual Networks》

代码:

https://github.com/fyu/dilation

https://github.com/fyu/drn

Fisher Yu,密歇根大学本硕+普林斯顿大学博士。
个人主页:
http://www.yf.io/

参考:

https://zhuanlan.zhihu.com/p/28822428

Paper笔记:Dilated Residual Networks

分组卷积

分组卷积最早在AlexNet中出现,由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给2个GPU分别进行处理,最后把2个GPU的结果进行融合。

在AlexNet的Group Convolution当中,特征的通道被平均分到不同组里面,最后再通过两个全连接层来融合特征,这样一来,就只能在最后时刻才融合不同组之间的特征,对模型的泛化性是相当不利的。

为了解决这个问题,ShuffleNet在每一次层叠这种Group conv层前,都进行一次channel shuffle,shuffle过的通道被分配到不同组当中。进行完一次group conv之后,再一次channel shuffle,然后分到下一层组卷积当中,以此循环。

论文:

《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》

无论是在Inception、DenseNet或者ShuffleNet里面,我们对所有通道产生的特征都是不分权重直接结合的,那为什么要认为所有通道的特征对模型的作用就是相等的呢?这是一个好问题,于是,ImageNet2017冠军SEnet就出来了。

论文:

《Squeeze-and-Excitation Networks》

Separable convolution

前面介绍的都是正方形的卷积核,实际上长条形的卷积核也是很常用的。比如可分离卷积。

我们知道卷积的计算量和卷积核的面积成正比。对于k x k的卷积核K来说,计算复杂度就是O(k2)O(k^2)。

如果我们能找到1 x k的卷积核H和k x 1的卷积核V,且K=V∗HK = V * H,则称K是可分离的卷积核。

根据卷积运算满足结合律,可得:

f∗K=f∗(V∗H)=f∗V∗H

f * K = f * (V * H) = f * V * H

这样就将一个k x k的卷积运算,转换成1 x k + k x 1的卷积运算,从而大大节省了参数和计算量。

显然,不是所有的卷积核都满足可分离条件。但是不要紧,NN有自动学习并逼近函数的能力。经过训练之后:K≈V∗HK \approx V * H

可变形卷积核

MSRA于2017年提出了可变形卷积核的概念。

论文:

《Deformable Convolutional Networks》

1 x 1卷积

1、升维或降维。

如果卷积的输出输入都只是一个平面,那么1x1卷积核并没有什么意义,它是完全不考虑像素与周边其他像素关系。 但卷积的输出输入是长方体,所以1 x 1卷积实际上是对每个像素点,在不同的channels上进行线性组合(信息整合),且保留了图片的原有平面结构,调控depth,从而完成升维或降维的功能。

2、加入非线性。卷积层之后经过激励层,1 x 1的卷积在前一层的学习表示上添加了非线性激励(non-linear activation),提升网络的表达能力;

3.促进不同通道之间的信息交换。

参考:

https://www.zhihu.com/question/56024942

卷积神经网络中用1x1卷积有什么作用或者好处呢?

depthwise separable convolution

在传统的卷积网络中,卷积层会同时寻找跨空间和跨深度的相关性。

然而Xception指出:跨通道的相关性和空间相关性是完全可分离的,最好不要联合映射它们。

Xception是Francois Chollet于2016年提出的。

上图是Xception中的卷积运算depthwise separable convolution的示意图。

深度学习(九)——花式卷积相关推荐

  1. 采用keras深度学习框架搭建卷积神经网络模型实现垃圾分类,基于树莓派上进行实时视频流的垃圾识别源代码

    一.项目概述 简介:该垃圾分类项目主要在于对各种垃圾进行所属归类,本次项目采用keras深度学习框架搭建卷积神经网络模型实现图像分类,最终移植在树莓派上进行实时视频流的垃圾识别. 前期:主要考虑PC端 ...

  2. 一文详细介绍深度学习的各种卷积操作

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 转自: 机器之心 我们都知道卷积的重要性,但你知道深度学习领域的卷积究竟是什么,又 ...

  3. 干货|一文全解深度学习中的卷积

    来源:1024深度学习 概要:卷积现在可能是深度学习中最重要的概念.正是靠着卷积和卷积神经网络,深度学习才超越了几乎其他所有的机器学习手段. 译自Tim Dettmers的Understanding ...

  4. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP

    原文地址可以查看更多信息 本文主要参考于:Multilayer Perceptron  python源代码(github下载 CSDN免费下载) 本文主要介绍含有单隐层的MLP的建模及实现.建议在阅读 ...

  5. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR

    原地址可以查看更多信息 本文主要参考于:Classifying MNIST digits using Logistic Regression  python源代码(GitHub下载 CSDN免费下载) ...

  6. odoo pivot中去掉求和_一文读懂深度学习中的卷积运算与图像处理

    华为人工智能认证讲师 袁梦 在人工智能深度学习技术中,有一个很重要的概念就是卷积神经网络 CNN(Convolutional Neural Networks).卷积神经网络被广泛地运用到计算机视觉中, ...

  7. 卷积为什么如此强大?一文全解深度学习中的卷积

    卷积为什么如此强大?一文全解深度学习中的卷积 2018年05月10日 15:52:41 七月在线实验室 阅读数:17112 作者:Tim Dettmers(Understanding Convolut ...

  8. 卷积为什么如此强大?理解深度学习中的卷积

    译自Tim Dettmers的Understanding Convolution in Deep Learning有太多的公开课.教程在反复传颂卷积神经网络的好,却都没有讲什么是"卷积&qu ...

  9. 深度 | 理解深度学习中的卷积

    译者按:本文译自 Tim Dettmers 的 Understanding Convolution in Deep Learning.有太多的公开课.教程在反复传颂卷积神经网络的好,却都没有讲什么是「 ...

  10. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

最新文章

  1. 通用社区登陆组件技术分享(开源)中篇:OAuth 登陆组件流程及组件集成方法...
  2. select子句顺序
  3. Hp linux tar 解压,tar命令的用法(百度)(HP_UX)
  4. 阿里云开源 image-syncer 工具,容器镜像迁移同步的终极利器
  5. 神级代码编辑器 Sublime Text 全程指南
  6. variable 'xxx' unsafe in 'case'的处理
  7. callablestatement存储过程
  8. 北大计算机最好的班叫什么,中国大学计算机最好的班,再次迎来“图灵奖”导师,赶超“姚班”...
  9. Python中MD5加密
  10. zotero mac 插入BibTeX条目 快捷键
  11. 基于visual Studio2013解决C语言竞赛题之0701排队输出
  12. mysql 主从复制延迟_什么情况会导致MySQL主从复制延迟?
  13. Synchronized的锁优化,kotlin中文文档pdf
  14. 阿里云 vps云监控插件已停止状态解决方法
  15. 幻灯片放映时无法切换到下一张
  16. TI单芯片毫米波雷达代码走读(二十五)—— 角度维(3D)处理流程
  17. 解决区块链三大问题的利器
  18. shuffle什么意思?python模拟随机发牌(斗地主、掼蛋)
  19. taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )、淘宝店铺卖出订单详情接口,淘宝店铺订单明文接口,淘宝店铺订单解密接口
  20. 计算机科学与探索期刊审稿周期,计算机科学与探索杂志

热门文章

  1. BugkuCTF-社工
  2. CGCTF-Web-签到题
  3. Vue项目实战07:引入Normalize.css样式初始化
  4. python3 并行计算_Python-并行计算
  5. 支持向量机的近邻理解:图像二分类为例(1)
  6. Arduino使用HC05蓝牙模块与手机连接(转载)
  7. docker(iptables)目标地址转换,运行中的容器映射端口
  8. windows下看端口占用
  9. CSS 3 中的伪类选择器
  10. Red hat linux 下装mysql5问题总结