2019年第3期
深■圳 职业技术学曉学扌艮
No  3~2019
D01:10.13899/jki.szptxb.2019.03.001
BP 神经网络字符识别系统Matlab 建模及硬件实现*
*收稿日期:2018-09-03
*项目来源:广东省优秀青年教师深圳职业技术学院配套资助(900705110201)
作者简介:余菲(1982-),男,黑龙江人,副教授/高级技师,研究领域:集成电路设计、电子系统设计、LED 半导体照明材料、液晶显示、
THz 成像技术等.
*通讯作者:宋荣(1969-),男,四川人,副教授,研究领域:电极箔自动测试系统、企业ERP 无缝对接、智能化高压程控电源、比容测
试、折弯测试、多关节机器人自动作业系统等.
余菲,赵杰,王静霞,温国忠,宋荣*
(深圳职业技术学院电子与通信工程学院,广东深圳518055)
摘要:为了设计基于BP 神经网络的字符识别系统模型并训练其参数,能够以较低硬件代价工程实现该 系统,作者利用Matlab 建立了一个基于BP 神经网络的字符识别系统模型,对5000个样本进行了标记,
并利 用这些样本对模型进行了训练和验证,识别率达到了 85.20%.同时,利用FPGA 及Verilog 硬件描述语言设计
了该系统的神经元硬件电路,效果与Matlab 的仿真数据一致.利用Altera 公司的FPGA 芯片实际综合下载了 神经元及相关系统,能够实现对字符图像文件数据的计算.
关键词:人工智能;神经网络;神经元;FPGA;图像识别
中图分类号:TN791 文献标志码:A  文章编号:1672-0318 (2019) 03-0003-05
随着电子信息技术的发展,尤其是高性能处理 器、互联网、云计算等技术的高速发展,基于神经
网络的人工智能系统的应用价值越来越大Ml.目
前,人工智能的核心应用领域主要集中在图像识
别、语音识别、汽车及其它设备的自主判断和自主 控制等.其中,图像识别仍然是人工智能应用的最
重要领域,而BP 神经网络也是对字符进行人工智
能识别的最有效手段之一两.基于BP 神经网络 的字符人工智能识别和其他的人工智能应用一
样,受制于处理器的运算速度.因此如何能够有
效地提高BP 神经网络的运算速度就变成了非常 有价值的研究领域•本文提出采用Matlab 进行系 统建模仿真,并利用FPGA 技术实现BP 神经网
络神经元的办法,通过硬件电路进行计算来有效 提升系统的效率,让低电路代价的字符识在工程
上变得可能.
1字符识别系统的Matlab 建模
1.1字符识别系统的设计方法
人工智能系统与传统的电子系统设计方法最
大的不同是人工智能系统设计过程需要一个''学习” 的过程,这种学习可以是“有导”式的,或者是自
主的“无导”式[1].首先建立一个神经网络的结构,
通常是BP 神经网络或者CNN  (卷积神经网络)等,
然后通过训练(学习),让神经网络逐步开始能够
对学习过的样本具有判断和记忆,再对神经网络的
判定效果进行评价,如果达不到设计要求则需要重
新从建立神经网络结构开始重复,基本流程如图1 所示.
通常,图像识别的神经网络学习过程是“有导”
式的.“有导”式的学习需要首先准备“金样本”
数据集,所谓“金样本”就是经过人工标记的准确
图1神经网络的设计流程
xb.szpt.edu  - 3
-
无误的系统输入输出案例.准备好了样本数据集后,将该数据集分为训练集和测试集2类,
通常分类的原则是随机选取.接下来利用Matlab人工智能工具箱、Tensor Flow等平台系统,对该人工智
能的神经网络结构进行建模编程,利用训练集样本对神经网络进行训练,使得神经网络学习到模型参数,最后再通过测试样本的测试,达到精度要求后证明该神经网络的模型是有效的③5切目前很多研究仅仅停留在设计完成神经网络结构并完成网络参数的训练,
但是训练好的神经网络还需要在硬件上实现,是否能够在工程允许的硬件代价下物理上实现该神经网络模型也是一个很实际的问题.
1.2EP神经网络的样本准备
首先收集用于识别的字符数据集,其中包含0~9这10个数字手写体的图片文件,此类数据集在网络上可以进行下载,也可以自己准备,然后 对该图片进行标记,使之成为“金样本”•在本文中,每个数字准备了500张不同的手写文件,
总计5000张图片作为数据集.接下来对图片进行归一化处理,统一归一化为28
*28的像素,样例 如图2所示.
通过Matlab读入全部图片的信息,使用Matlab编程把所有图片的样本标记结果存储在一个数据矩阵内,部分矩阵内容如图3所示.
由于图片是灰度数据,与CNN不同,需要转换为二进制矢量数据才能进行BP神经网络的数据输入,本文按照如图4所示方法进行二进制矢量转换.
首先设定将得到的输入图像通过最大类间方差法得到一个合适的灰度阈值,通过此阈值将图片转换为70
*50的2进制流图.特征提取规则为:取一个大小为10
*10像素的框,选取70
*50
的图像,总共可有7*5种不同的排列组合,将选取的10
*10图像中的黑像素所占百分比作为特征数,便可得一个7审5的特征矩阵.
仁3BP神经网络的训练与测试
将上述特征提取后的数据分为2部分,第一部分作为我们的输入数据,第二部分作为测试数据.用输入数据训练网络,网络训练完成后,用测试数据验证网络准确率.利用Matlab的人工智能神经网络工具箱设置本文所述的字符识别系统,其BP神经网络结构如图5所示.
图2归一化的图片文件样例
123456789101112一010*********二000100000000三000000000000四100001010000五000000001000六000000000000七000000000100八000000000000九000000000010十000010100000图3样本标记结果记录矩阵的部分内容
图4二进制矢量转化方法示意图
图5字符识别系统的BP神经网络结构
第一层Hidden Layer为此数字识别网络的隐含层,第二层Output Layer为此数字识别网络的输出层,输出层神经元个数由输出目标数据所决定,此
-4-xb.szpt.edu深圳职业技术学院学报2019,18
(3)
处为10.隐含层的神经元数目设置为25,当神经 元数目设置过少时识别效果会很差,当神经元数
目设置过多时又太过占用硬件资源,经测试本文
设定为25个比较合适,并且隐含层和输出层的传
输函数都选择“tansig ”.训练函数选择为"trainlni ”
(用于更新权值和偏置),适应性学习函数为
“leamgdm ”(使得权值和偏置区有一定的动量),
误差函数为“mse ” .其他训练参数设定如图6 所示.
申 Network: networld
-
□ X
图6 BP 神经网络训练参数设定
期 Train  Network
2 Matlab 建模效果评估
经过训练,本文所述的模型训练过程的
Validation  checks 最终是6,即训练结束就是因为
连续6次迭代都没能提高准确率.总共迭代次数 为308,最终结束时以SSE  (残差平方和)方式
计算误差,其误差结果为718,迭代的表现如图7 所示.
图7中分别展示了随迭代次数的平方误差的
变化情况,其中横坐标为Epoch  (时期),一个
Epoch 表示所有训练样本的一个正向传递和一个
反向传递的过程,纵坐标为SSE (残差平方和).虽
然Train 曲线随着Epoch 下降,但Test 曲线在第
16个Epoch 时SSE 却开始上升.因此,最终神
经网络的参数在16个Epoch  (在图7中已经用圆
圈标记)得到最好的效果.
以 Scaled  Conjugate  Gradient  (量化共轨梯度 法)为训练函数结束时的梯度值为161,然后用
之前已准备好的测试集来对已训练好的神经网络
进行仿真,其准确率如图8所示,图中横坐标为
目标值,纵坐标为网络的输出,图8就是做了个
回归,完美时四幅曲线都应该在对角线上,最终
的综合精度为85.20%.
神经网络容易过拟合,即仅对参与训练的训练
数据反应良好.为防止过拟合,除一开始就划分了
训练集合测试集外,MATLAB 不会把给它的训练集
数据都同时用于训练、验证、测试,会将其再次划
分成3个集,training  (训练集),validation  (验证
集),test  (测试集).训练时只有training (训练集)
参加训练,validation  (验证集),test  (测试集)不 参加训练,只用于最终检验.为了防止过拟合发生, 需要设定适当的validation 值,当validation 的误差
连续上升到设置的次数时就停止训练.
(a)S E )
」o
」」
pale^bs
u e o w
Best  Validation  Performance  is  0.01794 at  epoch  16
10° F
2 4 6 8 10 12 14 16 18 20 22
22 Epochs
图7方差随着迭代变化曲线
Target Validation: R-0.89482
02
0.4
06
0.8
Target
图8测试集合的准确率曲线
xb.szpt.edu  深圳职业技术学院学报 2019, 18 (3) - 5正则化损伤识别matlab
-
■1119
3基于FPGA 的神经元硬件实现
根据前文所述,Matlab 可以有效地完成神经
网络的建模及训练与评测,但仍需要最终实现在
硬件电路上.虽然,可以利用编写软件的方法在
高性能DSP 、GPU 或者TPU  (由谷歌公司设计的
专用人工智能处理器)上实现本文设计的神经网
络,但是成本和硬件代价都过高,本文提出了有 针对性的方案,可利用FPGA 实现神经网络的神
经元[4,刀,大幅降低了系统的硬件代价.
根据BP 神经网络的基本结构,需要用FPGA  实现的神经元结构如图9所示.
从上面训练好的神经网络中抽取出神经网
络相关参数后,可知数据为有符号浮点型数据,
且有效位数到小数点后5位.在FPGA 中需要合
理地表示数据,由于FPGA 中默认情况下不支持
对浮点数进行操作的,这里采用的解决办法是定
标.也就是将要运算的浮点数扩大倍数,然后截
取整数部分,用这个数代替原本的浮点数,完成 运算后,得到的结果再缩小相应的倍数.
在这里我们就要用到定标的方法,由于系统
的输入范围是0~1的浮点数,例如0.34302,将
小数转变为整数,并且事先进行约定统一将小数 放大10000倍,剩余小数部分四舍五入,也即将
0.34302 用 3430 表示.利用 Modelsim-Altera  仿真
平台上搭建系统,对输入输出及权值变换进行仿 真验证,图10为其中一次的仿真实例.
根据MATLAB 上训练出的神经网络知,
FPGA 上实现的激励函数有2个:
1) 隐含层的激励函数为tansig 函数;2) 输出层的激励函数为pureline 函数.
输入层
■HT7
-S.
输 岀
❻变
隐含层
图9 EP 神经网络神经元结构输岀层
si 0J
s20
s3-231S4
-215*sS
0•
560
Jf 571963■S3
-
1974
a
s9
slO
0*Sil
a *
sl2"5
sl3
S140£
Jf $15
0*
sl&0
sl7-SOO
*
sia
_________-340
-66
图10浮点数变换整数实例
其中隐含层为了实现功能选择了非线性的激
励函数,输出层则选择了简单的线性激励函数作为
输出.要在FPGA 上实现函数求解有多种方式可以
进行选择,这里选择查表法.此方法最为简单,通
用性强,但缺点是随着精度的增加对内存的消耗呈
指数性增长.若要保证查表法的精确,计算就要用
掉大部分的存储单元,显然不满足实际资源的需求,
所以常常降低输入的精度,但随之带来的会是误差
的增大,需要在资源的消耗和误差的大小间做出取
舍.最终,本文利用Verilog 硬件描述语言实现了神 经网络的神经元结构,并搭建了整个字符识别系统,
仿真效果如图11所示.由图11可见,利用FPGA
实现的硬件电路效果与Matlab 的仿真数据一致•本 文为了验证电路的正确性,利用Altera 公司的FPGA
芯片实际综合下载了神经元及相关系统,能够实现
对字符图像文件数据的计算.
图11数字“6”的图片识别效果仿真
-6 - xb.szpt.edu  深圳职业技术学院学报 2019» 18
(3)
4结论
本文利用Matlab建立了一种可以用于图像数字图像识别的神经网络,并为1到9每个数字准备了500张不同的手写文件,总计5000张图片作为数据集,对图片进行归一化处理,统一归一化为28
*28的像素,并完成了神经网络的学习和训练.同时,利用本文提出的神将网络模型,利用FPGA数字电路设计技术,从硬件上实现了该神经网络的神经元电路.经过Matlab工具的仿真验证,本文提出的BP神经网络结构和训练方法可以有效地实现字符图像文件的识别,有效率达到85.20%.通过FPGA实现的该系统神经元硬件电路,通过Modelsim仿真,结果与Matlab—致.通过实际综合下载,电路运算功能正确.参考文献:
[1]张军阳,王慧丽,郭阳,等.深度学习相关研究综述
[J].计算机应用研究,2018(07):1-12.
[2]吴忠,朱国龙,黄葛峰,等.基于图像识别技术的手
写数字识别方法[J].计算机技术与发展,2011,21(12):
48-51.
[3]唐忠,谢涛.Matlab神经网络工具NNTool的应用与
仿真[J].计算机与现代化,2012(12):44-47,54.
[4]林祥金,张志利,朱智.人工神经网络FPGA实现研
究进展与发展趋势[JJ.控制工程,2007(S3):1-3.
[5]徐远芳,周场,郑华.基于MATLAB的BP神经网络
实现研究[J].微型电脑应用,2006(08):41-44,  3.
[6]罗成汉.基于MATLAB神经网络工具箱的BP网络实
现[JJ.计算机仿真,2004(05):109-111,115. [7]杨海钢,孙嘉斌,王慰.FPGA器件设计技术发展综
述[J].电子与信息学报,2010,32(03):714-727.
MATLAB Modeling and Hardware Implementation of Character Recognition System Base on BP Neural Network
YU Fei,ZHAO Jie,WANG Jingxia,WEN Guozhong,SONG Rong
* (School of E lectronic and Communication Engineering,Shenzhen Polytechnic,Shenzhen,Guangdong518055,China) Abstract:The authors used Matlab to set up a character recognition system model based on BP neural network.As a result,its parameters can be trained and the system can be implemented at a low engineering hardware cost.We tagged5000samples which are used for model training and validation.The recognition rate of the method we propose reaches85.20%.Meanwhile we use FPGA and Verilog HDL to design the neuron hardware circuit of the system,and the effect is consistent with the Matlab simulation data.The neuron circuit and related system is downloaded to a FPGA chip of Altera so that the data of character image file can be calculated.
Key words:artificial intelligence;neural network;neuron;FPGA;image recognition
xb.szpt.edu深圳职业技术学院学报2019,18(3)-7-

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。