卷积神经网络原理
概述
卷积神经网络又称作(ConvNet, CNN),它的出现解决了人工智能图像识别的难题,图像识别数据量大,并且在识别的过程中很难保留原有的信息,因此卷积的作用就体现在这里。比如我们经常说的像素,100W像素,那就是,1000X1000个像素点,同时每个像素点上有3个颜色参数,分别为红、绿、蓝。那么处理一张100w像素的图片,就需要输入300w个参数,这还是100w像素的图片,现在看看自己手机的照片,随便一张都是千万级别的,因此图片数据需要降维。
卷积神经网络的构成
典型的 CNN 由3个部分构成:
- 卷积层
- 池化层
- 全连接层
其中卷积层用来提取图像的局部信息,池化层用来对数据进行降维,全连接层为普通的神经网络,用于输出想要的结果。 从整体的结构上看,卷积神经网络类似与我们大脑对图像的处理过程,我们在观察一个事物或者一个人的时候,总是先从局部提取一些关键的信息,比如现在脑海里想一个人的头像,这个人的脸并不是全部很清晰的,但是他脸上的关键信息是很清楚的,比如孙红雷。
卷积运算
I为输入的信息,K为卷积核(3X3),convolved为卷积结果,卷积核通过不断的滑动最终生成最后的卷积结果。比如卷积结果的左上角数字4,就是通过i的阴影部分和k进行逐元素相乘得到。同时在卷积的过程中需要注意滑动的步幅,这里的步幅为1. 在实际应用中,可以使用不同的卷积核,卷积出的值越大,保留的信息越多。
池化运算
池化运算就是下采样的过程,通过卷积之后得到的图片虽然缩小了,但是还是很大,因为卷积核比较小,为了降低数据维度,因此采用下采样的方式,如图所示,一开始的图片为44的图片,通过22的采样窗口,将数据压缩为2*2的数据,这里每次采样采用的最大池化原则,同时在实际中也存在平均采样的方法。
循环
前面进行了一个卷积和池化的过程,在实际的人工智能的操作中,研究者通常采用多个卷积和池化操作,最后使得数据达到要求的大小进行运算。
全连接层
这部分的就是卷积神经网络的神经网络部分了,通过前面的卷积和池化之后,图片已经缩小的足够进行神经网络运算了,对于神经网络的部分我后面会专门进行一次学习,这里不过介绍
卷积输出大小计算
N = (W − F 2P)/S 1
- 输入图片大小 W×W
- Filter大小 F×F 即卷积核大小
- 步长 S
- padding的像素数 P 这里是指的填充的图像圈数,目的是为了防止图像丢失边际信息和方式过快变小。
比如 32x32大小的图片,卷积核大小为5x5,卷积核个数为6,那么它的输出大小为 N=32-5 1= 28,这样就形成了28x28x6的神经元。这个处理其实就是经典的LeNet5神经网络的C1层
上图就是经典的LeNet5的网络
- C1层-卷积层
- S2层-池化层:在C1层进行卷积之后,随后对C1的结果进行下采样,使用的是2*2的采样区域,生成14x14x6的输出。
- C3层-卷积层 生成10x10x16的输出
- S4层-池化层 生成5x5x16的输出
- C5层-卷积层 生成1x1x120的输出
- F6层-全连接层 F6层有84个节点
- Output层-全连接层 共有10个节点,分别代表数字0到9
LeNet-5是一种用于手写体字符识别的非常高效的卷积神经网络,也是比较经典的神经网络学习架构,后续会专门对这个结构进行详细解析和重现。
结束语
love&peace