卷积基础概念

卷积神经网络CNN的基本概念

神经元结构:由一个线性函数和一个非线性的激活函数构成。激活函数的作用是改变数据的线性关系,并且将输入数据映射在某个范围内,防止数据过大溢出。

全连接:每一层的每个神经元都与下一层的每个神经元相连,所有特征都要通过网络计算并传播下去。缺点:1).所有神经元都要与下层的神经元有关系,百不管它们相隔多远;2).计算量大。实际上,图片识别中首先找到的是各部分的边缘和轮廓,然后再要查看图片中的数据 和这些边缘轮廓的关系(基本思路)。

卷积核:用来检测某一方面的特征,比如垂直边界、水平边界等特征,又称为过滤器。卷积核大小可以指定为小于输入图像尺寸的任意值,卷积核越大,可提取的输入特征越复杂。

卷积神经网络的参数:1).卷积核大小,2).填充,3).步长。

卷积(Convolution):用卷积核将相邻像素之间的“轮廓”过滤出来。实际上,一个n乘n的图像经过f乘f的卷积核处理后,图像变小了,如果神经网络层数越来越多,会越来越小,同时,进行卷积时,边缘信息用到的时候很少

填充(padding):

是将输入图像的边缘用0填充。如果想要实现输入图像和输出图像的大小一致,填充的位数p满足p=(f-1)/2.
padding属性又包括四个属性padding-top、padding-right、padding-bottom、padding-left分别作用于上、右、下、左四边。

步长(Stride):

卷积是通过一步一步的移动卷积核 窗口将图像卷积完成,一般一次只移动一格,实际上移动的步伐 可以迈得更大。

卷积输出大小计算公式:假设输入图像n乘n,过滤器f乘f,填充p,步长s,则输出:

​ O = ( n - f + 2P ) / s +1

​ 例:输入图像5乘5,过滤器3乘3,填充1,步长2,则输出为(5 - 3 + 2 * 1) / 2 + 1 = 3,3X3的图像

通道:一般彩色图像有三个颜色通道,对应红绿蓝三种颜色(RGB)。分别为红色通道、绿色通道、蓝色通道。进行卷积时,卷积核由1个变为相同的3个,分别和各个通道的矩阵卷积,然后加在一起。

激活:对于卷积神经网络,在滤波器之后也需要一个激活层,一般函数也是用ReLU函数 ,对于单个卷积核,和输入图像进行卷积,并加上偏置量,再送入ReLU函数激活,且多个卷积核重复上述步骤。

池化的作用:降维

Dropout层的作用:防止CNN过拟合,以一定的概率将神经元暂时从网络中丢弃。

2D卷积

卷积被定义为:一个函数经过翻转和移动后与另一个函数的乘积的积分。执行卷积的目的是从输入中提取有用的特征。
计算公式:
00

3x3kernel,padding为1
01
3x3kernel,padding为003
CONV的优点:权重共享(weights sharing)和平移不变性(translation invariant),可以考虑像素空间的关系。
单通道版本的卷积操作如下图所示:04
对于实际的图片,往往是RGB三通道的。而对于卷积层而言,也是如此,一个卷积层往往也是多个通道组成的,每个通道描述一个方面的特征。
例如:输入层是一个 5 x 5 x 3 矩阵,有 3 个通道。过滤器则是一个 3 x 3 x 3 矩阵。首先,过滤器中的每个卷积核都应用到输入层的 3 个通道,执行 3 次卷积后得到了尺寸为 3 x 3 的 3 个通道。
如下图所示:05
之后,这 3 个通道都合并到一起(元素级别的加法)组成了一个大小为 3 x 3 x 1 的单通道。06

3D 过滤器

3D 过滤器仅沿着 2 个方向(图像的高&宽)移动(这也是为什么 3D 过滤器即使通常用于处理 3D 体积数据。
公式:对于一个大小为i、卷积核大小为k、填充为p、卷积步长为s的输入图像,经过卷积输出图像的大小为o:
08
具体实现过程,如图所示:
07
3D 过滤器可以沿着所有 3 个方向移动(高、宽以及图像的通道)。每个位置经过元素级别的乘法和算法都得出一个数值。由于过滤器滑动通过 3D 空间,输出的数值同样也以 3D 空间的形式呈现,最终输出一个 3D 数据。
09
1*1卷积:10
注:在一个维度为 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 的输出层。
因此,在执行计算昂贵的 3 x 3 卷积和 5 x 5 卷积前,往往会使用 1 x 1 卷积来减少计算量。此外,它们也可以利用调整后的线性激活函数来实现双重用途。

空间可分离卷积(separable convolution)

在一个可分离卷积中,我们可以将内核操作拆分成多个步骤。我们用y = conv(x,k)表示卷积,其中y是输出图像,x是输入图像,k是内核。这一步很简单。接下来,我们假设k可以由下面这个等式计算得出:k = k1.dot(k2)。这将使它成为一个可分离的卷积,因为我们可以通过对k1和k2做2个一维卷积来取得相同的结果,而不是用k做二维卷积。11
比起卷积,空间可分离卷积要执行的矩阵乘法运算也更少。
假设我们现在在 m x m 卷积核、卷积步长=1 、填充=0 的 N x N 图像上做卷积。传统的卷积需要进行 (N-2) x (N-2) x m x m 次乘法运算,而空间可分离卷积只需要进行 N x (N-2) x m + (N-2) x (N-2) x m = (2N-2) x (N-2) x m 次乘法运算。
空间可分离卷积与标准的卷积的计算成本之比为:
12

深度可分离卷积

2D 卷积案例中的计算成本:128 个 3x3x3 的卷积核移动 5x5 次,总共需要进行的乘法运算总数为 128 x 3 x 3 x 3 x 5 x 5 = 86,400 次。
13
这一步,有 3 个 3x3x3 的卷积核移动 5x5 次,总共需要进行的乘法运算次数为 3x3x3x1x5x5 = 675 次;
在第二步的 1x1 卷积中,有 128 个 3x3x3 的卷积核移动 5x5 次,总共需要进行的乘法运算次数为 128 x 1 x 1 x 3 x 5 x 5 = 9,600 次。
深度可分离卷积共需要进行的乘法运算总数为 675 + 9600 = 10,275 次
14
深度可分离卷积:花费的计算成本仅为 2D 卷积的 12%。

深度可分离卷积与 2D 卷积之间的乘法运算次数之比为:15

分组卷积

Group convolution 分组卷积:把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。
16
在分组卷积中,过滤器被拆分为不同的组,每一个组都负责具有一定深度的传统 2D 卷积的工作。
17
上图表示的是被拆分为 2 个过滤器组的分组卷积。在每个过滤器组中,其深度仅为名义上的 2D 卷积的一半(Din / 2),而每个过滤器组都包含 Dout /2 个过滤器。第一个过滤器组(红色)对输入层的前半部分做卷积([:, :, 0:Din/2]),第二个过滤器组(蓝色)对输入层的后半部分做卷积([:, :, Din/2:Din])。最终,每个过滤器组都输出了 Dout/2 个通道。整体上,两个组输出的通道数为 2 x Dout/2 = Dout。之后,我们再将这些通道堆叠到输出层中,输出层就有了 Dout 个通道。

扩张卷积(空洞卷积 Dilated Convolutions)

扩张卷积引入另一个卷积层的参数被称为扩张率
定义了内核中值之间的间距。扩张速率为2的3x3内核将具有与5x5内核相同的视野,而只使用9个参数
18

反卷积(转置卷积 Transposed Convolutions)

19

ReLU:全称 Rectified Linear Units)激活函数

优势:
(1)反向传播时,可以避免梯度消失。
(2)Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释balabala)。
(3)相对于sigmoid激活函数,tanh激活函数,求导简单。采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
缺点:
(1)左侧神经元为0,导致神经元死亡,不再更新。
(2)输出非负,仍然存在zigzag现象。
(3)过于宽广的接受域,在接受较大数据时出现不稳定。
(4)负数方向输入数据的负数部分,ReLU会把它置为0,那么梯度也为0,训练过程中负数部分不会更新
总而言之:激活函数ReLU计算量小,能缓解梯度消失,能缓解过拟合

转载:https://blog.csdn.net/gwplovekimi/article/details/89890510

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,主要用于图像识别和计算机视觉任务。它的基本概念包括以下几个方面: 1. 卷积层(Convolutional Layer):卷积层是CNN的核心组成部分,通过使用一系列可学习的滤波器(也称为卷积核)对输入图像进行卷积操作,提取图像的特征。每个滤波器会在输入图像上滑动,并计算出对应位置的卷积结果,生成一个特征图。 2. 池化层(Pooling Layer):池化层用于减小特征图的空间尺寸,同时保留重要的特征信息。常见的池化操作包括最大池化和平均池化,它们分别选取局部区域中的最大值或平均值作为池化结果。 3. 激活函数(Activation Function):激活函数引入非线性变换,增加模型的表达能力。在卷积神经网络中,常用的激活函数包括ReLU(Rectified Linear Unit)、Sigmoid和Tanh等。 4. 全连接层(Fully Connected Layer):全连接层将前面的卷积层和池化层的输出连接起来,并通过一系列的全连接操作进行分类或回归等任务。 5. 权重共享(Weight Sharing):卷积神经网络中的卷积操作具有权重共享的特性,即在不同位置使用相同的卷积核进行卷积计算。这样可以大大减少需要学习的参数数量,提高模型的效率和泛化能力。 6. 多层网络结构:卷积神经网络通常由多个卷积层、池化层和全连接层组成,通过堆叠多个层次来提取更高级别的特征表示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值