谢东阳, 李丽宏, 苗长胜
(河北工程大学 信息与电气工程学院,河北 邯郸 056038)
手写体数字识别是光学字符识别(Optical Character Recognition,OCR)的一个分支,是利用计算机将图片中的文字信息转换为计算机语言的过程。数字识别是一种图像分类问题,一直是机器深度学习的一个热点研究问题,在快递单号、财务报表、手写票据等领域广泛应用[1-2]。数字识别的重点在于算法对图像本身的特征提取,传统的分类算法都存在特征提取不充分的问题,如贝叶斯分类法、K最近邻算法、支持向量机(Support Vector Machines,SVM)、BP(Back Propagation)神经网络等[3]。
卷积神经网络(Convolutional Neural Network,CNN)的出现,极大地提高了手写数字识别的准确率。CNN是由美国学者Cun提出的一种深度前馈人工神经网络,包括卷积层、池化层、全连接层和输出层[4]。CNN通过对提取到的图像特征自动学习,能够获得更高层次的特征表达,使学习到的特征信息具有更好的泛化能力[5]。邓长银等[6]通过改变LeNet-5模型的网络层数、激活函数以及输入图片的尺寸,相较传统方法识别率有所提高。茹晓青[7]等提出了一种基于形变卷积神经网络的识别方法,利用形变卷积代替VGG16模型中的普通卷积,提高了多变外观数字的识别精度。陈玄等[8]提出了一种融合卷积神经网络,通过融合两种网络的高级特征,增加网络层的高级尺寸,增强网络的表达能力,识别的精度高于两种模型单独使用。
尽管卷积神经网络在图像分类任务中表现优越,但是对于分辨率较小的图像,深度网络会浪费过多的计算资源。本文以AlexNet网络结构为基础,减小模型的卷积核尺寸与数量,引入Inception-Resnet模块提升算法的特征提取能力,并使用批标准化 (Batch Normalization,BN)加快模型的训练速度。通过对实验结果的分析,验证了本文方法的有效性。
AlexNet是由多伦多大学的Krizhevsky等[9]在2012年提出的,并在当年的ImageNet大赛上打破了图像分类的记录获得了比赛的冠军,使图像分类的准确率提高了一倍多。
AlexNet的网络结构如图1所示,AlexNet网络模型结构简洁,由5层卷积层、2层隐藏全连接层和一层输出全连接层组成。整个网络结构使用ReLu代替Sigmoid作为激活函数,能有效地解决Sigmoid在层数较多的网络结构中出现的梯度弥散问题。同时网络在全连接层后添加Dropout操作,利用随机隐退神经元个数的方法,在网络的训练过程中减少模型的参数量,能够有效地防止过拟合现象的出现。在Relu激活函数后添加局部响应归一化(Local Response Norm,LRN),通过对局部神经元创建响应竞争机制,提高了网络的泛化能力。使用重叠的最大池化层代替平均池化,很好地解决了平均池化的模糊问题,同时在一定程度上提高了图像特征的丰富性。AlexNet模型相比于LeNet5和传统的机器学习方法具有更高的识别精度,但是本身的参数量巨大,模型的训练时间长,识别速度慢。
图1 AlexNet网络模型Fig.1 AlexNet network model
Inception模块将多个卷积层与一个池化层并联在网络中,模型在训练的过程中自主选择使用哪种方式获取特征信息,不需要人为地确定参数,是一种高效的稀疏结构,有利于提取到丰富的特征[10]。使用多种尺寸的卷积核,提取不同层次的特征,增加了特征的多样性。Inception将不同尺寸的特征融合在一起有利于后面的分类任务。并利用小卷积代替大卷积,使用1×n,n×1的非对称卷积代替n×n的卷积核,大大减少了网络的参数量,提升了网络的运算速度。Inception结构增加了网络的宽度,在深层卷积神经网络中能提高网络的鲁棒性和泛化能力。
残差网络(Residual Network,ResNet)是He[11]在2016年提出的一种深层卷积神经网络结构,用于解决在模型深度加大时出现的网络退化现象,提升网络的深度。ResNet运用残差学习的思想,在数据传输过程中添加一个shortcut连接,使信息可以直接传输到任一层,保护了信息的完整性,能获得表达能力更强的特征,加速网络的训练。
Inception-Resnet-v2模型是谷歌团队在2016年发布的卷积神经网络,是Szegedy在Inception结构的基础上与ResNet相结合提出的一种新的网络结构,使网络的深度进一步增加,并增强了网络的非线性,加速了网络的训练。
(1)
(2)
对输入进行归一化处理
(3)
式中:ε为一个极小值,防止分母为0,k表示当前的维度。这样就将每个batch的输入数据归一化到N(0, 1)的正态分布。但是只对数据进行归一化可能会改变原本输入数据的特性或分布,会影响到当前层所学习到的特征,所以又引入了两个超参数对正态分布进行平移和缩放:
(4)
式中:γ表示缩放,β表示平移,一般初始化γ=1,β=0。
BN层使模型可以使用大的学习率,加快网络的收敛速度;有类似于Dropout和正则化的效果,能防止网络的过拟合问题,提高模型的泛化能力。
原始AlexNet模型的输入尺寸为224×224,为了使AlexNet模型能应用于MINIST数据集,将模型的第一个卷积层的卷积核从11×11改为5×5,步长从4改为1,改变后的模型刚好能实现分辨率为28×28的MINIST数据集的识别任务,得到了99.33%的识别精度。
更改后的AlexNet模型虽然能实现手写数字识别,但是Conv1和Conv2使用的是5×5的大卷积核,相对于28×28分辨率的图像来说尺寸较大,不能提取到足够的细节特征。为了提取更多的细节特征,使用两个3×3的卷积核堆叠,以获取和5×5卷积核相同的感受野,同时能减少模型的参数量。将模型中前两层最大池化的池化核从3×3修改为2×2,缩小特征图尺寸的同时,进一步地减少了模型的参数量。
但是AlexNet的Conv3、Conv4和Conv5这三个卷积层的特征图尺寸都为3×3,特征图尺寸过小,通过卷积层的堆叠并不能提取到足够的特征信息,反而会浪费计算资源。为了获得更加丰富的特征信息,使用改进后的Inception-resnet结构替换原模型中的Conv3和Conv4,使模型能学习到不同尺寸的特征信息,提升模型的特征提取能力,有助于分类器的分类。改进后的Inception-resnet结构如图2所示,在模块中每层卷积层之后添加BN层,将数据规范化处理,增快网络的收敛速度。
图2 添加的Inception-resnet模块Fig.2 Inception-resnet module added
在AlexNet模型中使用了两个隐藏全连接层,由于全连接层的参数量巨大,因此删除一个全连接层,降低模型的参数量。为了使模型能够快速收敛,在每一个卷积层之后,激活函数之前使用BN对数据进行规范化处理,加速网络的训练。改进后模型的具体参数说明如表1所示。
表1 改进模型具体参数
本实验平台为戴尔笔记本,处理器为Intel(R) Core(TM) i5,4 GB内存,主频:1.7 GHz。运行环境为Win10 64操作系统,编译器为Pycharm,编程语言为Python。
MNIST数据集是一个手写体数字识别数据集,包含50 000条训练数据集和10 000条测试数据集。数据集包含250个不同人手写的阿拉伯数字0~9,共10类手写体数字图像。每条数据集由图像和标签组成,每张图像的大小为28×28=784的一维数组,标签类型为One-Hot-Encoding编码格式。部分数据集图像如图3所示。
图3 MNIST数据集部分图像Fig.3 Partial images of the MNIST data set
本文以AlexNet模型为基础融合Inception-ResNet-C结构进行算法的改进,在MNIST数据集上进行验证,设置训练的mini-batch为32,训练周期为30次,每次的训练样本数为1 875。使用Adam优化器对梯度反向传播进行优化,初始学习率设置为0.001,经过2个世代val-Loss不减少将学习率下调为原来的一半,加入Early Stopping机制,当val-loss经过6个世代不再减少时停止网络的训练。图4(a)为AlexNet网络与本文算法在MNIST数据集上的训练损失函数曲线图,可以看出本文算法在训练过程中的收敛速度快于AlexNet网络,说明改进后的算法提高了模型的训练速度。图4(b)为两种算法的测试准确率曲线图,可以看出改进后的算法在测试时的识别率高于AlexNet模型,说明改进后的方法有效地提升了手写数字识别的精度。
图4 模型训练与测试效果对比图Fig.4 Comparison of model training and test results
本文方法是在AlexNet基础上进行的改进,其参数量从2.1×107减少到8×105为原来的1/26,模型训练一个世代的时间从1 400 s减少到280 s,为原来的1/5,大大加快了训练的速度,并且比AlexNet的准确率提高了0.33%。为了验证本文算法的有效性,与其他算法进行比较,结果如表2所示。实验结果表明改进后的算法有效地提高了网络的检测精度。
表2 不同算法的比较
本文提出基于改进AlexNet卷积神经网络的手写体数字识别方法,利用Inception-resnet模块提取多层特征并融合,提高了模型特征的学习能力;通过BN层对输入数据进行批归一化处理,有效地提升了模型的泛化能力;减少模型卷积核的数量,大大减少了网络的参数量,提升了模型的训练速度。利用MNIST手写体数字集进行实验,本文算法的检测精度达到了99.66%,相比于AlexNet模型提升了0.33%,与LeNet5模型相比提升了0.44%,证明了本文算法的有效性。