论文部分内容阅读
卷积神经网络是当前众所周知的一种经典神经网络模型,卷积计算是卷积神经网络中最重要的计算形式之一,如何降低卷积计算中的功耗和提高卷积计算速度是卷积神经网络研究中的重要问题,现有的CPU已经很难满足卷积计算的速度、以及功耗需求,因此本文提出了一种基于异步方法的卷积神经网络加速系统以解决卷积计算的问题。首先,本论文对卷积神经网络的算法进行充分的调研,选用Caffe框架来实现卷积神经网络算法。但是该模型在进行识别操作中,大量的时间用于卷积计算中。为了能够更加有效的加速Caffe框架中的卷积算法,本文提出了一种基于FPGA的卷积神经网络计算加速系统,此系统的软件部分是基于Caffe框架的Mtcnn模型,硬件系统部分是基于异步的卷积计算加速器,二者通过DMA管理的DDR进行数据交互。ZYNQ是Xilinx开发的一款FPGA开发板,其由FPGA可编程逻辑部分的PL端和以Arm为核心的PS端组成。在本方法中,卷积神经网络的卷积算法在PL侧FPGA上实现,数据通过DMA与PS端的Linux操作系统进行交换。FPGA完成卷积计算后,计算结果通过DMA返回Linux。卷积计算具体结构使用Verilog语言进行描述,并由Vivado综合实现,可将百万周期的计算可以优化到万级周期。其次,本论文详细介绍了在FPGA上的卷积计算模块和片上存储机制,主要包括了权重矩阵和图片矩阵的读写模式以及矩阵乘法的计算方法,经过充分的调研和分析,发现采用异步握手信号来代替同步时钟信号,在实现时更易于模块化且方便管理,而且能有效的避免了时钟歪斜,速度慢等问题。在功耗方面本论文的设计也有很大的优势,同样通过仿真测试,Xilinx提供的浮点数加法器IP核的功耗是21.843w,而本设计的功耗为7.006w,这种功耗优势会随着浮点数加法器的使用频率的提高而越来越明显。最后,经过实际实现后的测试数据结果显示,本论文设计相比基于ZYNQ7020原有的CPU来实现人脸识别加速了一倍左右。