论文部分内容阅读
随着深度学习领域的不断发展,卷积神经网络(Convolutional Neural Networks,CNN)已经成为许多计算机视觉领域应用的黄金标准,在字符识别、人脸识别、图像视频分类、场景分析等领域得到越来越广泛地应用。由于CNN中包含大量运算,是一种计算密集型很高的算法,通用处理器不能充分挖掘其并行性,难以满足其实时性要求。而目前CNN主要使用GPU实现,GPU的高功耗使其不适合应用在可移动平台。FPGA作为一种可编程器件,具有灵活可配置、计算资源丰富、开发周期短等优点,基于FPGA来开发CNN加速器已经越来越流行。本课题基于FPGA平台,采用硬件语言描述,研究实现一种具有高度并行化、高吞吐率的卷积神经网络加速器。本文首先介绍了神经网络的基本原理和结构,并介绍了软硬件协同设计的流程。接着对CNN加速器设计过程中的关键问题进行分析,重点分析了卷积运算的并行特征,对每一种并行特征提出了实现方式,并从资源占用与硬件实现角度进行了分析。同时,对网络的激活函数的实现和选择进行了分析,并说明了本文对参数精度的选择。以此为基础,本文设计了基于FPGA的CNN加速器。该加速器采用软硬件协同设计,采用CPU+FPGA的计算框架,硬件端实现CNN模型的前向计算,软件端完成数据传输与控制。在硬件设计上,对加速器进行了模块划分,完成了卷积层模块、池化层模块、缓存区、AXI接口的设计。CNN加速器实现了LeNet-5模型的前向计算,加速器每一层都采用深层流水线的结构以提高整体吞吐率,各层之间的乘累加器和输入输出缓存通过复用来减少资源消耗。在软件端,设计了CPU对CNN加速器的控制交互和数据交换逻辑。结合软硬件端的设计,完成了对MNIST数据集手写数字的分类识别,得到了较好的分类结果,准确率为98.5%,对比软件实现仅有0.5%的损失。在计算性能上达到了10.07GOP/s,分别是通用CPU和GPU的11.7倍和1.1倍;在功耗上,仅为通用CPU和GPU的4.3%和3.1%。对比基于OpenCL和HLS的FPGA实现也达到了更高的单位资源性能。