【CV】深度学习中的卷积类型

简介: 深度学习中的卷积类型小结

1. 一维(1 D)卷积

最简单的卷积是一维卷积,通常用于序列数据集(但也可以用于其他用例)。它们可以用于从输入序列中提取局部1D子序列,并在卷积窗口内识别局部模式。下图展示了如何将一维卷积滤波器应用于序列以获得新的特征。1D卷积的其他常见用法出现在NLP领域,其中每个句子都表示为单词序列。
在这里插入图片描述
图中的输入的数据维度为10,滤波器的维度为2,步长为1,输出维度为:
==10 - 3 + 1 = 8==

注:以上只是简单举例,如果滤波器的数量增加(过滤器数量为n),那么输出的数据维度就变为8×n。一维卷积常用于序列模型,自然语言处理领域。

2. 二维(2 D)卷积

在图像数据集上,CNN架构中使用的大多是二维卷积滤波器。二维卷积的==主要思想是通过卷积滤波器向2个方向(x,y)移动==,从图像数据中计算出低维特征。输出形状也是一个二维矩阵。

2.1. 单通道卷积

在深度学习中,卷积是元素先乘法后加法。对于具有1个通道的图像,卷积如下图所示。这里的滤波器是一个3x3矩阵,元素为[[0,1,2],[2,2,0],[0,1,2]]。过滤器在输入端滑动。在每个位置,它都在进行元素乘法和加法。每个滑动位置最终都有一个数字。最终输出是3 x 3矩阵。
在这里插入图片描述
输入图片:5×5×1(宽×高×通道数)【N×N×C】
滤波器(卷积核):3×3×1(长×宽×滤波器通道数)【F×F×FNum】
步长:1【S】
Padding:0(不进行填充)【P】
输出大小:[ (5 - 3 + 2*0 ) / 1 ]+ 1 = 3,【即3×3×1】
其中3×3是输出的特征图大小,1是由滤波器的数量决定的。

总结计算公式:输出尺寸为 [ (N - F + 2*P ) / S ]+ 1

2.2. 多通道卷积

在许多应用程序中,我们处理的是具有多个通道的图像。典型的例子是RGB图像。每个RGB通道都强调原始图像的不同方面。
在这里插入图片描述
下图使多通道卷积过程更清晰。输入层是一个5 x 5 x 3矩阵,有3个通道。滤波器是3 x 3 x 3矩阵。首先,过滤器中的每个内核分别应用于输入层中的三个通道,并相加;然后,执行三次卷积,产生3个尺寸为3×3的通道。

在这里插入图片描述
多通道2D卷积的第一步:滤波器中的每个内核分别应用于输入层中的三个通道。

在这里插入图片描述
举一个更具体和直观的例子:
在这里插入图片描述
输入尺寸:N×N×C【宽×高×通道数】 = 5×5×3(经过Padding变为7×7×3)
卷积核(滤波器):F×F×FNum【长×宽×通道数】= 3×3×3
填充:P【Padding】 = 1(用0填充周围,填充长度为1)
步长:S【Step】= 2
输出尺寸:$M =\frac{N-F+2P}{S}+1$ $=\frac{5-3+2*1}{2}+1=3$

上面的动态图来自https://blog.csdn.net/v_july_v/article/details/51812459
这个博主的文章真的很Ncie,有时间我一定一一研读!

3. 三维(3 D)卷积

三维卷积对数据集应用三维滤波器,滤波器向3个方向(x, y, z)移动,计算低层特征表示。它们的输出形状是一个三维的体积空间,如立方体或长方体。在视频、三维医学图像等事件检测中有一定的应用价值。它们不仅限于三维空间,还可以应用于二维空间输入,如图像。
在这里插入图片描述
我们采用代数的方式对三维卷积进行介绍,具体思想与一维卷积、二维卷积相同。

  1. 假设输入数据的大小为$a1×a2×a3$,通道数channel为$c$,过滤器大小为$f$,即过滤器维度为$f×f×f×c$(一般不写channel的维度),过滤器数量为$n$。
  2. 三维卷积最终的输出为$(a1−f+1)×(a2−f+1)×(a3−f+1)×n$。该公式对于一维卷积、二维卷积仍然有效,只有去掉不相干的输入数据维度就行。【步长S,填充P也需要注意】
  3. 三维卷积常用于医学领域(CT影响),视频处理领域(检测动作及人物行为)。

4. 空洞卷积(dilated convolution)

Dilated/Atrous Convolution(中文叫做空洞卷积或者膨胀卷积或者扩张卷积或者带孔卷积) 或者是 Convolution with holes 从字面上就很好理解,是在标准的 convolution map 里注入空洞,以此来增加 reception field。相比原来的正常convolution,dilated convolution 多了一个 hyperparameter 称之为 dilation rate 指的是kernel的间隔数量(e.g. 正常的 convolution 是 dilatation rate 1)。

空洞卷积定义内核中值之间的间距。在这种类型的卷积中,由于间距的原因,内核的接受度增加,例如,一个3 × 3的内核,其膨胀率为2,其视野与一个5 × 5的内核相同。复杂性保持不变,但在本例中生成了不同的特性(观察一个大的感受野,而不增加额外的成本)
在这里插入图片描述
Standard Convolution with a 3 x 3 kernel (and padding):
在这里插入图片描述
Dilated Convolution with a 3 x 3 kernel and dilation rate 2:
在这里插入图片描述

空洞卷积动态示意图:
在这里插入图片描述
在此就介绍这么多,感兴趣的可以查找有关空洞卷积更详细的资料进行学习。

5. 转置卷积(解卷积、反卷积)

对于许多应用程序和许多网络架构,我们经常希望进行与正常卷积相反方向的转换,即我们希望执行上采样。一些示例包括生成高分辨率图像并将低维特征映射映射到高维空间,例如自动编码器或语义分段。

传统上,可以通过应用插值方案或手动创建规则来实现上采样。然而,神经网络之类的现代架构可以让网络本身自动地学习正确的转换,而无需人为干预。

对于下图中的示例,我们使用3 x 3内核在2 x 2输入上应用转置卷积,使用单位步幅填充2 x 2边框,上采样输出的大小为4 x 4。
在这里插入图片描述

6. 深度可分离卷积

深度可分离卷积 :

  1. 第一步:我们分别使用3个内核,而不是在2D卷积中使用大小为3 x 3 x 3的单个滤波器。每个滤波器的大小为3 x 3 x 1。每个内核与输入层的1个通道进行卷积(仅1个通道,而不是所有通道)。每个这样的卷积提供尺寸为5×5×1的图。然后我们将这些图堆叠在一起以创建5×5×3图像。在此之后,我们的输出尺寸为5 x 5 x 3。

在这里插入图片描述

  1. 第二步:为了扩展深度,我们应用1x1卷积,内核大小为1x1x3。将5 x 5 x 3输入图像与每个1 x 1 x 3内核进行对比,可提供大小为5 x 5 x 1的映射。

在这里插入图片描述
因此,在应用128个1x1卷积后,我们可以得到一个尺寸为5 x 5 x 128的层。
在这里插入图片描述
通过这两个步骤,深度可分离卷积将输入层(7 x 7 x 3)转换为输出层(5 x 5 x 128)。深度可分离卷积的整个过程如下图所示。
在这里插入图片描述
所以深度可分离卷积其实是通过两次卷积实现的。
那么,深度可分离卷积的优势是什么?
效率!与2D卷积相比,对于深度可分离卷积,需要更少的操作。

让我们回顾一下2D卷积示例的计算成本。
有128个3x3x3内核移动5x5次。这是128 x 3 x 3 x 3 x 5 x 5 = 86,400次乘法。

可分离的卷积怎么样?
在第一个深度卷积步骤中,有3个3x3x1内核移动5x5次。那是3x3x3x1x5x5 = 675次乘法。
在1 x 1卷积的第二步中,有128个1x1x3内核移动5x5次。这是128 x 1 x 1 x 3 x 5 x 5 = 9,600次乘法。

因此,总体而言,深度可分离卷积需要675 + 9600 = 10,275次乘法。这只是2D卷积成本的12%左右!

7. 分组卷积

2012年,在AlexNet论文中引入了分组卷积。实现它的主要原因是允许通过两个具有有限内存(每个GPU 1.5 GB内存)的GPU进行网络训练。下面的AlexNet在大多数层上显示了两个独立的卷积路径。它正在跨两个GPU进行模型并行化(当然,如果有更多的GPU,可以进行多GPU并行化)。
在这里插入图片描述
在这里,我们描述分组卷积如何工作。首先,传统的2D卷积遵循以下步骤。在此示例中,通过应用128个滤波器(每个滤波器的大小为3 x 3 x 3),将大小为(7 x 7 x 3)的输入层转换为大小为(5 x 5 x 128)的输出层。

或者在一般情况下,通过应用Dout内核(每个大小为 h x w x Din)将大小(Hin x Win x Din)的输入层变换为大小(Hout x Wout x Dout)的输出层。
在这里插入图片描述
在分组卷积中,过滤器被分成不同的组。每组负责具有一定深度的传统2D卷积,如下图。
在这里插入图片描述
以上是具有2个滤波器组的分组卷积的说明。在每个滤波器组中,每个滤波器的深度仅为标准2D卷积的深度的一半。它们具有深度Din/2。每个滤波器组包含Dout/2滤波器。

第一个滤波器组(红色)与输入层的前半部分([:,:0:Din/2])卷积,而第二个滤波器组(蓝色)与输入层的后半部分卷积([:,:,Din/2:Din])。因此,每个过滤器组都会创建Dout / 2通道。总的来说,两组创建2 x Dout/2 = Dout频道。然后,我们使用Dout通道将这些通道堆叠在输出层中。

8. 1×1卷积

1 x 1卷积中将一个数字乘以输入层中的每个数字。如果输入层有多个通道,此卷积会产生有趣的作用。下图说明了1 x 1卷积如何适用于尺寸为H x W x D的输入层。在滤波器尺寸为1 x 1 x D的1 x 1卷积之后,输出通道的尺寸为H x W x 1.如果我们应用N这样的1 x 1卷积然后将结果连接在一起,我们可以得到一个尺寸为H x W x N的输出层。
在这里插入图片描述
最初,在网络文件中提出了1 x 1卷积。然后,他们在Google Inception 被高度使用1 x 1卷积的一些优点是:降低维度以实现高效计算高效的低维嵌入特征池卷积后再次应用非线性
在上图中可以观察到前两个优点。在1 x 1卷积之后,我们显着地减小了尺寸。假设原始输入有200个通道,1 x 1卷积会将这些通道(功能)嵌入到单个通道中。第三个优点是在1 x 1卷积之后,可以添加诸如ReLU的非线性激活,非线性允许网络学习更复杂的功能

今天就总结到这里,谢谢大家。希望我们共同进步,拜拜!

参考:

https://mp.weixin.qq.com/s/caIzpCm7RaE4qFbvy9_dMQ

https://www.cnblogs.com/szxspark/p/8445406.html

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

https://blog.csdn.net/v_july_v/article/details/51812459

https://mp.weixin.qq.com/s/IWGQqA183Q1-NX3gwgQ_Yw

https://www.jianshu.com/p/f743bd9041b3

https://blog.csdn.net/makefish/article/details/88716534

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第7天】本文将深入探讨卷积神经网络(CNN)的基本原理,以及它如何在图像识别领域中大放异彩。我们将从CNN的核心组件出发,逐步解析其工作原理,并通过一个实际的代码示例,展示如何利用Python和深度学习框架实现一个简单的图像分类模型。文章旨在为初学者提供一个清晰的入门路径,同时为有经验的开发者提供一些深入理解的视角。
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
20 7
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络:从理论到实践
【10月更文挑战第35天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力成为科技界的宠儿。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,在图像识别和视频分析等领域展现出了惊人的潜力。本文将深入浅出地介绍CNN的工作原理,并结合实际代码示例,带领读者从零开始构建一个简单的CNN模型,探索其在图像分类任务中的应用。通过本文,读者不仅能够理解CNN背后的数学原理,还能学会如何利用现代深度学习框架实现自己的CNN模型。
|
14天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
1月前
|
机器学习/深度学习
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
本文探讨了深度可分离卷积和空间可分离卷积,通过代码示例展示了它们在降低计算复杂性和提高效率方面的优势。
63 2
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
|
28天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
72 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
29天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第21天】本文旨在深入探讨深度学习领域的核心组成部分——卷积神经网络(CNN)。通过分析CNN的基本结构、工作原理以及在图像识别、语音处理等领域的广泛应用,我们不仅能够理解其背后的技术原理,还能把握其在现实世界问题解决中的强大能力。文章将用浅显的语言和生动的例子带领读者一步步走进CNN的世界,揭示这一技术如何改变我们的生活和工作方式。
|
1月前
|
机器学习/深度学习 人工智能 监控
深入理解深度学习中的卷积神经网络(CNN):从原理到实践
【10月更文挑战第14天】深入理解深度学习中的卷积神经网络(CNN):从原理到实践
97 1
|
15天前
|
机器学习/深度学习 人工智能 自动驾驶
深入解析深度学习中的卷积神经网络(CNN)
深入解析深度学习中的卷积神经网络(CNN)
32 0
下一篇
无影云桌面