论文部分内容阅读
手写数字识别本质上是图像识别问题。近年来,在大规模应用图像数字识别的领域,卷积神经网络(Convolutional Neural Network,CNN)依靠在算法性能上的突出表现被广泛使用。但是,CNN作为计算密集和存储密集的多层神经网络,面临着高效硬件实现的挑战。目前,现场可编程门阵列(Field Programmable Gate Array,FPGA)凭借其高性能、低功耗、可编程的特点成为对计算密集型算法进行硬件加速的最具吸引力的实现平台之一。因此,如何在FPGA上高性能地实现应用于手写数字识别的卷积神经网络系统,对于图像识别的发展具有重要的理论研究意义和实用价值。首先,本文研究了面向硬件友好的CNN运算模型,在综合考虑电路复杂度与算法识别率的情况下确定CNN的具体算法,并在MATLAB上完成了CNN的训练、测试和参数提取。同时,为在FPGA上高性能地实现CNN,本文研究了CNN计算的并行特征、激活函数的多种硬件实现方式以及快速算法的算法强度缩减特性。然后,本文提出了两种CNN实现的硬件加速方案。方案1是基于循环变换方法的CNN加速器设计,该方案在硬件体系结构上平铺卷积神经网络的所有层,使得其适用于层数少的CNN。其中,通过CNN计算的循环变换方法可实现高效的并行流水线电路,以提高吞吐率(Throughout,单位为GOPS:Giga Operations Per Second)。方案2是基于快速滤波算法的CNN加速器设计,该方案设计了卷积神经网络逐层加速的硬件体系结构,使得其更具拓展性从而适用于具有更深层拓扑的CNN。其中,为减少CNN的计算量,将二维的快速滤波算法引入到CNN,以提高吞吐率并降低硬件资源的消耗。最后,在Xilinx kintex-7 KC705开发板上搭建系统的测试平台,并利用手写数字集MNIST对所设计的CNN加速器进行测试和性能分析。对于方案1,输入时钟为150 MHz时,电路的吞吐率为20.62 GOPS,数字字符的识别率为98.68%,DSP(Digital Signal Processing)硬件资源占用565个。对于方案2,输入时钟为100MHz时,电路的吞吐率为20.49 GOPS,数字字符的识别率为98.48%,DSP硬件资源占用284个。通过与相关文献对比,本文所实现的CNN加速器能有效地提高吞吐率。