首页> 中国专利> 用于手写汉字识别的深度卷积神经网络的加速压缩方法

用于手写汉字识别的深度卷积神经网络的加速压缩方法

摘要

本发明公开了用于手写汉字识别的深度卷积神经网络的加速压缩方法,包括步骤:构建并训练出一个用于手写汉字识别的深度卷积神经网络;采用低秩分解的策略,对所述深度卷积神经网络的卷积层进行逐层分解训练以减少计算量;采用网络剪枝的策略,去除所述深度卷积神经网络的卷积层以及全连接层的冗余连接以减少存储量;对所述深度卷积神经网络前向代码进行编写。与现有技术相比,本发明同时采用了对卷积层的低秩分解策略和对整个深度卷积神经网络的剪枝压缩策略,从而大幅度的减少深度卷积神经网络的计算量和存储量;有效的将低秩分解策略和对深度卷积神经网络的剪枝策略融合起来,从而达到整个深度卷积神经网络的有效的加速压缩效果。

著录项

  • 公开/公告号CN106919942A

    专利类型发明专利

  • 公开/公告日2017-07-04

    原文格式PDF

  • 申请/专利权人 华南理工大学;

    申请/专利号CN201710037712.4

  • 申请日2017-01-18

  • 分类号G06K9/20(20060101);G06N3/04(20060101);

  • 代理机构广东广信君达律师事务所;

  • 代理人杨晓松

  • 地址 510640 广东省广州市天河区五山路381号华南理工大学

  • 入库时间 2023-06-19 02:45:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-26

    授权

    授权

  • 2017-07-28

    实质审查的生效 IPC(主分类):G06K9/20 申请日:20170118

    实质审查的生效

  • 2017-07-04

    公开

    公开

说明书

技术领域

本发明涉及模式识别和人工智能技术领域,尤其涉及用于手写汉字识别的深度卷积神经网络的加速压缩方法。

背景技术

汉字源于象形文字,已经有几千年的历史,依旧是世界上使用人数最多的文字,众多的书写者,就意味着其有众多的书写风格,大量的类别以及相似字的存在,导致脱机手写汉字识别一直都是模式识别以及人工智能领域一个较难的问题。目前,脱机手写汉字识别已经被大量的运用在古代文档扫描、手写票据识别、扫描仪以及自然场景的文字识别等众多领域,

现在基于传统的数据预处理,然后进行特征提取,最后在加分类的框架对于脱机手写汉字的识别方法,其性能已经达到瓶颈,然而由于最近深度卷积神经网络的兴起,把脱机手写汉字的识别率提高到了一个新的高度。

然而,要想利用卷积神经网络达到一个更好的结果,人们往往直接把网络做大做深,甚至训练多个网络,然后在进行集成,虽然这样的做法可以略微可以提高网络的识别率,但是其引入的计算量和参数的存储量会急剧增加。这样一来就导致脱机手写汉字识别无法被大规模应用到实际生活中去,尤其是移动设备和嵌入式设置中。

发明内容

为克服现有技术的不足,针对现有技术中基于卷积神经网络的手写脱机汉字识别计算量大以及存储量大的缺点,采用低秩分解和网络剪枝的策略分别降低网络的计算量和存储量,提出用于手写汉字识别的深度卷积神经网络的加速压缩方法。

本发明的技术方案是这样实现的:

用于手写汉字识别的深度卷积神经网络的加速压缩方法,包括步骤

S1:构建并训练出一个用于手写汉字识别的深度卷积神经网络;

S2:采用低秩分解的策略,对所述深度卷积神经网络的卷积层进行逐层分解训练以减少计算量;

S3:采用网络剪枝的策略,去除所述深度卷积神经网络的卷积层以及全连接层的冗余连接以减少存储量;

S4:对所述深度卷积神经网络前向代码进行编写。

进一步地,步骤S1包括步骤

S11:设计所述深度卷积神经网络的结构,设置卷积层、池化层和全连接层参数,选取激活函数;

S12:将训练集的数据作为深度卷积神经网络的输入,采用随机梯度下降法对深度卷积神经网络进行训练,当深度卷积神经网络在训练集上的误差完全收敛时,终止训练,保存深度卷积神经网络各个层的参数。

更进一步地,步骤S11中每个卷积层与激活函数的之间以及第一个全连接层与激活函数之间添加有批归一化层,所述激活函数采用PReLU。

进一步地,步骤S2包括步骤

S21:通过已知低秩分解之前卷积层的计算复杂度和需要加速的倍数,计算各个低秩分解之后第一个卷积层输出特征图的数目;

S22:对整个深度卷积神经网络进行逐层低秩分解训练;

S23:对深度卷积神经网络进行微调。

进一步地,步骤S3包括步骤

S31:对已经低秩分解后的深度卷积神经网络模型进行再训练,去掉网络中的冗余连接;

S32:对深度卷积神经网络的各层的剩余连接的权值进行k-means聚类;

S33:对聚类所得的结果进行微调;

S34:对深度卷积神经网络的层参数进行编码。

进一步地,步骤S4包括步骤

S41:编写卷积层的前向代码;

S42:编写池化层的前向代码;

S43:编写全连接层的前向代码。

本发明的有益效果在于,与现有技术相比,本发明具有如下优点及有益效果:

同时采用了对卷积层的低秩分解策略和对整个深度卷积神经网络的剪枝压缩策略,从而大幅度的减少深度卷积神经网络的计算量和存储量;

有效的将低秩分解策略和对深度卷积神经网络的剪枝策略融合起来,从而达到整个深度卷积神经网络的有效的加速压缩效果。

附图说明

图1是本发明用于手写汉字识别的深度卷积神经网络的加速压缩方法流程图;

图2是本发明用于手写汉字识别的深度卷积神经网络的加速压缩方法细化后的流程图;

图3是本发明中原始卷积的示意图;

图4是本发明中卷积层低秩分解的示意图;

图5是传统的低秩分解策略的示意图;

图6是本发明中改进后低秩分解训练的示意图;

图7是本发明中低秩分解以及网络剪枝的整体示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1和图2,本发明包括以下四个过程:S1:设计并训练一个适用于脱机手写汉字识别的深度卷积神经网络;S2:根据所需加速的倍数,计算出低秩分解后第一个卷积层输出特征图的数目,然后对深度卷积神经网络的卷积层进行逐层分解以减少其计算量;S3:采用深度卷积神经网络剪枝的策略,去除深度卷积神经网络的卷积层以及全连接层的冗余连接以减少存储量;S4:对深度卷积神经网络各层编写网络的前向代码。具体来说,先设计出一个深度卷积神经网络进行训练,得到一个初始的模型,然后根据各个卷积输入输出的大小以及卷积核大小和加速的倍数,从而计算出各个要低秩分解的卷积层分解后中间层特征图的输出,再依据我们提出逐层分解的策略,对深度卷积神经网络进行逐层训练,当对深度卷积神经网络进行低秩分解之后,然后再对深度卷积神经网络各层砍掉其冗余的连接,随后对这层的参数进行聚类,进一步得到较大的压缩倍数,再对深度卷积神经网络进行微调,最后对整个深度卷积神经网络进行前向代码的编写。

以下分别对本发明的主要步骤进行详细说明。

步骤S1:设计和训练出一个用于脱机手写汉字的深度卷积神经网络。

S11:设计深度卷积神经网络模型。

在本发明中,设置的深度卷积神经网络模型结构,其输入为1×96×96,其一共包含五个卷积层,每个卷积层的卷积核大小均为3×3,卷积的步长设为1且在特征图的四周均有加一的补全,这可以使得特征图经过卷积操作后大小不发生变化;其包含四个最大池化层,其中池化核的大小3×3,其步长为2,每经过依次池化之后特征图的宽高均将减半;包含一个全连接层,其输出神经元的个数为1024;最后是一个输出层,输出3755类;其中值得说明的是,在每个卷积层和全连接层后面均接有批归一化层以及采用PReLU作为激活函数。初始网络的整体结构表示为:

Input-96C3-MP3-128C3-MP3-160C3-MP3-256C3-256C3-MP3-384C3-384C3-MP3-1024FC-Output

S2:对设计好的深度卷积神经网络进行训练。

训练时做分类问题,采用随机梯度下降法对深度卷积神经网络进行训练,训练时包括前向传播和反向传播两个步骤,前向网络传播网络的误差,反向传播对各个层的参数进行更新,对深度卷积神经网络的参数不断进行优化。在进行训练时,每训练一万次时,都会用此时模型将测试集的数据全测试一遍,最后取测试时获得最高结果的模型保持下来。

步骤S2:根据所需加速的倍数,计算低秩分解后各个层第一个卷积层输出特征图的数目。

S21:通过已知低秩分解之前卷积层的计算复杂度以及需要加速的倍数,来计算低秩分解之后第一个卷积层输出特征图的数目。

原始的卷积过程如图3所示,可知某卷积层的输入输出特征图为中C和N为输入与输出特征图的数目,H与W为输入特征图的高与宽,H′和W′为输出特征图的高和宽,卷积核为一个四维向量其中卷积核的大小为K×K,由卷积的定义可知,有

其计算复杂度为:O(CNK2H′W′)。

经过低秩分解之后,如图4所示,将输入特征图与卷积变成,输入特征图与卷积后,,其中D为该层输出特征图的数目,有

其计算复杂度为:O(CDKH′W)

得到的进行卷积,又有

其计算复杂度为:O(NDKH′W′),所以低秩分解之后的总计算复杂度为:O(DKH′(NW′+CW))。

所以,如果我们想对某层的加速x倍,D的值应该被设置为:

一般来说,由于深度卷积神经网络第一个卷积层的冗余度是较小的,计算量也不是很大,所以我们从第二个卷积层开始,根据公式(4),计算需要低秩分解层D的值。

S22:对整个网络进行低秩分解训练。

传统的低秩分解策略如图5所示,通过固定原始的第一个卷积层和第二个卷积层的参数,通过欧式损失函数,来学习分解后低秩层的参数,在这种训练方式中,完全不需要使用原始数据中的标签信息,而仅仅是拿原始网络第二层的输出作为监督信号。我们提出的分解策略对原始的策略提出了改进,具体如图6所示,在我们训练策略之中,如图5所示,依旧拿原始数据的标签作为监督信号,对深度卷积神经网络进行训练。

对深度卷积神经网络的第二层按照如图6所示的方式进行训练后,在对第三个卷积的分解也依次按照如图6所示的方式进行训练,此时,我们将各个训练好的第二个卷积层的参数依旧不固定住。按照这种方式进行下去,直到深度卷积神经网络的最后一个卷积层。

S23:逐层低秩分解之后在网络进行微调。

显然,由我们的低秩分解策略可知,由于在低秩分解卷积层时,是从第二个卷积开始进行低秩分解直到最后一个卷积层,第一个卷积层和全连接层以及输出层的参数始终是固定住的,所以当把所有需要低秩分解的层进行低秩分解之后,在用之前保存下来各个层的参数对网络进行初始化,对网络重新进行训练,进一步提高网络的识别率,达到微调的效果。

步骤S3:通过网络剪枝的策略,去除深度卷积神经网络的卷积层以及全连接层的冗余连接以减少存储量。

S31:对于已经低秩分解后的深度卷积神经网络模型进行再训练,去砍掉深度卷积神经网络中的冗余连接。

当深度卷积神经网络进行低秩分解之后,为了逐渐找到深度卷积神经网络中各层的冗余连接,在以往的的深度卷积神经网络剪枝方法中,他们都是对每层设定一个固定的阈值,其基于该层连接权值绝对值的均值,以及权值本身的标准差的大小定义可定义可知,显然,其阈值可以表示为

根据这个阈值,将每一层里面低于这个阈值的权值砍掉。我们认为,这种做法会让网络中的连接一开始就大量被砍去,如果控制得不好这样会使得整个网络的精度度急剧下降,会使网络的准确度很难恢复回来。所以,如图7所示,在我们的策略中,每次迭代中只去除该层中一些权值小于某一动态阈值的连接,而且这个阈值是逐渐缓慢增长的,直到某一网络层中去除的连接数占该层原始连接数的比例达到预设的值时,固定此时的该层的动态阈值,对网络进行继续训练,当训练次数达到最大时,停止训练。

S32:对深度卷积神经网络各层的剩余连接的权值进行k-means聚类。

对每一层剩余连接的权值进行k-means聚类的步骤为:1、线性初始化聚类中心,也就是聚类中心为在输入数据的最小值和最大值的区间上等间隔地采样;2、计算各个样本点到聚类中心的欧式距离;3、根据2得到每个样本点距离最近的聚类中心,并将各样本点分配给与其距离最近的聚类中心;4、将各聚类中心移动到分配给该聚类中心的样本点的重心处;5、重复2~4直至聚类中心不再改变,停止。

S33:对聚类所得的结果进行微调。

在训练过程中对聚类中心进行微调的方法为,在深度卷积神经网络损失值进行反向传播时,将属于同一个聚类中心的连接的梯度值相加得到其和,这样每一个聚类中心都有一个与之相对应的梯度加和值,在将各聚类中心的值减去与其相对应的梯度加和值与此时网络学习率的乘积;将各网络连接的权值更新为该连接所属聚类中心的值,重复上述步骤直到网络训练收敛,停止训练。

S34:对深度卷积神经网络砍掉连接聚类完成的层的参数进行编码。

各网络层连接包含已经去除的连接的权值,已去除的网络连接的权值为0,改进的CSR编码是指在存储非零值的位置时,用相对前一个非零值的位移来代替相对行首的位移,并当相对位移超过2k时,在该位置补0,并视此位置为非零值的位置,其他与标准CSR编码相同,并且当聚类之后,每个非零的位置可以不用存的32位浮点数,可以直接存聚类中心的便签,进一步减少存储量。

步骤S4:编写网络的前向代码。

S41:针对卷积层的前向代码编写。

针对卷积层来说,经过仔细的分析,由于其存在大量的点乘操作,采用直接计算的方法计算对其进行计算速度很慢。在这里,我们采用im2col算法,将计算量较大的卷积计算转为为矩阵相乘的计算,然后采用经过数学上优化过的矩阵相乘库,对其进行优化,这样一来,大幅减少其计算时间,当卷积层的参数足够稀疏之后,就可以采用基础线性代数子程序库的稀疏矩阵与非稀疏矩阵的乘法进行计算;

S42:针对池化层的前向代码编写。

针对池化层来说,由于我们采用的是最大池化层,其计算较为简单,主要的计算为在几个值中找到最大值,由于存在频繁的读数据和写数据操作,故直接采用循环展开的策略;

S43:针对全连接层的前向代码编写。

针对全连接层来说,由于是一个列向量和一个矩阵的相乘,故直接采用基础线性代数子程序库的矩阵和向量的乘法,当全连接层的参数稀疏到一定程度后,就可以采用基础线性代数子程序库中的稀疏矩阵和向量的乘法。

本发明采用脱机汉字手写数据库CASIA-HWDB1.0与CASIA-HWDB1.1作为训练集,off-ICDAR2013作为测试集,初始深度卷积神经网络取得了97.30%,采用低秩分解策略将网络计算量下降四倍之后,在采用网络剪枝计算将存储量下降12倍后,深度卷积神经网络依旧取得了97.09%的结果,仅仅下降了0.21%。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号