卷积神经网络(CNN)

一、算法思想

卷积神经网络主要是通过设计的滤波器与图像进行卷积操作,提取图片中的某些特征,歃歎歎的主要思想是通过滤波器不断提取特征从局部特征到整体特征,从而对物体进行识别。

二、算法推导

1、边缘检测示例

假如有一张图像,想让计算器搞清楚图片上有什么物体,可以做的事情是检测图像的水平边缘与垂直边缘。

图像缺陷 神经网络识别 图像神经网络算法_卷积



图1是一个图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_02的灰度图像,构造一个图像缺陷 神经网络识别 图像神经网络算法_卷积_03的矩阵,在卷积神经网络中通常称为filter,对这个图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_02的图像进行卷积运算得到图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_05的矩阵,以左上角的-5为例:图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_06

图像缺陷 神经网络识别 图像神经网络算法_卷积_07



为什么这种卷积计算可以得到图像的边缘,下图0表示图像暗色区域,10为图像比较亮的区域,同样用一个图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_08过滤器,对图像进行卷积,得到的图像中间亮,两边暗,亮色区域就对应图像边缘。

图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_09



通过以下的垂直过滤器与水平过滤器可以实现垂直边缘与水平边缘的检测

图像缺陷 神经网络识别 图像神经网络算法_卷积神经网络_10



以下列出了一些常用的过滤器,对于不同的过滤器也有着不同的争论,在卷积神经网络中把这些过滤器当成我们要学习的参数,卷积神经网络训练的目标就是去理解过滤器的参数.

图像缺陷 神经网络识别 图像神经网络算法_彩色图像_11



2、Padding

在上部分中,通过一个图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_08的过滤器来对图像缺陷 神经网络识别 图像神经网络算法_卷积_13的图像进行卷积,得到了一幅图像缺陷 神经网络识别 图像神经网络算法_彩色图像_14的图像,假设输出图像大小为图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_15与过滤器大小为图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_16,输出图像大小则为图像缺陷 神经网络识别 图像神经网络算法_卷积_17.

这样做卷积运算的缺点是,卷积图像的大小会不断缩小,另外图像的左上角的元素只被一个输出所使用,所以在图像边缘的像素在输出中采用较少,也就意味着你丢掉了很多图像边缘的信息,为了解决这两个问题,就引入了padding操作,也就是在图像卷积操作之前,沿着图像边缘用0进行图像填充。对于图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_08的过滤器,我们填充宽度为1时,就可以保证输出图像和输入图像一样大。

经过padding之后,原始图片尺寸为图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_19,filter尺寸为图像缺陷 神经网络识别 图像神经网络算法_彩色图像_20,则卷积后的图片尺寸为图像缺陷 神经网络识别 图像神经网络算法_彩色图像_21。若要保证卷积前后图片尺寸不变,则p应满足:

图像缺陷 神经网络识别 图像神经网络算法_卷积_22


没有padding操作,图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_23,我们称之为“Valid convolutions”;有padding操作,图像缺陷 神经网络识别 图像神经网络算法_卷积神经网络_24,我们称之为“Same convolutions”。

图像缺陷 神经网络识别 图像神经网络算法_彩色图像_25



3、Stride

卷积步长是指过滤器在图像上滑动的距离,前两部分步长都默认为1,如果卷积步长为2,卷积运算过程为:

图像缺陷 神经网络识别 图像神经网络算法_卷积神经网络_26



我们用s表示stride长度,p表示padding长度,如果原始图片尺寸为图像缺陷 神经网络识别 图像神经网络算法_卷积神经网络_27,filter尺寸为图像缺陷 神经网络识别 图像神经网络算法_彩色图像_20,则卷积后的图片尺寸为:

图像缺陷 神经网络识别 图像神经网络算法_彩色图像_29


上式中,图像缺陷 神经网络识别 图像神经网络算法_卷积_30表示向下取整。

4、彩色图像卷积

以上讲述的卷积都是灰度图像的,如果想要在RGB图像上进行卷积,过滤器的大小不在是图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_08而是有图像缺陷 神经网络识别 图像神经网络算法_卷积_32,最后的3对应为通道数(channels),卷积生成图像中每个像素值为图像缺陷 神经网络识别 图像神经网络算法_卷积_32过滤器对应位置和图像对应位置相乘累加,过滤器依次在RGB图像上滑动,最终生成图像大小为图像缺陷 神经网络识别 图像神经网络算法_彩色图像_14

另外一个问题是,如果我们在不仅仅在图像总检测一种类型的特征,而是要同时检测垂直边缘、水平边缘、45度边缘等等,也就是多个过滤器的问题。如果有两个过滤器,最终生成图像为图像缺陷 神经网络识别 图像神经网络算法_卷积_35的立方体,这里的2来源于我们采用了两个过滤器。如果有10个过滤器那么输出图像就是图像缺陷 神经网络识别 图像神经网络算法_卷积神经网络_36的立方体。

图像缺陷 神经网络识别 图像神经网络算法_卷积_37


图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_38


5、单层卷积神经网络

相比之前的卷积过程,CNN的单层结构多了激活函数ReLU和偏移量b.在图10中,每个过滤器的参数的个数为:图像缺陷 神经网络识别 图像神经网络算法_卷积_39个参数,图像缺陷 神经网络识别 图像神经网络算法_卷积_32为过滤器的大小,1为偏差系数。如果有10个过滤器,那么总的参数个数为图像缺陷 神经网络识别 图像神经网络算法_彩色图像_41个。最后,总结一下CNN单层结构的所有标记符号,设层数为图像缺陷 神经网络识别 图像神经网络算法_卷积_42

图像缺陷 神经网络识别 图像神经网络算法_卷积神经网络_43


图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_44
图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_45
图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_46
图像缺陷 神经网络识别 图像神经网络算法_卷积神经网络_47

输入维度为:图像缺陷 神经网络识别 图像神经网络算法_彩色图像_48

每个滤波器的维度为:图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_49

权重维度为:图像缺陷 神经网络识别 图像神经网络算法_彩色图像_50

偏置维度为:图像缺陷 神经网络识别 图像神经网络算法_卷积神经网络_51

输出维度为:图像缺陷 神经网络识别 图像神经网络算法_图像缺陷 神经网络识别_52

其中,

图像缺陷 神经网络识别 图像神经网络算法_卷积神经网络_53

6、简单卷积神经网络示例

该CNN模型如图11所示,图像缺陷 神经网络识别 图像神经网络算法_卷积神经网络_54的维度是7740,将图像缺陷 神经网络识别 图像神经网络算法_卷积神经网络_54排成1列,维度为1960*1,然后连接最后一级输出层,输出层可以是二分类(logistic),也可以是多分类(softmax),最后得到预测输出
图像缺陷 神经网络识别 图像神经网络算法_卷积_56.CNN有三种类型的layer:卷积层,池化层,全连接层。

池化层是CNN用来减小尺寸,提高运算速度的,同样能减小nosie影响,让各特征更具有健壮性。池化中的maxpooling是求滤波器滑动区域内的最大值,池化中的averagepooling是求滤波器滑动区域内的平均值。

图像缺陷 神经网络识别 图像神经网络算法_卷积_57


图像缺陷 神经网络识别 图像神经网络算法_卷积_58