首页> 中国专利> 基于FPGA+ARM多层卷积神经网络的手写体字符识别方法

基于FPGA+ARM多层卷积神经网络的手写体字符识别方法

摘要

本发明属于数字图像处理、模式识别技术领域,具体为一种基于FPGA+ARM多层卷积神经网络的手写体字符识别方法。本发明实现的硬件平台是Xilinx ZYNQ‑7030可编程片上SoC,硬件平台内置FPGA处理器和ARM Cortex A9。本发明首先在ARM端对输入的待识别手写体字符图像进行预处理,然后将结果图像传输到FPGA端,利用多层卷积神经网络提取图像特征,特征向量传输至ARM端完成手写体字符的识别。本发明充分利用了FPGA对大量简单重复计算的硬件并行处理能力和ARM的灵活可扩展优势,在保证算法模型性能的前提下,大幅降低了系统功耗。本发明的处理效率功耗比是主流服务器+GPU实现方案的10倍以上,有效解决了主流服务器+GPU方案功耗过大的问题。

著录项

  • 公开/公告号CN106250939A

    专利类型发明专利

  • 公开/公告日2016-12-21

    原文格式PDF

  • 申请/专利权人 复旦大学;

    申请/专利号CN201610619786.4

  • 发明设计人 周光朕;王展雄;冯瑞;

    申请日2016-07-30

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

  • 代理机构31200 上海正旦专利代理有限公司;

  • 代理人陆飞;陆尤

  • 地址 200433 上海市杨浦区邯郸路220号

  • 入库时间 2023-06-19 01:11:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-24

    授权

    授权

  • 2017-11-14

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

    实质审查的生效

  • 2016-12-21

    公开

    公开

说明书

技术领域

本发明属于数字图像处理、模式识别技术领域,具体涉及一种在FPGA+ARM硬件平台上实现基于多层卷积神经网络的手写体字符识别方法。

背景技术

手写体字符识别就是通过计算机利用数字图像处理技术实现图像中手写体字符的自动识别。随着实际应用需求的不断增长、计算机技术的快速发展,手写体字符识别在办公自动化、文献检索、邮件自动分拣、金融、财会等领域都有着重要的实际应用价值。虽然字符本身模式较为简单,然而一些字符的字形写法相近,不同人手写同一字符的形状差异较大,且存在不规范的书写情况,为字符识别带来干扰,大幅增加了计算机实现手写体字符识别的复杂性。

对于手写体字符识别问题,传统处理方法,包括基于字符结构特征和基于统计特征的方法在内,都侧重于设计者通过分析数据特点,人为设计待识别字符的特征,然后通过模式匹配方法进行手写体字符的识别。尽管在样本数据足够多的前提下,一些传统方法可以在设计特征性质良好时取得较好的识别性能,然而此类方法存在严重依赖特征设计者经验的特点,因此大规模应用推广存在局限性。

近年来,在模式识别、机器学习等人工智能相关领域中,深度学习技术依靠其在算法性能方面的突出表现被业内广泛关注,成为人工智能领域新一轮的研究热点。深度学习技术中被广泛应用的算法模型是卷积神经网络(Convolutional Neural Network,CNN),在计算机视觉、语音识别等方面表现突出。典型的CNN模型由两部分组成:特征提取器和分类器。与传统的人为设计特征不同,CNN特征提取器通过样本数据自主学习特征,生成输入数据的特征向量,具有较好的鲁棒性。该特征向量作为分类器的输入数据进行分类,最终得到输入数据的识别结果。因此对于手写体字符识别这一类问题,多层卷积神经网络是一种具备大规模推广应用能力的方法。

经测算,CNN中卷积层和池化层的计算占总计算量的90%以上,因此提高卷积层和池化层计算速度是提升整个算法模型效率的关键所在,业内通常采用服务器+高性能GPU的方法以提升计算效率,并取得了令人满意的加速效果。然而,GPU在带来高性能计算的同时,也存在功耗大的缺点,对运行环境和运行时间都有特定的要求,为其实际应用带来局限性。

与GPU类似,FPGA具有对大量简单重复计算的并行处理能力,此外,FPGA还具备极低功耗的高效能计算特性,和GPU相比可适用于更多的实际应用场合。

目前利用FPGA加速CNN计算主要有三种方法:

(1)利用软核CPU实现控制部分,配合FPGA实现算法加速;

(2)利用硬核SoC内嵌的硬核ARM Cortex A9 CPU实现控制部分,配合FPGA实现算法加速;

(3)利用云端服务器配合FPGA实现算法加速。

三种方法各有利弊,根据不同的应用场合,可以选择不同的加速方案。

发明内容

本发明的目的在于提出一种计算效率高、能耗低的基于FPGA+ARM多层卷积神经网络的手写体字符识别方法。

本发明提出的基于FPGA+ARM多层卷积神经网络的手写体字符识别方法,具体实现的硬件平台是Xilinx ZYNQ-7030可编程片上SoC,硬件平台内置FPGA处理器和ARM CortexA9。充分利用FPGA对大量简单重复计算的硬件并行处理能力和ARM的灵活可扩展优势,将多层卷积神经网络计算分为两个部分,其中FPGA端实现占据90%以上计算量的卷积层和池化层计算,ARM端实现计算量较小的输入层和全连接层。该方法可实现超过1000张/秒(图像像素大小28×28)的手写体字符识别速度,能满足实际应用需求,处理效率功耗比是主流服务器+GPU方案的10倍以上。

本发明提出的手写体字符识别方法,基于一个6层卷积神经网络模型,该卷积神经网络模型包括:1个输入层,2个卷积层,2个池化层,1个全连接层。卷积核大小为5×5,卷积核滑动步长为1。池化层采用均值法,其滑动窗口大小为2×2,滑动步长为2。待识别手写体字符图像像素大小为28×28。经测算,卷积层和池化层的计算量为38400次浮点数运算,输入层和全连接层的计算量为970次浮点数运算,卷积层与池化层计算占所有计算量的97%以上,是简单重复浮点数运算,因此适于在FPGA端实现,利用FPGA的硬件并行处理能力完成卷积层和池化层的大量简单重复计算。输入层和全连接层需要根据不同的输入图像及应用进行调整优化,计算量相对较小,适于在ARM端实现。在保证算法模型性能的前提下,大幅降低系统功耗。

基于上述6层卷积神经网络模型,本发明提出的手写体字符识别方法,具体步骤为:

一、模型参数处理与加载

(1)离线训练所使用的多层卷积神经网络模型;

(2)算法模型离线训练完毕后,将卷积层的参数(包括卷积核与偏置量)取负,并保存在ARM端;

(3)系统运行后,首先加载算法模型参数,并通过APB总线传输并缓存至FPGA端。

二、待识别图像预处理

(1)选择待识别的手写字符体图像;

(2)对输入图像进行归一化处理,使其满足模型的计算需要;

(3)ARM端将归一化结果通过APB总线传输到FPGA端,经FIFO缓存后,存放到Block RAM(块随机存储器)中。

三、卷积和池化计算

在FPGA端对输入图像数据进行卷积层和池化层计算,算法模型设定了2个卷积层和2个池化层,具体步骤为:

(1)第1个卷积层与池化层计算

对图像数据与网络模型中第1个卷积层的卷积核进行卷积计算,将结果矩阵的各元素加上网络模型第1层的偏置参数,利用网络模型中的激活函数Sigmoid激活。Sigmoid函数表达式为:;

例如,输入图像大小为28×28像素,第1个卷积层采用1个卷积核,大小为5×5的矩阵。卷积时,滑动窗尺度与卷积核大小相同,横向与纵向滑动步长均为1,卷积计算结果矩阵的行列均为28-5+1=24。结果矩阵各元素加上偏置参数,再经过Sigmoid函数进行激活后,结果矩阵大小不变。

然后对第1个卷积层计算结果进行池化计算,采用平均值池化方法,滑动窗尺度为2×2,步长为2,将滑动窗口中的4个数值相加后取均值。例如,第1个卷积层结果矩阵大小为24×24,由于滑动窗口不存在重叠情况,所以池化计算结果矩阵大小为12×12,将其存入Block RAM;

(2)第2个卷积层与池化层计算

将第1个池化层计算结果矩阵作为第2个卷积层计算的输入数据,参照第(1)步的实现过程,进行第2个卷积层和第2个池化层计算。第2个卷积层设定3个卷积核,大小均为5×5。第1个池化层计算结果矩阵大小为12×12,第2个卷积层计算结果是3个8×8的矩阵,第2池化层计算结果是3个4×4的矩阵。将第2个池化层结果存入Block RAM。

四、分类识别计算

(1)特征向量从FPGA端传回ARM端

在FPGA端,将两层卷积计算与池化计算的结果,即输入图像的特征向量传回ARM端。具体步骤为:将Block RAM中存储的3个4×4的结果矩阵,经过FIFO缓存后,通过APB总线传输回ARM端;

(2)Softmax计算获得识别结果

第(1)步返回的特征向量与网络模型中的Softmax相关数据进行计算并得出结果。具体步骤为:用Softmax权值参数矩阵乘以特征向量,加上Softmax偏置参数,并通过公式1的Sigmoid函数计算,在结果中取最大值对应的索引作为结果输出。其中,Softmax权值矩阵大小为10×48,10表示待识别字符的类别数量,48表示每个类别的权值数量。特征向量总计3×4×4=48个浮点数。Softmax偏置参数共10个,每种类别1个参数。在Sigmoid函数计算后,总计可得10个浮点数,按照从0至9的顺序,给出10个数中最大的数所对应的索引作为最终的结果输出;

(3)往复循环,实现多个手写体字符图像的识别。

本发明在相同的网络模型规模和相同的手写体字符图像的条件下,分别对基于FPGA+ARM和主流服务器+GPU的两种实现方式进行效率和功耗的对比:

1、基于FPGA+ARM的方法(本发明方法):ARM端功耗约0.24瓦,FPGA端功耗27.6瓦,功耗总计为27.84瓦。运算效率约1177.8张/秒(图像像素大小28×28),处理效能比为42.31张/(瓦秒);

2、基于主流服务器+GPU的方法:服务器功耗约为600瓦,GPU功耗235瓦(NVIDIA teslaK20x GPU),功耗总计为835瓦,运算效率约3000张/秒(图像像素大小28×28),处理效能比为3.59张/(瓦秒)。

本发明方法的效率功耗比是服务器+GPU方法的10倍以上,具有明显的高效能计算优势。

本发明的主要特点是:

(1)提出了一种基于FPGA+ARM多层卷积神经网络的手写体字符识别方法;

(2)充分利用FPGA的硬件高效并行计算能力和低功耗特性,实现了较高的计算效率能耗比;

(3)本发明在中低端FPGA+ARM硬件平台上实现了多层卷积神经网络算法模型,具有较大的实际应用价值。

附图说明

图1 基于FPGA+ARM多层神经网络的手写体字符识别流程图。

图2 矩阵转置计算。

图3 FPGA功耗情况。

图4 多层卷积神经网络结构图。

图5 卷积计算示意图。

图6 池化计算示意图。

图7 MNIST数据库(部分)。

图8 手写体识别的实测结果。

具体实施方式

以下结合附图说明本发明基于FPGA+ARM多层卷积神经网络的手写体字符识别方法的具体实施。

本发明方法的计算流程如附图1所示。具体步骤为:

1、首先离线训练本发明所使用的多层卷积神经网络模型,设计采用一个输入层,两个卷积层,两个池化层和一个全连接层。第1个卷积层有1个大小为5×5的卷积核,第2个卷积层7有3个大小为5×5的卷积核,两个池化层的滑动窗口大小为2×2,滑动步长为2。模型训练完毕后,将卷积层中的参数(包括卷积核与偏置量)全部取负,保存在ARM端。

2、系统开始运行后,ARM端加载保存着的网络模型参数,将网络模型参数先通过APB总线传输到FPGA端。

3、用户根据系统提示,选择如附图7所示的MNIST数据库中一副待识别手写体图像输入系统。ARM端将对输入图像进行预处理,通过APB总线将结果图像传入FPGA端。

4、根据附图4所示的计算流程,参照附图5和附图6的卷积计算和池化计算的示意,FPGA端对输入图像进行第1个卷积层计算和第1个池化层计算,卷积计算中需要使用的Sigmoid函数表达式如式(1)所示。

5、参考第4步继续对第1个池化层结果进行第2个卷积层计算和第2个池化层计算,结果存入Block RAM。

6、将第2个池化层结果的3个4×4大小的矩阵,通过APB总线传输回ARM端。

7、将FPGA端传回的结果与网络模型全连接层中的Softmax参数进行计算,结果再加上Softmax偏置量,最后通过Sigmoid函数计算,得出最后10个数。按照0至9的顺序,系统将得到10个数中最大的数对应的索引作为输入图片的分类结果输出给用户。

8、系统计算完毕将结果输出给用户后,用户根据提示是否继续进行识别,如不继续则系统退出。

上述方法处理附图7所示MNIST数据库中第1张数字图片“7”的实测分类结果如附图8所示。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号