彭东
摘 要 在很多研究与设计中,FPGA可以应用于卷积神经网络加速器的设计当中。在这篇文章当中将基于FPGA设计卷积神经网络的硬件加速器,在此设计中,核心技术是利用卷积神经网络的并行性这一特征,降低实施嵌入式带来的资源利用的需求,从而使得加速器可在资源有限的开发板上得以实现。
关键词 卷积神经网络;FPGA;设计;硬件加速器
前言
卷积神经网络,英文全称Convolutional Neural Networks,簡称CNN,是一类前馈神经网络,其内包含有卷积计算,具备着深度结构。该神经网络是有着一定的学习能力的,对于给定的阶层结构,可以平移不变地对于后续输入的信息进行分类。FPGA,全称Field Programmable Gate Array,专用集成电路领域中的一种半定制电路。本文首先介绍卷积神经网络CNN以及FPGA基本原理,然后根据CNN的特点,通过合适的并行处理与流水线结构在FPGA上设计一个CNN系统,有效提高其性能。
1基本原理
1.1 CNN基本原理
卷积神经网络通过共享权重值以及局部连接的方式大大降低了网络的整体复杂度,并且避免了传统网络需要对输入数据进行复杂的预处理工作,直接将原始数据输入卷积神经网络经过多次卷积抽样,提取关键特征即可完成模式识别,并且卷积神经网络对物体的形变有着极高的适应性。
卷积神经网络可应用于语言与识别图像处理方面,且应用广泛。在卷积神经网络中,对输入数据的处理总共分为三种:卷积(Convolution)、池化(Pooling)、全连接 (Fully Connected) [1]。这些操作在卷积神经网络的结构中以层的形式存在,在进行图像识别时,卷积神经网络的初始输入数据一般为原始图像,在卷积神经网络中经过多次交替执行卷积和池化后得到多个特征图,再通过全连接将这些特征图计算得到识别结果。
1.2 FPGA基本原理
FPGA,即现场可编程逻辑门阵列,该可编程器件具有与传统的可编程器件不同的结构,其采用的是小型查找表完成组合逻辑,这样方便于每一个查找表可以连接到一个D触发器的输入端,再由触发器驱动输入输出接口或者继续驱动其他的触发器,从而实现了组合逻辑和时序逻辑。各个模块之间通过金属连线,相互沟通与联系,最终联系到输入输出接口。通过向内部静态存储单元加载数据,来实现FPGA的逻辑。
2CNN设计
2.1 整体结构
由于FPGA内部存储资源有限,而卷积神经网络一般消耗的内存较多,所以可编程器件便会不断的访问外部存储器从而读取数据,从而使网络效率很大程度的下降。故此次设计的目的为降低访问外部存储器的次数,提高网络效率。则要通过设计使得输入图像以及卷积核权值只需要加载一次,就存储在片上存储器中,此过程执行到操作结束方可停止。本文提出如图3-1所示的结构,其中,ARM是该结构的最主要的控制器部分,具体连接如图,控制器与存储器相连接,便可以将输入图像传输到卷积模块当中,再进行卷积运算。存储器中存在四个卷积核,所以在每次计算过程当中都可以生成四个输出部分,数据存储器和系数存储器的端口均可以被多路重复使用[2] ,发送输入数据与存储输出数据几乎同步进行,并且循环过程不会产生中断。
3-1加速器整体架构
2.2 卷积运算单元
对于硬件设计而言,不同的卷积层之间的计算是可以并行的,然而在运算过程当中,会存在着非常高的数据重复性,可能会导致数据的不相关性。因此想要提高运算性能,就要增加数据利用率和运算并行性,本文提出了一个流水线并行乘加结构,一次完整的乘加结构可在一个时钟周期内结束,为3×3的卷积运算单元,周期内完成计算次数为9次,均为乘法计算,最终通过加法计算输出最终特征像素。在内部存储器获取的图像信息在REG中存放,而存储器中的卷积核权值存放在W中,当卷积运算需要更新卷积核时才能进行修改操作。对于卷积神经网络而言,需要对输入图像的边缘位置填充0方,为了保证流水线结构不会因为特征图切换或者数据的填充问题而发生中断,确保卷积计算的并行性,可以在卷积器中加入屏蔽器,将输出边缘位置0。
3结束语
本文提出的一种卷积神经网络设计是基于FPGA进行研究与分析的,主要是利用其内部资源,通过提高数据的获取效率,应用流水线结构,提升卷积运算的并行性从而提高运算速度,得到一种高效率的卷积神经网络加速器结构。对于开发板而言,即使资源有限,也可以通过本文提供的设计实现卷积神经网络与可编程器件的优势最大化。
参考文献
[1] 余子健,马德,严晓浪,等.基于FPGA的卷积神经网络加速器[J].计算机工程,2017,43(1):109-114.
[2] 杨薇.卷积神经网络的FPGA并行结构研究[J].数字技术与应用,2015(12):61.