论文部分内容阅读
手写数字识别是光学字符识别技术的一个重要分支,它的研究对象是,如何利用电子设备自动辨别人手写在纸张上的阿拉伯数字。由于数字识别的类别数较少,有助于做深入分析及验证一些新的理论。这方面最明显的例子就是人工神经网络(Artificial Neural Network,ANN),相当一部分ANN模型和算法都以手写数字识别作为具体的实验平台。卷积神经网络CNN(Convolutional Neural Networks,CNN)是人工神经网络的一种,是多层感知机的一个变种模型,从生物学概念演化而来,已经成为当前语音分析和图像识别领域的研究热点。本文首先完成了应用于手写数字识别的卷积神经网络的Matlab算法实现。卷积神经网络使用一个7层的结构,分别为:输入层,卷积层,池化层,卷积层,池化层,全连接层和输出层。整个卷积神经网络算法可以分为四个阶段:第一阶段,卷积神经网络结构与参数的初始化;第二阶段,卷积神经网络中参数的训练;第三阶段,卷积神经网络识别正确率的测试;第四阶段,卷积神经网络卷积层中卷积核以及全连接层中权重参数的提取与存储。进一步完成基于FPGA该卷积神经网络的实现。首先完成该卷积神经网络的整体硬件结构设计,完成了功能模块的划分。在实现中,第一步要对Matlab算法中数据进行定点化,找到合适精度的定点小数来表示数据。由于FPGA片上资源的限制,对系统中卷积层模块进行了复用设计。分模块实现基于FPGA的设计,最终完成整个基于FPGA的卷积神经网络系统的调试与验证。卷积神经网络的训练与测试均采用MNIST数据集,其中包括训练库60000张,测试库10000张。经过验证基于卷积神经网络的手写数字识别Matlab算法和FPGA实现均可以达到较高的识别正确率。