论文:Gradient-Based Learning Applied to Document Recognition
论文链接:http://www.dengfanxin.cn/wp-content/uploads/2016/03/1998Lecun.pdf
代码链接:https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet_train_test.prototxt
0、概述
LeNet-5出自论文Gradient-Based Learning Applied to Document Recognition,作者是Yann Lecun大神,相信搞深度学习的同学应该听说过他。
LeNet-5可以说是最最简单的一个卷积神经网络了,而且是一种用于手写体字符识别的非常高效的卷积神经网络,基本刚入门深度学习的同学应该先从这个网络模型看起,跑一跑MNIST手写体字符识别的数据集,体会一把卷积神经网络CNN的强大。
毫无疑问学习深度学习必须要学习CNN网络,学习CNN就必须明白卷积层、池化层等这些基础各层,以及它们的参数意义,因为CNN涉及的最核心的东西无非就是卷积层、池化层、全连接层等。
下面我们主要详细介绍一下卷积层和池化层,它们是CNN卷积神经网络的精髓所在,理解了它们的含义可以帮助我们理解LeNet-5。
1、卷积层(Convolution)
卷积层是卷积神经网络CNN的最最最核心的组成部件(从卷积神经网络这个名字就可以看出卷积操作在其中的分量了)。
在传统的图像处理里我们提到的卷积是二维卷积,即离散二维滤波器(也称作卷积核)与二维图像做卷积操作,简单的讲是二维滤波器滑动到二维图像上所有位置,并在每个位置上与该像素点及其领域像素点做内积。
卷积操作被广泛应用与图像处理领域,不同卷积核可以提取不同的特征,例如边沿、线性、角等特征。在深层卷积神经网络中,通过卷积操作可以提取出图像低级到复杂的特征。
对于给定的一幅图像来说,给定一个卷积核,卷积就是根据卷积窗口,进行像素的加权求和。
记住下面几个符号,以后会经常看到:
- H:图片高度;
- W:图片宽度;
- D:原始图片通道数,也是卷积核个数;
- F:卷积核高宽大小;
- P:图像边扩充方式('VALID'或者'SAME');
- S:滑动步长。
下面具体看一个例子来了解这些参数具体是什么含义:
对于下图来说,蓝色大的矩形代表图像的像素,我们的卷积核就是在这个范围内进行左右的滑动,我们可以看到是5×5的size,因此:
- H:图片高度=5
- W:图片宽度=5
紫色小一点的矩形代表的就是上面所介绍的卷积核,卷积核就是在上述5×5的图像范围内进行滑动从而实现卷积操作,我们可以看到图中只包含了1个卷积核,而且是3×3的size,因此:
- D:原始图片通道数,也是卷积核个数=1(channel=1)
- F:卷积核高宽大小=3(filter size=3x3)
看图中最左上角的蓝色