【CNN与卷积神经网络(吴恩达)】卷积神经网络学习笔记 - 教程
1 计算机视觉
谈到计算机视觉要解决的困难有很多,比如图像分类、目标检测和神经网络建立的图片风格迁移等。

当面对很大的图片的时候,相应地会产生很多的参数,在参数如此大量的情况下,难以获取足够的信息来防止神经网络发生过拟合,同时应该训练的巨额参数对内存要求也很高。因此卷积运算的出现就是为了消除该问题。

2 边缘检测实例
如何运算的。就是卷积计算是卷积神经网络的最基本的组成部分。在这里我们使用边缘检测的例子解释卷积

垂直边缘检测器。就是这是一个6 x 6的灰度图像,是6 x 6 x 1的矩阵而不是6 x 6 x 3的(缘于并没有RGB三通道)。为了检测图像中的垂直边缘,你可以构造一个3 x 3的矩阵(过滤器 或者 核)。对这个6 x 6的图像用3 x 3的过滤器对其进行卷积,这个卷积运算的输出将会是一个4 x 4的矩阵。如下
现在我们分别用数字表示图像颜色的深浅,数值越大则图像越亮,数值越小则图像越暗,我们可能表示出这三个矩阵,同种可以看到,卷积的结果表示出了输入图像的中间部分的边界。

3 更多的边缘检测的内容
暗的。就是从以下图片中可以看出若以左正右负的卷积核(垂直边缘检测器)对图像进行卷积操作,若图像从左到右依次是由明到暗变化,则边缘结果就是亮的,若图像从左到右依次是从暗到明变化,则边缘结果就


卷积核也有很多种类型,比如下图的Sobel filter和Scharr filter,若我们想要检测图像更麻烦的边缘信息,我们可以把卷积核中的数字换成可以学习的参数,并通过反向传播去训练它们,以便于达到更好的边缘检测效果。

4 Padding
如果我们有一个nxn的图像,用一个fxf的过滤器做卷积,那么输出结果的维度就是(n-f+1)x(n-f+1)。
这样的话会有两个缺点:
- 第一个缺点是每次做卷积操作,你的图像就会缩小。
- 第二个缺点是假设你注意角落边的像素,这个像素点只被一个输出所触碰或者说使用。所以那些在角落或者边缘区域的像素点在输出中采用较少,意味着你丢掉了图像边缘位置的许多信息
为了解决这些问题,你可以在卷积操作之前填充这幅图像。习惯上,你可以用0去填充,如果p是填充的数量,输出也就变成了(n+2p-f+1)x(n+2p-f+1)。

这样一来,丢失信息或者更准确来说角落或图像边缘的信息发挥的作用较小这一缺点 就被削弱了。
至于选择填充多少像素,通常有两个选择,分别叫做Valid卷积和Same卷积。Valid卷积意味着不填充。Same卷积意味着你填充后你的输出大小和输入大小是一样的,这时p的取值为p =(f-1)/2。
5 卷积步长
卷积步长可以理解为卷积核每次左右或者上下移动的格数,除此之外,剩余的卷积计算过程和步长为1的卷积计算过程相同,同样地,步长的大小也会影响输出矩阵的尺寸用公式可以表达为((n+2p-f)/s + 1) x ((n+2p-f)/s + 1),若求出来的n+2p-f)/s + 1不是整数,则可以对其进行向下取整。

在一些数学分支上,对于卷积操作之前需要对卷积核进行翻转操作(可以看成矩阵沿着副对角线进行转置操作),在数学上,在运算之前如果不进行翻转操作,应该把整个过程称之为互相关,但是在深度学习领域我们把省去翻转操作的整个过程就叫做卷积过程,这些对于我们对这个领域的学习和研究并不重要。

6 三维卷积
由于生活中的图像不都是单调的二值图像,而是色彩丰富的RGB图像,所以对这种图像进行处理的时候就需要把RGB三个通道进行分离,去分别对RGB三个通道进行逐一卷积操作,那么这个过程就叫做三维卷积过程。这种卷积下的卷积核和二维卷积是一样的,只不过由于有三个图像矩阵,所以应该对应有三层卷积核,即图像通道数 = 卷积核层数。
对于三维卷积中一些尺寸数据的描述,和二维卷积相似,只不过在n x n后面新加了一个尺寸数据nc,这个nc即表示图像的通道数,剩余对于输出图像的尺寸的计算公式和二维卷积下的一模一样。就是以下

7 单层卷积网络
下面我们举一个单层卷积网络的例子。我们把卷积的过程融合到神经网络的前向传播中去,首先我们可以把卷积核看作权重参数W[1],把卷积的过程即可看作Z[1] = W[1]a[0],然后再采用广播机制加上b[1],这就完成了第一步线性运算,接着使用ReLu函数进行激活,即a[1] = g(z[1])。这样就完成了一层卷积网络的前向传播过程。

如果有10个卷积核,我们许可算出一共就有(3X3X3+b) * 10 = 280个权重参数。
下面大家可以把第1层卷积神经网络推广到l层,根据计算过程中参数和变量之间的关系,可以推导出如下的通式。
8 简单卷积网络实例


9 池化层
池化层类似卷积运算,在这里举一个最大池化的例子,即在一个4x4的图像中采用一个2x2的核,这个《核》只是对对应区域进行取最大值计算,以步长为2进行移动计算,在每次计算中取区域中的最大值,这样就可以提取出图像中的最显著的特征。关键作用是压缩数据、提升计算效率并增强模型对输入变化的鲁棒性。
这是多通道池化的例子。池化后的结果矩阵尺寸大小和卷积运算一样。

均值池化。就是这个

池化层中的超参数是固定的,所以就不会去学习和调整。
10 卷积神经网络实例


11 为什么应用卷积?
如果把图像参数全部平铺,再利用传统的神经网络前向传播,会导致权重参数爆炸,这样不仅对训练平台的性能要求更高,而且运算效率也会下降,于是我们就提出了卷积计算,利用卷积运算来简化训练。
卷积网络映射参数少有两个原因,一个是参数共享,源于卷积核可以被共享到图像矩阵的每一块区域。

卷积网络映射参数少的第二个原因是稀疏连接,即输出矩阵的每一个元素只与原图像矩阵中参与运算的几个数有关,原图像其他位置的值不会对其产生影响。
通过卷积神经网络构建有效的猫猫检测器的过程。就是以下

浙公网安备 33010602011771号