CNN原理

一、卷积


对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

如图所示,1*1+1*0+1*1+0*0+1*1+1*0+0*1+0*0+1*1=4,所以对原图片进行卷积后的第一个值为4,后面也一样。那个乘以原图片的矩阵叫做卷积核,具体用来提取原图像的提取输入的一种特征。

上图原图的大小为5*5,经过卷积之后,右图大小变成3*3,经过卷积之后图像大小会变小,一般来说,经过卷积之后的大小会变成Output size=(N-F)/stride +1其中N为原图像的大小,F为卷积核的大小,stride为步长。步长简单来说就是卷积是卷积核每次移动的大小,上图就是每次移动一格。

下面来看一下卷积的作用


如果两个像素点都是白色(也就是值均为1),那么1*1 = 1,如果均为黑色,那么(-1)*(-1) = 1。不管哪种情况,每一对能够匹配上的像素,其相乘结果为1。类似地,任何不匹配的像素相乘结果为-1。如果一个feature(比如n*n)内部所有的像素都和原图中对应一小块(n*n)匹配上了,那么它们对应像素值相乘再累加就等于n2,然后除以像素点总个数n2,结果就是1。同理,如果每一个像素都不匹配,那么结果就是-1。具体过程如下:




对中间的也一样,



将整个图像进行卷积之后的图像如图所示



再用其他两个卷积核进行操作之后如图所示,过程和原理与上图一样,



我们将经过卷积之后的得到的特征叫做feature map。我们发现当原图像与卷积核的卷积之后的值越靠近1,说明该区域与卷积核越匹配,越靠近-1,则说明该区域与卷积核的反面越匹配,越靠近0则说明该区域与卷积核越不匹配。


                                  

原始图像经过不同feature的卷积操作就变成了一系列的featuremap

下面是卷积的动态图,展示了整个卷积的过程:



最右边为输入原图,它具有三个颜色通道,分别代表R、G、B。这里需要说明一下,我们可以将图像分为四种类型:二值图像、灰度图像、索引图像、RGB图像。灰度图像只含有一个通道,而RGB图像则含有三个通道。

中间的为卷积核,又叫做滤波器,将三个通道的值分别于两个卷积核相乘,得到两个feature map

这里还有两个概念:深度与填充值。深度depth:神经元个数,决定输出的depth厚度。同时代表滤波器个数。 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。 

这里的滤波器为两个,所以图像的深度为2,填充值为1


以第一个为例,我们将它的计算过程列出来



10 + 1*0 + -1*

+

-1*0 + 0*0 + 1*1

+

-1*0 + -1*0 + 0*1

+


-1*0 + 0*0 + -1*0

+

0*0 + 0*1 + -1*1

+

1*0 + -1*0 + 0*2

+



0*0 + 1*0 + 0*0

+

1*0 + 0*2 + 1*0

+

0*0 + -1*0 + 1*0

+

1

=

1


这里使用的是加权求和,而不是矩阵相乘。具体原因请看我的另一篇文章:卷积相乘和矩阵相乘不一样的地方?

二、池化层

在图像进行卷积之后,我们需要将图像进行池化,其目的就是缩小图像的大小,保存图像的重要信息。以最大池化为例,即选取区域中最大的值。其原理就是由于经过卷积的图像保存的值为与上一图像匹配程度的值,所以我们选取最大的值,其实就在再选取最佳的匹配结果。如下图所示

经过池化之后可以减少计算量,也可以降低机器负载,也可以减少过拟合。

三、激活函数

激活函数的作用是引入非线性因素,解决线性模型所不能解决的问题。我的理解就是在数值大于某个值时,这个值就是被激活,没有大于这个值,这个值就没有激活。

CNN中常见的激活函数为Relu(Rectified Linear Units),它的图像是

它的函数为


激活函数效果如图所示





将经过池化的值进行激活,效果如图所示:



四、全连接层

将前一层所有的神经元与当前层的每个神经元相连接,即与标准神经网络各层之间的连接相同,在全连接层不保存空间信息。旨在执行对原始图像的高级抽象

 

五、卷积神经网络

我们将前面讲到的卷积、池化、激活函数和全连接连接在一起,并根据实际情况多加几层,就是卷积神经网络。如图


参考文献:

图像类型http://www.cnblogs.com/theBoyisNone/p/5656172.html

[透析] 卷积神经网络CNN究竟是怎样一步一步工作的?

https://www.jianshu.com/p/fe428f0b32c1

CNN 卷积神经网络结构  https://blog.csdn.net/zhongkeli/article/details/51854619

深度学习笔记五:卷积神经网络CNN(基本理论)

https://blog.csdn.net/xierhacker/article/details/53463525

CNN笔记:通俗理解卷积神经网络

https://blog.csdn.net/v_july_v/article/details/51812459




猜你喜欢

转载自blog.csdn.net/ssssdbucdbod/article/details/80423052
CNN