01
人类视觉原理
人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理,识别许多基本结构(指向各个方向的边、白块、黑块等),再用这些基本结构拼出人脸的不同器官(例如鼻子、眼睛、耳朵),这些器官又可以向上一层拼出不同样式的人脸,最后模型通过在图片中匹配这些不同样式的人脸(即高阶特征)来进行人脸识别。下面是人脑进行人脸识别的一个示例:
那么我们可以很自然的想到:可以不可以模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类呢?答案是肯定的,这也是卷积神经网络的灵感来源。
02
卷积神经网络介绍
卷积神经网络(Convolutional Neural Network,CNN)是一种深度前馈人工神经网络,擅长图像识别等问题。CNN最早由Yann LeCun提出并应用在手写字体识别上(MINST)。LeCun提出的网络称为LeNet,其网络结构如下:
卷积层是卷积神经网络最重要的一个层次,也是“卷积神经网络”的名字来源。每个卷积层包含三个部分:卷积、非线性激励函数和池化。
(1)卷积
卷积运算的定义如下图所示:
蓝色矩阵就是输入的图像,蓝色矩阵周围有一圈灰色的框是填充值,粉色矩阵就是卷积层的卷积核。绿色矩阵就是经过卷积运算后的输出矩阵,这里的步长设置为2。
在卷积层中每个卷积核只关注一个特性。卷积核就是图像处理中的滤波器。可以认为,每个卷积核代表了一种图像模式,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。
(2)非线性激活函数
把卷积输出结果做非线性映射。
CNN采用的激活函数一般为ReLU(The Rectified Linear Unit/修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱。
(3)池化
池化层以认为是将一张高分辨率的图片转化为低分辨率的图片。可以非常有效的缩小矩阵的尺寸,从而减小全连接层的参数个数,这样可以加快计算速率同时又防止过拟合,池化,可以减小模型,提高速度,同时提高所提取特征的鲁棒性。
池化用的方法有最大池化max pooling和平均池化average pooling,而实际用的较多的是max pooling。这里就说一下max pooling,maxl pooling会保留原始像素块中灰度值最高的那一个像素,即保留最显著的特征。
上图中,我们可以看到,原始图片是4x4的,我们对其进行下采样,采样窗口为2x2,最终将其下采样成为一个2x2大小的特征图。
03
CNN的实验结果
最后,我们实现了一个简单的CNN,使用的数据集依然是MNIST,在测试集上可以得到的准确率约为99.2%。
相比上一次的Softmax的92的正确率,CNN的正确率提高了许多。这其中主要来自于CNN能够保留图片的空间结构信息,还有CNN对图像特征的提取和抽象能力。
暗中观察
默默关注
领取专属 10元无门槛券
私享最新 技术干货