盘点常用的卷积层

深度学习从理论到实践2019-01-26 12:08:34

机器学习中的卷积滤波器

卷积不是一个新的概念。它们已经在图像和信号处理中被使用了很长时间。然而,机器学习中的卷积与图像处理中的卷积不同。


在图像处理中,有一些用于执行一些特定任务的过滤器。例如,可用于模糊图像的过滤器可能如下所示:

与模糊相反的过滤器的作用是锐化图像,如下所示:

其他滤波器,如sobel滤波器,可以执行边缘检测和其他操作。

在CNN中,无需指配特定的过滤器的值。在训练CNN过程中学习每个过滤器的值。通过能够学习不同滤波器的值,CNN可以从图像中找到更多含义,而人类和人类设计的滤波器都可能无法找到这些。


通常情况下,我们会看到卷积层中的滤波器会学习检测抽象概念,例如人脸的边界或人的肩膀。通过堆叠卷积层,我们可以从CNN获得更抽象和更深入的信息。


下面将详细介绍各种常用的卷积。


常规卷积

用于卷积的最常见的类型是二维卷积(conv2D)。conv2D层中的过滤器或内核具有高度和宽度。它们通常小于输入图像,因此我们将它们在整个图像上移动。过滤器在图像上的区域称为感受野。


工作原理: Conv2D可以扩展到图像中的三个通道(RGB)。每个通道的滤波器也可能不同。每个通道单独执行卷积之后,将它们相加以获得最终的卷积图像。卷积运算后滤波器的输出称为特征图。


层中的每个滤波器被随机初始化为某种分布(正态,高斯等)。通过具有不同的初始化标准,每个过滤器的训练略有不同。但他们最终都会学习到检测图像中的不同特征。


如果两个过滤器都被类似地初始化,则它们学习到相似特征的机会大大增加。随机初始化确保每个过滤器学习识别不同的特征。


由于每个conv2D过滤器都学习一个单独的特征,我们在单个层中使用其中许多特征来识别不同的特征。它最好的地方是每个过滤器都是自动学习的。


这些滤波器的每一个都用作神经网络中下一层的输入。如果第一层中有8个滤波器而第二层中有32个滤波器,则第二层中的每个滤波器都会有8个输入。这意味着我们在第二层获得32X8个特征图。将一个过滤器的8个特征图中的每一个相加,以获得每个层的单个输出。


作用:conv2D层中的每个滤波器都是一个数字矩阵。矩阵对应于过滤器正在寻找的模式或特征。


在下图中,过滤器正在寻找曲线。该曲线可以对应于鼠标的背面,或者数字8,9,0等的一部分。每当滤波器遇到图像中的图案时,它就会产生大的输出。

虽然这可能看起来像一个非常简单的例子,但CNN第一层中的大多数conv2D过滤器都会搜索类似的特征。这也意味着可以使用相同的过滤器从多种类型的图像(鼠标,数字,面等)中提取信息。


用处:这些用于CNN的前几个卷积层以提取简单的特征。它们也被用于Capsule Network。以前,它们是唯一被使用的过滤器,它们构成了CNN的大部分。例如,最初的LeNet架构和AlexNet架构主要使用conv2D过滤器。


如今,随着卷积层和滤波器的进步,设计了更复杂的滤波器,可以用于不同的目的,并可用于不同的应用。我们稍后会介绍其中较流行的类型。


如何使用: Conv2D滤波器用于卷积神经网络的初始层。它们从图像中提取初始的高级特征。

虽然设计这种滤波器有许多经验法则,但它们通常都会在每层中堆叠有越来越多的滤波器。每个下一层可能具有前一层中过滤器数量的两到四倍。这有助于网络学习按等级划分的特征。


局限性: conv2D层的工作效果令人印象深刻。但是,它们确实存在某些局限性,这促使研究人员去寻找conv2D层的替代品。


它们最大的限制是它们的计算成本非常高。大型conv2D过滤器将花费大量时间来计算,而且堆叠层中的许多将增加计算量。


一个简单的解决方案是减小过滤器的尺寸并增加步幅。但这样做还会减少过滤器的有效感受区域并减少其可捕获的信息量。事实上,在第一篇Convolutional Network论文中,Yann Le Cunn曾提到过他对1x1卷积滤波器的担忧。


DILATED或ATROUS CONVOLUTION(扩张卷积或空洞卷积)

Conv2D层通常用于在图像识别任务中实现高精度。但是,它们需要进行大量计算并且需要大量RAM。扩张卷积或空洞卷积降低了卷积运算的复杂性。这意味着它们可以用于实时应用以及处理能力较差的智能手机的应用中。


工作原理:扩张卷积通过向conv2D内核添加额外的称为扩张率的参数来降低计算成本。扩张率是卷积滤波器中每个像素之间的间隔。


扩散率为2的3x3内核具有与5x5内核的相同视野。这将增加感受野,但不会增加计算成本。增加视野具有增加感受野的额外优势。这有助于过滤器捕获更多上下文信息。此外,通过检测更高分辨率的细节,我们可以检测图像中更精细的细节。


下图显示了扩张的卷积。

第一张图显示了常规的conv2D滤波器。这里,参数的数量等于感受野的大小。红点标示用于计算卷积的像素值。


在第二张图像中,我们添加了2的扩张率,这将感受野增加到7x7。这意味着通过增加扩张率,我们可以通过参数的线性变化以指数方式增加感受野。


通过增加扩张速率可以进一步增加感受野,就像最右边的图像一样。通过增加感受野,我们可以以更低的成本整合更多的背景知识。


用途:扩展卷积在图像分割任务时非常有用。传统上,图像分割要求我们使用卷积层执行下采样,然后使用反卷积层执行上采样。进行上采样以保持输出图像的大小相同。这引入了需要学习的更多参数。可以使用扩张卷积层代替反卷积进行上采样。


扩张卷积也可用于检测更高分辨率图像中的更精细细节。它们可以为我们提供广阔的视野,并执行多层卷积的任务,而无需额外的计算成本。


WaveNet架构中使用了扩张卷积,将文本转换为语音。


何时使用:在我们需要降低计算成本时,就会使用扩张卷积。如果您正在设计CNN以在智能手机中实时运行,您可以使用扩张卷积来减少需要计算的参数数量。


在图像分割任务中,使用扩张卷积来保持输入和输出图像的大小相同。


局限性:稀释卷积尚未具有任何确定的缺点,因为它们仅用于非常特定的应用。

然而,可能是因为我们使用单个像素值来表示像素区域,所以扩张的卷积可能倾向于具有与池化层易于发生的相同的空间损失误差。


可分离卷积传统卷积层的问题在于它有太多的参数。3x3卷积层有9个参数,每增加一个内核大小,这个数字就会增加2的幂次。


参数太多的缺点是,在训练过程中不仅需要花费很长时间来学习这些参数,而且在进行推理时进行预测也需要相同的时间。


扩张卷积减少了参数的数量,并将其用于图像分割。可分离卷积进一步降低了计算成本和参数数量,因此可用于移动和物联网设备。


工作原理:卷积是一种向量乘法,它给出了一定的结果。通过乘以两个较小的向量,我们可以得到相同的结果。用一个例子可以更好地理解这一点。


普通的3x3卷积有9个参数。可以将相同的3x3卷积计算为1x3卷积,然后是3x1卷积。我们可以获得与3x3卷积相同的效果。但是我们现在已经将参数数量减少到6,从而降低了我们的计算成本。



不同的滤波器以不同的方式合并或添加到可分离的卷积中。为了获得与3x3卷积相同的效果,我们无法合并单独的1x3和3x1卷积特征图。相反,我们在3x1卷积操作结束时合并它们。


用处:可分离卷积已经在Xception CNN中得到了极大的应用。Xception CNN由F Chollet设计,他也是Keras的作者。Xception的设计考虑到之前大多数其他CNN架构太大而无法在移动中实时使用。


通过减少参数的数量,Xception模型成为可以在现实世界中部署的CNN。下图显示了不同CNN模型中准确度和参数数量的比较。


Xception和Inception,由于尺寸较小,已广泛应用于Raspberry Pi和Arduino等嵌入式系统。



反卷积(DECONVOLUTION)

在解释什么是反卷积之前,重要的是要理解反卷积层在直观上的作用。


卷积将其感受野中的所有像素转换为单个值。当我们将卷积应用于图像时,我们不仅减小了图像尺寸(下采样),而且还将感受野中的所有信息合并到单个像素中。卷积层的最终输出是矢量。该向量可以称为图像嵌入,因为它包含了解该图像中存在的内容所需的所有信息。

当我们试图通过综合重要特征来预测图像中的内容时,这变得非常有效。但与此同时,它降低了图像的分辨率,这对于预测类非常有用,但对于图像分割或生成则无效。在这些情况下,我们需要从较低分辨率的图像到较高分辨率的图像。这是反卷积层的用武之地。


反卷积这个名称并不恰当,因为我们实际上并没有进行反卷积。卷积是傅立叶空间中的乘法,并且在卷积图像上的反卷积(在图像处理中)给出了原始图像。


反卷积(在其图像处理本质上)不能在机器学习中完成,因为在卷积层的情况下,图像的高斯模糊是可逆过程。这意味着反卷积操作是一个黑盒子,没有人已经弄清楚如何从复杂的图像中恢复原始像素值。然而,在机器学习中,反卷积是另一个卷积层,它将像素隔开并执行上采样。

卷积将在大区域上扩展的信息集成到单个像素中; 而反卷积在大范围内传播扩散这些信息。


工作原理:不可能将单个像素值插入到许多值中。快速的解决方案是对图像进行一些填充,然后应用卷积操作。该操作显然不会得到原始图像的相同像素值。实际上,它可能会导致一些非常奇怪的值或很多零值。但是,它确实将图像恢复到原始的空间维度。

在何处使用:如前所述,反卷积用于图像分割任务。当我们应用卷积时,减少了图像的空间维度。在卷积层之后进行反卷积以保持输出图像的大小与之前相同。


池化层(POOLING LAYER注意:池化不是卷积层,但我们在这里讨论它,因为它是CNN中常用的层。

引入池化层有两个主要原因:第一个是执行下采样,即减少需要完成的计算量,第二个是仅将重要数据传送到CNN中的下一层。


工作原理:池化层有两种:最大池化和平均池化。

在最大池化中,我们仅采用过滤器的感受野中的所有像素中的最大像素的值。在平均合并的情况下,我们采用感受野中所有值的平均值。

关于哪一个更好并且有许多关于何时使用哪些经验法则的争论很多,但是,通常最常用的是最大池化。由于我们尝试对输入向量进行下采样,因此池内核不会重叠,即它们的步长大于内核本身的大小。


池化层的局限性:通过池化进行下采样会导致CNN中出现大量问题。正如Geoffrey Hinton所提到的,池化层丢失了有关图像内不同对象的位置信息。这就是为什么许多新架构已经完全停止使用池化层的原因。


引入池化层以通过减少参数的数量来减少计算时间和复杂性。随着计算能力的提高和更好的下采样方式(如可分离和扩张卷积)的存在,可以抛弃池化层。


Copyright © 温县电话机虚拟社区@2017