一、前言

上篇文章详细阐述了激活函数是什么、常用的激活函数有哪些以及为什么要使用激活函数,相信大家对此有了一定的了解。在此基础上,我们趁热打铁,继续学习深度学习其它必须的知识。该篇文章讲述卷积操作及其它衍生出的操作,我愿称之为最强!卷积自提出以来,凭借其优异的提取特征的能力,已逐渐称为现代CNN网络中必不可少的组成部分,并引发了基于深度学习的方法研究计算机视觉的浪潮!

二、普通卷积

在阐述卷积的工作原理之前,我们需要了解一下为什么要使用卷积,以及卷积神经网络相较于全连接神经网络的优势体现在哪里。

2.1 全连接神经网络的缺陷

在未出现卷积神经网络之前,深度学习一直用的都是全连接神经网络,何为全连接,所谓的全连接即相邻层的所有神经元之前都有连接,无疑,这样做的参数量是巨大的。这是全连接神经网络存在的问题之一。然而这并不足以致命,最致命的问题在于全连接神经网络“ 忽视 ”了数据的形状。什么意思呢?看下面这个案例。

比如,输入数据是图像时,图像通常是高、长、通道方向上的3维形状。但是,向全连接层输入时,需要将3维数据拉平为1维数据。实际上,在MNIST数据集的例子中,输入图像就是1通道、高28像素、长28像素的(1, 28, 28)形状,但却被排成1列,以784个数据的形式输入到全连接神经网络中。

假设输入图像是3维形状,那么这个形状中应该含有重要的空间信息,否则没有必要是3维的。这些信息可能包含空间上邻近的像素为相似的值、RBG的各个通道之间分别有密切的关联性、相距较远的像素之间没有什么关联等,3维形状中可能隐藏有值得提取的本质模式。但是,因为全连接层会忽视形状,将全部的输入数据作为相同的神经元(同一维度的神经元)处理,所以无法利用与形状相关的信息。这是全连接神经网络最致命的问题。

2.2 卷积的工作原理


step1:

step2:

step3:

step4:

通过下面这2张图可以更加直观的理解卷积的工作原理。

2.3 Output size如何计算

假设输入大小为(H, W),滤波器大小为(FH, FW),输出大小为(OH, OW),填充为P,步幅为S,输出大小可通过下式计算得到。

2.4 3维数据如何进行卷积

平时在做实验过程中,输入是有3个通道的RGB图像,这也是最常见的情形,所以需要阐述一下3维数据是如何进行卷积的,让我们一起看下面的案例,很简单但绝对经典:

step1:

step2:
step3:

step4:

Note:值得注意的一点

在3维数据的卷积运算中,输入数据和滤波器的通道数要设为相同的值。在上面这个例子中,输入数据和滤波器的通道数一致,均为3。滤波器大小可以设定为任意值,不过,每个通道的滤波器大小要全部相同。

2.4 推荐论文

《Gradient-Based Learning Applied to Document Recognition》
《ImageNet Classification with Deep Convolutional Neural Networks》

三、空洞卷积

3.1 空洞卷积运行原理

空洞卷积也被称为膨胀卷积。感受野是卷积神经网络中非常重要的概念,空洞卷积的目的就在于扩大感受野,以提升模型的性能。空洞卷积的运行原理跟卷积非常类似,唯一不同之处在于空洞卷积引入了一个**扩张率(dilated rate)**的概念,可以认为,普通卷积是空洞卷积的一种情形,普通卷积的扩张率默认为1。


以下分别是dilated rate=1、dilated rate=6、dilated rate=24的空洞卷积案例:

3.2 推荐论文

关于空洞卷积的详细介绍可以查阅大名鼎鼎的DeepLab系列论文,以下分别是DeepLab v2和DeepLab v3。

《DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs》
《Rethinking Atrous Convolution for Semantic Image Segmentation》

四、转置卷积

转置卷积也被称为反卷积,顾名思义,转置卷积的操作与卷积操作是相反的,转置卷积常用于上采样阶段。什么是上采样,之后会有一篇文章专门来介绍常见的上采样方式,包括转置卷积、最近邻插值、双线性插值等等,由于转置卷积更偏向于上采样阶段,而该篇文章会更加偏向于提取特征的卷积方式,因此转置卷积会在之后的上采样篇进行详细阐述。

五、可分离卷积

可分离卷积分为空间可分离卷积和深度可分离卷积。

5.1 空间可分离卷积

空间可分离卷积是利用矩阵乘法的性质来设计的,具体请看以下的案例,假设卷积核size为33,那么这个卷积核可以看作是一个31的向量与1*3向量的乘法。这样做的好处在于减少了模型的参数,减少了乘法的计算量。

5.2 深度可分离卷积

重点介绍深度可分离卷积,该卷积我愿称之为卷积神经网络中令人拍案叫绝的操作之一,深度可分离卷积分为2步,第1步是利用每个卷积核分别对输入图像的1个通道进行卷积,第2步是扩充深度,具体的运行原理如图(图来源)所示。

普通的卷积过程是使用与输入图像通道数相同的卷积核将输入图像输出为通道为1的特征图,而深度可分离卷积则是分别使用 3 个卷积核(每个卷积核的大小为 3 x 3 x 1),而不使用大小为 3 x 3 x 3 的卷积核,每个卷积核仅对输入图像的 1 个通道做卷积,这样的卷积每次都得出大小为 5 x 5 x 1 的映射,之后再将这些映射堆叠在一起创建一个 5 x 5 x 3 的图像,最终得出一个大小为 5 x 5 x 3 的输出图像。这样的话,图像的深度保持与原来的一样。

深度可分离卷积的第2步是扩充深度,我们用大小为 1x1x3 的卷积核做 1x1 卷积。每个 1x1x3 卷积核对 5 x 5 x 3 输入图像做卷积后都得出一个大小为 5 x 5 x1 的映射。


做 128 次 1x1 卷积后,就可以得出一个大小为 5 x 5 x 128 的特征图。

深度可分离卷积的完整过程如下图所示。

5.3 推荐论文

《Xception: Deep Learning with Depthwise Separable Convolutions》

六、3D卷积

从名字中就可以明白3D卷积的大致意思了,普通卷积是在2维空间上进行卷积操作,3D卷积无非就是在3维空间上进行卷积操作。可以看到,3D卷积无非是2D卷积在通道维度上进行了扩展,3D 卷积核可以沿着 3 个方向移动(高、宽以及图像的通道),跟2D卷积并没有特别大的区别。如下图(图来源)所示:

七、分组卷积

7.1 分组卷积原理

分组卷积首次提出是在鼎鼎大名的AlexNet,详细了解AlexNet可以看我这篇博客AlexNet,非常详细,分组卷积的提出为了解决GPU算力不足的问题,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。在普通卷积中,所有的卷积核一股脑的对输入图进行卷积。

在分组卷积中,卷积核被拆分为不同的组,每一个组都负责具有一定深度的普通卷积的操作。下图(图来源)可以更为直观的表现分组卷积的运行原理。

7.2 推荐论文

推荐大家阅读下面这篇论文AlexNet,该篇论文可以称为是卷积神经网络的开山鼻祖之一,很经典。

《ImageNet Classification with Deep Convolutional Neural Networks》

参考文献

《深度学习入门-基于Python的理论与实现》
《ImageNet Classification with Deep ConvolutionalNeural Networks》
《Gradient-Based Learning Applied to Document Recognition》
《ImageNet Classification with Deep Convolutional Neural Networks》
https://blog.csdn.net/gwplovekimi/article/details/89890510
《Xception: Deep Learning with Depthwise Separable Convolutions》

计划 – 深度学习系列

都2021年了,不会还有人连深度学习还不了解吧?(一)-- 激活函数篇
都2021年了,不会还有人连深度学习还不了解吧?(二)-- 卷积篇
都2021年了,不会还有人连深度学习还不了解吧?(三)-- 损失函数篇
都2021年了,不会还有人连深度学习还不了解吧?(四)-- 上采样篇
都2021年了,不会还有人连深度学习还不了解吧?(五)-- 下采样篇
都2021年了,不会还有人连深度学习还不了解吧?(六)-- Padding篇
都2021年了,不会还有人连深度学习还不了解吧?(七)-- 评估指标篇
都2021年了,不会还有人连深度学习还不了解吧?(八)-- 优化算法篇
都2021年了,不会还有人连深度学习还不了解吧?(九)-- 注意力机制篇
都2021年了,不会还有人连深度学习还不了解吧?(十)-- 数据归一化篇

觉得写的不错的话,欢迎点赞+评论+收藏,这对我帮助很大!欢迎关注我的公众号,纯干货!

文章持续更新,可以关注微信公众号【医学图像人工智能实战营】获取最新动态,一个专注于医学图像处理领域前沿科技的公众号。坚持以实践为主,手把手带你做项目,打比赛,写论文。凡原创文章皆提供理论讲解,实验代码,实验数据。更有上百部深度学习入门资料免费等你来拿,只有实践才能成长的更快,关注我们,一起学习进步~

都2021年了,不会还有人连深度学习都不了解吧(二)- 卷积篇相关推荐

  1. 都2021年了,不会还有人连深度学习都不了解吧(五)-- 下采样篇

    导读 该篇文章重点介绍CNN中下采样方式,下采样是CNN中必不可少的阶段之一,CNN中常用的下采样方式有平均池化和最大池化,同时平均池化和最大池化也是注意力机制的重要组件. 目前深度学习系列已经更新了 ...

  2. 都2021年了,不会还有人连深度学习都不了解吧(三)- 损失函数篇

    一.前言 深度学习系列文章陆陆续续已经发了两篇,分别是激活函数篇和卷积篇,纯干货分享,想要入门深度学习的童鞋不容错过噢!书接上文,该篇文章来给大家介绍" 选择对象的标准 "-- 损 ...

  3. 都2021年了,不会还有人连深度学习都不了解吧(一)- 激活函数篇

    一.前言 本人目前研一,研究方向为基于深度学习的医学图像分割,转眼间已接触深度学习快1年,研一生活也即将结束,期间看了大量的英文文献,做了大量的实验,也算是对深度学习有了一个初步的了解吧.接下来的一段 ...

  4. 都2021年了,不会还有人连深度学习还不了解吧(六)-- Padding篇

    导读 本篇文章主要介绍CNN中常见的填充方式Padding,Padding在CNN中用的很多,是CNN必不可少的组成部分,使用Padding的目的主要是为了调整输出的大小,是必须搞清楚的知识点.如果你 ...

  5. 都2021年了不会还有人用门禁卡吧!(手把手教你用手机代替门禁卡)

    目录 一.软硬件准备 NFC Tool 蓝牙版读卡器 安卓NFC手机 二.大致流程 三.详细步骤 0x01 NFC Tool 破解母卡获取Dump文件 0x02 NFC Tool 读取母卡卡号,写入非 ...

  6. 都2021年了,你还在考虑电赛飞行器赛题,备赛是否有必要用基于TI处理芯片的飞控问题?

    无名创新售后群问题节选 @无名小哥 能问下今年国赛会不会指定某一款飞控呀? 答:都2021年了,你还在考虑电赛飞行器赛题备赛是否有必要用基于TI处理芯片的飞控问题? 暂不论官方是否会限定TI芯片的飞控 ...

  7. 劲爆!有人不用深度学习做强AI?道翰天琼认知智能机器人平台API接口大脑为您揭秘

    劲爆!有人不用深度学习做强AI?道翰天琼认知智能机器人平台API接口大脑为您揭秘 认知智能是计算机科学的一个分支科学,是智能科学发展的高级阶段,它以人类认知体系为基础,以模仿人类核心能力为目标,以信息 ...

  8. Java培训深度学习都要学什么

    java的知识点有很多,如果是有java基础的同学,进行深度学习是非常有必要的,比较职场技能更新迭代非常的快,那么java培训深度学习都要学什么呢?来看看下面的详细介绍. Java培训深度学习都要学什 ...

  9. 开源后5个月,Google的深度学习都有哪些改变?

    开源后5个月,Google的深度学习都有哪些改变? 发布时间: 2016-4-17 13:37:05   2016年4月14日,Google发布了分布式TensorFlow.Google的博文介绍了T ...

最新文章

  1. 利用OpenCV的VideoCapture类实现视频读操作
  2. Android studio 查看sha1
  3. Linux:几个重要的文件处理命令
  4. php 经典的算法,PHP各种经典算法
  5. 浅谈开关量采集回路的设计及交流干扰问题解决方案
  6. Windows Azure 之服务总线中继服务
  7. 公开发布版的Windows Azure 基础结构服务中的 SQL Server – 文档和最佳实践(已更新),还有即将发布的博客...
  8. html中dl标签和ul标签,html中dl,dt,dd,ul,li,ol标签区别和使用
  9. php怎么将网页变成图片格式,php如何实现图片格式转换
  10. zabbix小结(一)zabbix概述
  11. Oracle RMAN Catalog 和 Nocatalog 的区别
  12. Win10微软帐户切换不回Administrator本地帐户的解决方法【亲测】
  13. 程序设计_猫老鼠主人
  14. C语言system的用法
  15. kali linux权限维持,msfconsole权限维持
  16. ZZNU17级新生周赛第六场
  17. 用python搭建微商城_怎么搭建微商城?用什么系统好?
  18. proxmox的安装及配置
  19. 2.系统发生树构建(非加权分组平均法、邻接法python实现)
  20. bootstarp js设置列隐藏_bootstraptable表格columns 隐藏方法

热门文章

  1. springboot vue3 elementui plus小说阅读网站源码
  2. 全封闭(FFF/FDM)3D打印机的优点
  3. 数字孪生天然气管道解决方案
  4. 黑苹果一些奇怪的事情
  5. echarts 盒须图配置
  6. vant表单checkbox验证问题
  7. STC89C52的中断
  8. 网络拓扑距离的高效KNN查询(结项报告)
  9. 图床程序 php,开源免费PHP图床程序–Qchan
  10. DDOS与DDOS追踪的介绍