英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
构建针对离线手写汉字识别的快速和紧凑的卷积神经网络
摘要
与计算机视觉中的其他问题一样,离线的手写汉字识别(offline handwritten Chinese character recognition, HCCR)问题已经通过使用卷积神经网络(convolutional neural network, CNN)实现了令人印象深刻的成果。但是,需要更大更深的网络才能在该领域提供最先进的结果。这样的网络直观地看起来会产生高计算成本,并且需要存储大量参数,这也使得它们不能灵活的部署到便携式设备上。为了解决这个问题,我们提出一个全局监督低阶展开(Global Supervised Low-rank Expansion, GSLRE)方法和一个自适应丢弃(Adaptive Drop-weight, ADW)技术去解决计算速度和存储容量的问题。我们为HCCR问题设计了一个包含3755个字符类的九层的CNN,并且发明了一个算法,此算法可以将网络的计算代价降低到原来的1/9并且在只损失0.21%精度的情况下,将网络占用的空间压缩到标准模型占用的空间的1/18。在测试中,目标算法识别效果仍然可以超过最佳表现的单一网络并且只需要2.3MB的存储空间。而且,当结合我们之后的有效实现,在单个CPU上识别一个汉字只需要9.7ms。与针对HCCR问题而使用最新技术的CNN模型相比,我们的策略快大约30倍,使用效率高10倍。
1. 概述
离线手写汉字识别已应用于多种应用,如识别历史文献、邮件分类、手写抄写,注释等。离线HCCR引起了许多人的关注,半个多世纪以来的研究人员。在过去的几年里,已经提出了许多传统的离线方法来改善HCCR性能,但进展不大;其中基于修正二次判别函数(modified quadratic discriminant function, MQDF)是一种典型方法。因此,学术界认识到,即使是最好的传统方法也远没有达到人类在这一领域的表现。由于更好的计算硬件和大量的训练数据。近年来,Lecun在20世纪90年代提出的卷积神经网络(CNNs)已被用于字符识别,并且获得了很好的性能。多列深度神经网络(The multicolumn deep neural network,MCDNN)由多个CNN组成,是第一个用于HCCR的CNN。Zhang等人最近报道,通过提取传统的归一化协同方向分解特征图作为CNN的输入,识别的准确率为96.95%。然而,计算成本和存储需求仍然阻碍了CNN在便携式设备中的使用,在便携式设备中,功耗和存储容量是主要挑战。
许多研究人员试图建立快速而紧凑的网络。在这种情况下,低阶扩展希望通过分解卷积层来减少计算成本。网络修剪是压缩CNN最有效的方法,它消除了每一层的冗余连接,然后采用权值量化和哈夫曼编码进一步降低存储容量。虽然在加速和压缩网络方面取得了令人印象深刻的性能,但只有少数研究将这些结合起来去解决速度和存储容量双重挑战。此外,据我们所知,目前还没有研究探讨了这些方法在超过3700类字符的大型手写体汉字识别中的可行性。
在这篇论文中,我们提出了一个方法去构建一个快速并且紧凑的以CNN为基础的HCCR分类器。这个方法如图1所示;它结合了低阶展开和网络修剪的优势
图1框架概述。第一步扩展了卷积层,包括将每个层分解为两个低秩卷积层。第二步修剪卷积层和完全连接层中的冗余连接
低阶扩展和网络修剪。第一部分采用低阶扩展来分解卷积层以达到加速目的,这使得CNN更加浅层而紧凑。第二部分的目的是消除每层中的冗余连接,以进一步减少分配给参数的存储,从而降低整个网络的计算成本。然而,在先前关于网络修剪的研究中,作者使用固定阈值来修剪每层的连接。相反,我们提出了一种自适应丢弃(Adaptive Drop-weight ,ADW)技术,可以动态增加阈值并逐步修剪每层的参数。这里,在以前的工作中出现了确定每层修剪比的问题。特别是对某些深层网络而言,在精确度下降和压缩之间的折衷的背景下,可能需要多次尝试来确定每层的合适阈值。因此,为了更好地解决这个问题,我们提出了连接冗余分析(Connection Redundancy Analysis ,CRA),它可以分析每层连接中的冗余,并有助于最大限度地提高每层的修剪率,同时具有可容忍的精度降低。
在涉及离线HCCR的实验中,我们提出的框架可以将网络的计算代价降低到原来的1/9并且在只损失0.21%精度的情况下,将网络占用的空间压缩到标准模型占用的空间的1/18。网络只需要2.3MB的存储空间,在单个CPU上识别一个字符只需9.7毫秒。而且,为了进一步提升性能,我们可以增加网络的宽度和深度,或使用新的CNN模型,如GoogLeNet或Deep ResNet。这可能有助于最终获得离线HCCR的新基准,但这不是本文关注的主要内容。
本文的其余部分安排如下:第2节回顾相关工作,第3节详细阐述我们所使用的CNN基线网络的体系结构。第4节详细描述全局监督低阶扩展技术。第5节介绍自适应丢弃技术。第6节详细介绍了连接冗余分析方法。第7节介绍实验结果,其中包括运行时间,参数存储和准确性。研究结论、工作总结和展望在第8节介绍。
2. 相关工作
2.1 离线HCCR
由于CNN的成功,基于MQDF的离线方法HCCR已经达到了极限。由几个CNN组成的多列深神经网络(MCDNN),是首个用于离线HCCR的CNN。在由ICDAR于2013年组织的离线HCCR竞赛中,由富士通研发中心团队开发的方法获得了94.77%的准确率。2014年,通过对四个交替训练的松弛卷积神经网络(alternately trained relaxation convolutional neural networks,ATR-CNN),他们将准确率提高到96.06%。Zhong等人随后提出将传统的Gabor特征与离线汉字字符图像结合作为网络输入,并使用被称为HCCR-Gabor-GoogLeNet的简化版GoogLeNet。他们称识别的准确率为96.35%,集合十个模型的识别率是96.74%,从而成为首个超越人类表现的神经网络。Zhou等人提出的框架基于HCCRGoogLeNet;他们使用了Kronecker完全连接(KFC)层在四个初始组之后替换原来的层,然后连接两个完全连接层,最终获得96.63%的准确度。张等人最近结合传统归一化协作方向分解特征映射和CNNs获得了96.95%和97.12%的准确度。
2.2 加速和压缩
大多数CNN结构,如VGGNet,AlexNet ,CaffeNet 和GoogLeNet ,具有相似的属性:例如,卷积层的计算占了大部分计算成本,完全连接层包含最多的网络参数。尽管有不同的完善途径,现有的方法主要集中在加速卷积层和压缩完全连接层的参数两个方法上。
为了降低卷积层的计算成本,Cong和Xiao使用Strassen算法进行快速矩阵乘法可以降低卷积层的算术复杂度而不会降低精度。 Mathieu等通过快速傅里叶变换(FFT)将卷积计算转换为频域中的逐点积,以实现快速计算。Lavin and Gray等人使用Winograd的最小过滤算法降低卷积层的计算。Wu等人最近提出量化卷积神经网络,量化权重并将计算转换为卷积层中的内积。通过使用im2col算法和BLAS(基本线性代数子程序)库,将卷积层的计算转换为矩阵乘法。这些工具对于CNN的更快CPU实现非常有用,但不能与之前提出的方法一起使用。在本文中,我们使用基于低阶扩展的方法,该方法仍然可以通过使用BLAS库来组合矩阵乘法。Jaderberg等人利用跨通道或滤波器冗余来为滤波器制定低阶基础,并提出用于优化的滤波器和数据重建技术。Zhang等人通过考虑非线性情况和多层非对称重建来减轻重建误差,从而改进了他们的工作。
对于完全连接层,Chen等人提出的HashedNets使用散列函数将权重分组为散列桶,其中相同散列桶中的连接共享参数值。 Vanhoucke等使用8位定点输入来代替32位浮点。Courbariaux和Bengio提出了将权重和激活约束为 1或-1的二值化神经网络,并用一位异或运算取代了大多数浮点乘法。很明显,这可以降低计算成本和参数存储,但另一方面,也降低了网络性能。Lin等人使用基于SVD的低阶扩展来压缩完全连接层,然后使用全局错误重建来微调整个网络。但是,这两种方法都具有低压缩比,或者网络性能严重恶化。基于网络修剪的方法可以通过在不影响网络性能的情况下学习重要连接来显着减少参数存储。Han等人提出了深度压缩,通过组合网络修剪,加权量化和霍夫曼编码来进一步减少存储。Guo等人提出动态网络剪切,可以根据Han的工作动态修剪和拼接连接。
3. 卷积神经网络架构
如图2所示,我们设计了一个9层(仅考虑卷积层和完全连接层)网络,由7个卷积层和2个完全连接层组成,用于解决离线HCCR。 前三个卷积层中的每一个之后是一个最大池化层。在此之后,每两个循环层后面跟着一个最大池化层。最后一个大池化层后面是一个完全连接层,它包含1024个神经元。最后一个完全连接的层包含3755个神经元,用于执行最终分类。整体架构可表示为Input-96C3-MP3-128C3-MP3-160C3-MP3-256C3-256C3-MP3-384C3-384C3-MP3-1024FC-Output
图2 卷积神经网络结构
我们发现在一定范围内,增加输入字符图像的大小可以提高分类性能,但是会产生更高的计算成本。因此,我们通过将输入字符大小调整为96times;96来解决这种增加大小和计算成本的影响。在我们的基线网络中,所有卷积核都是3times;3,并添加一个像素来保留大小。最后,最大池化操作在3times;3窗口上进行,步幅为2。
在我们提出的网络中,参数整流线性单元(the parametric rectified linear unit, PReLU)与整流线性单元(rectified linear unit, ReLU)稍有不同,其用于使网络易于收敛并最大限度地降低过度拟合的风险。Ioffe和Szegedy提出了批量归一化(BN),它可以归一化非线性输入,并通过减少内部协变量偏移来稳定分布。它不仅可以自由地使用更高的学习速率来加速网络融合,还可以以可忽略的计算成本和存储来缓解网络性能。而且,对于一些深度网络,BN可以有效地解决梯度消失的问题。因此,所有卷积层和第一个完全连接层都配备有BN层,并且PReLU被添加到每个BN层。由于完全连接层冗余较高,我们在两个完全连接的层之间添加了压降层以进行正则化,其中比率设置为0.5。
我们提出的模型与离线HCCR的其他可用模型之间的主要区别在于前者涉及网络中的BN和PReLU。尽管使用的CNN模型非常简单,但它为HCCR产生了最好的性能。我们将此基准网络称为HCCR-CNN9Layer。
4. 全局监督低阶扩展
4.1 分解方案
对于图3(a)描述的原始卷积神经网络,输入的特征图是一个三维向量其中C是特征面的数量,H和W是输入图像的高和宽。对应地输出也是一个三维向量,其中N是输出的特征面数量,Hrsquo;和Wrsquo;是输入图像的高和宽。对应地,核矩阵是一个四维向量,其中核的大小是,输出特征面可以安装如下的方式计算:
我们可以知道,计算的复杂度大约是。
通过执行图3(b)所示的低阶扩展,输入特征映射最初与方形滤波器卷积,将被转换成与两个低秩滤波器卷积的输入特征映射。第一个是与垂直内核卷积的输入,其中D是分解层的输出特征数。第一个输出是
其中第一个卷积的计算成本是。然后输出与水平核进行对比,并通过计算最终输出
相应的计算成本为。如果将两个低阶展开一同考虑,则计算成本为。
因此,如果我们想把卷积层加速倍,则D可以设置为
4.2 训练方案
在过去的工作中,每层的输出局部输出监督低阶层训练。该方法主要设计为最小化局部输出和低阶近似输出之间的重建误差,如图4(a)所示。我们将此策略称为局部监督低级扩展(Local Supervised Low-rank Expansion,LSLRE)。虽然使用局部的输出来指导低阶扩展是一种合理而直接的策略,但它与全局分类的性能没有直接关系。
图4 (a)局部输出监督低阶层训练。(b)真正的标签引导的全局损失函数监督低阶层的训练
因此,我们提出全局监督低级别扩展(Global Supervised Low-rank Expansion, GSLRE),它使用标签作为监督数据。训练方案如图4(b)所示。训练过程以逐层方式进行。对于特定的层,原始的卷积层,比如第二层Conv2被分解为两个较小的层,即Conv2_de1和Conv2_de2(见图4(b))。 Conv2_de1和Conv2_de2的参数是使用SGD算法通过反向传播,基于整个网络的损耗函数确定的。值得一提的是,在训练特定卷积层期间,其他卷积层的参数保持固定。由于我们的网络配备了BN层,即使网络加深,也可以使梯度平滑地传递到较低层。
由于第一个卷积层难以近似,并且在从原始图像中提取特征中起着重要作用,我们在第二个卷积层开始我们的低阶训练方案。一旦第二层被分解并充分训练,我们就开始分解第三层。当训练第三卷积层时,根据SGD-BP算法学习和更新第二和第三层的参数。以这种方式,所有卷积层被分解和训练。最后,由于第一卷积层和完全连接层的参数在上述低等级扩展训练过程中始终是固定的,因此我们需要对整个网络进行微调以进一步提高整体性能。
5. 自适应丢弃
我们的修剪方案如图5所示,它由两部分组成。第一种是称为自
图5 修剪策略
适应丢弃(ADW)的新技术,它可以通过动态增加修剪阈值来逐步修剪每层的加权连接。当修剪比达由CRA确定的值时,我们记住此时的阈值。
lt;
全文共11284字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[361],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。