吴恩达【深度学习工程师】学习笔记(十一)

吴恩达【深度学习工程师】专项课程包含以下五门课程:

1、神经网络和深度学习;
2、改善深层神经网络:超参数调试、正则化以及优化;
3、结构化机器学习项目;
4、卷积神经网络;
5、序列模型。

今天介绍《卷积神经网络》系列第一讲:卷积神经网络

主要内容:
1、计算机视觉

2、边缘检测

3、padding

4、卷积步长

5、cnn示例

计算机视觉

一般的计算机视觉(Computer Vision)问题包括图像分类、目标检测 和 神经风格迁移。

传统神经网络处理机器视觉的一个主要问题是输入层维度很大。例如一张1000 x 1000 x 3 的图片,神经网络输入层的维度将达到1000 x 1000 x 3 = 3000000 。这样的后果,一是神经网络结构复杂,易出现过拟合;二是计算所需内存、计算量大。解决这一问题的方法是使用卷积神经网络(CNN)。

边缘检测示例

对于人脸检测计算机视觉问题,神经网络由浅层到深层,分别可以检测出图片的边缘特征 、局部特征、整体面部轮廓。

这里写图片描述

常检测的图片边缘分为两类:垂直边缘(vertical edges)和水平边缘(horizontal edges)。

边缘检测可以通过与相应滤波器(filter)进行卷积来实现。

吴恩达【深度学习工程师】学习笔记(十一)_第1张图片

在深度学习中,如果我们想检测图片的各种边缘特征,而不仅限于垂直边缘和水平边缘,那么filter的数值通过模型训练得到。

CNN的主要目的就是通过训练计算出这些filter的数值。得到了这些filter后,CNN浅层网络也就实现了对图片相关边缘特征的检测。

Padding

如果原始图片尺寸为n x n,filter尺寸为f x f,则卷积后的图片尺寸为(n-f+1) x (n-f+1),注意f一般为奇数。

这样会导致 :1、卷积运算后,输出图片尺寸变小;2、原始图片边缘信息对输出贡献少,输出图片丢失边缘信息。

为了解决图片缩小的问题,可以使用padding方法,即把原始图片尺寸进行扩展,扩展区域补零,用p来表示每个方向扩展的宽度。

这里写图片描述

经过padding之后,原始图片尺寸为(n+2p) x (n+2p),filter尺寸为f x f,则卷积后的图片尺寸为(n+2p-f+1) x (n+2p-f+1)。若要保证卷积前后图片尺寸不变,则p应满足:

p=f12

没有padding操作,p=0,我们称之为“Valid 卷积”;有padding操作,p=f12,我们称之为“Same 卷积”。

卷积步长

卷积步长(Stride)表示filter在原图片中水平方向和垂直方向每次的步进长度。之前我们默认stride=1。若stride=2,则表示filter每次步进长度为2,即隔一点移动一次。

这里写图片描述

我们用s表示stride长度,p表示padding长度,如果原始图片尺寸为n x n,filter尺寸为f x f,则卷积后的图片尺寸为:

n+2pfs+1 X n+2pfs+1

上式中,表示向下取整。

对于3通道的RGB图片,其对应的滤波器算子同样也是3通道的。例如一个图片是6 x 6 x 3,分别表示图片的高度(height)、宽度(weight)和通道(#channel)。

3通道图片的卷积运算与单通道图片的卷积运算基本一致。过程是将每个单通道(R,G,B)与对应的filter进行卷积运算求和,然后再将3通道的和相加,得到输出图片的一个像素值。

不同通道的滤波算子可以不相同。例如R通道filter实现垂直边缘检测,G和B通道不进行边缘检测,全部置零,或者将R,G,B三通道filter全部设置为水平边缘检测。

为了进行多个卷积运算,实现更多边缘检测,可以增加更多的滤波器组。例如设置第一个滤波器组实现垂直边缘检测,第二个滤波器组实现水平边缘检测。这样,不同滤波器组卷积得到不同的输出,个数由滤波器组决定。

这里写图片描述

若输入图片的尺寸为n x n x nc,filter尺寸为f x f x nc,则卷积后的图片尺寸为(n-f+1) x (n-f+1) x nc。其中,nc为图片通道数目,nc为滤波器组个数。

卷积神经网络

卷积神经网络的单层结构如下所示:

这里写图片描述

相比之前的卷积过程,CNN的单层结构多了激活函数ReLU和偏移量b。整个过程与标准的神经网络单层结构非常类似:

Z[l]=W[l]A[l1]+b

A[l]=g[l](Z[l])

卷积运算对应着上式中的乘积运算,滤波器组数值对应着权重W[l],所选的激活函数为ReLU。

计算一下上图中的参数数目:每个滤波器组有3x3x3=27个参数,还有1个偏移量b,则每个滤波器组有27+1=28个参数,两个滤波器组总共包含28x2=56个参数。

选定滤波器组后,参数数目与输入图片尺寸无关。例如一张1000x1000x3的图片,标准神经网络输入层的维度将达到3百万,而在CNN中,每个滤波器组任然是有27+1=28个参数。

CNN示例

这里写图片描述

该CNN模型各层结构如上图所示。a[3]的维度是7 x 7 x 40,将a[3]排列成1列,维度为1960 x 1,然后连接最后一级输出层。输出层可以是一个神经元,即二元分类(logistic);也可以是多个神经元,即多元分类(softmax)。最后得到预测输出y^

一般地,随着CNN层数增加,n[l]Hn[l]W一般逐渐减小,而n[l]c一般逐渐增大。

CNN主要有三种类型的层:卷积层(Conv)、池化层(Pooling)、全连接层(FC)。

池化层(Pooling layers)是CNN中用来减小尺寸,提高运算速度的。

常用的max pooling。

这里写图片描述

Max pooling的好处是只保留区域内的最大值(特征),忽略其它值,降低噪音影响,提高模型健壮性。

除了max pooling之外,还有一种average pooling,就是在滤波器算子滑动区域计算平均值。

下面是一个简单的数字识别的CNN例子:

这里写图片描述

如图:CONV1和POOL1构成第一层,CONV2和POOL2构成第二层。FC3和FC4为全连接层FC。最后是包含10个神经元的输出层(softmax)。

相比标准神经网络,CNN参数数目要少得多,原因有两个:

  • 参数共享:一个特征检测器对图片某块区域有用,同时也对图片其它区域有用。

  • 连接的稀疏性:因为滤波器尺寸是固定的,因此,每一层的神经元只与输入部分区域神经元相关。

由于CNN参数数目较小,所需的训练样本就相对较少,从而一定程度上不容易发生过拟合现象。

CNN比较擅长捕捉区域位置偏移。也就是说CNN进行物体检测时,不太受物体所处图片位置的影响,增加检测的准确性和系统的健壮性。

你可能感兴趣的:(深度学习课程笔记)