基于FPGA的通用卷积层IP核设计

来源 :河北科技大学学报 | 被引量 : 0次 | 上传用户:b56240320
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:针对目前卷积神经网络在小型化、并行化过程中遇到的计算速度不够、可移植性差的问题,根据卷积神经网络和FPGA器件的特点,提出了一种利用VHDL语言参数化高速通用卷积层IP核的设计方法。利用卷积层的计算方式,将卷积核心设计为全并行化、流水线的计算模块,通过在卷积核心的每一行连接FIFO的方式改善数据流入的方式,减少地址跳转的操作,并加入控制核心使其可以随图像和卷积窗口大小调整卷积层参数,生成不同的卷积层,最后將卷积层与AXIS协议结合并封装成IP核。结果表明,在50 MHz的工作频率下,使用2×2大小的卷积核对100×100的图像进行卷积计算,各项资源利用率不超过1%,耗时204 μs,计算速度理论上可以达到最高5 MF/s。因此,设计方案在增加卷积模块可移植性的同时又保证了计算速度,为卷积神经网络在小型化器件上的实现提供了一种可行的方法。
  关键词:集成电路技术;卷积神经网络;FPGA;卷积层;设计参数化
  中图分类号:TP274;TP391 文献标识码:A
  doi:10.7535/hbkd.2021yx03005
  Design of universal convolutional layer IP core based on FPGA
  AN Guochen1, YUAN Hongtuo1, HAN Xiulu1, WANG Xiaojun1, HOU Yujia2
  (1.School of Information Science and Engineering,Hebei University of Science and Technology,Shijiazhuang,Hebei 050018,China;
  2.Shijiazhuang Foreign Education Group,Shijiazhuang,Hebei050022,China)
  Abstract:Aiming at the problems of insufficient computing speed and poor portability in the miniaturization and parallelization of convolutional neural network,this paper proposes a design of high-speed universal convolutional layer IP core using VHDL language based on the characteristics of convolutional neural network and FPGA devices.Layer based on convolution calculation,convolution core design is put forward for the parallel calculation and pipeline module,through each line in the convolution of the core connect to FIFO to improve the data flow,reduce the operating address jump,and join the control core to make it can adjust the convolution with images and convolution window size to layer parameters,generate different convolution layer,finally,the convolution layer is combined with the AXIS protocol and encapsulated into IP core.Under the working frequency of 50 MHz,the convolution calculation of 100×100 images with 2×2 convolution check is carried out.The utilization rate of each resource is less than 1%,and the time is 204 μs.The theoretical calculation speed can reach the maximum of 5 MF/s.The IP core structure of the convolutional layer not only increases the portability of the convolutional module,but also ensures the computing speed,which provides a feasible implementation method for the implementation of convolutional neural network on miniaturized devices.
  Keywords:
  integrated circuit technology;convolutional neural network;FPGA;convolution layer;design parameterization
  随着深度学习研究的发展,卷积神经网络在语音识别[1]、图像理解[2]、目标跟踪[3-4]等领域发挥着重要作用。卷积神经网络既需要在原理和结构上继续研究以达到更好的性能指标和迁移能力,也需要更好地把现有神经网络适用到各种实时性、小型化的场合[5]。越来越多的神经网络加速结构被提出,如将卷积层二值化[6]以减少FPGA的运算量、专用的加速SOC[7]使CNN峰值计算性能在100 MHz下达到42.13GFLOPS等。基于此提出了一种参数化设计的通用卷积层IP核加速结构,该结构适用范围更广。   所提出的通用卷积层IP核设计,属于加速器设计通用化,是卷积神经网络加速器设计研究与发展的一个重要方向[8]。该设计通过VHDL语言的参数化设计[9],对一种卷积层加速结构[10-11]进行重构,使其由一种定长卷积加速结构改进为可以生成不同大小卷积窗口的通用卷积核。可移植性方面,通过参数配置IP核,预先配置其窗口大小,被卷积信号或图像大小,即可生成一维、二维不同大小的卷积层,满足不同的卷积计算需要。计算速度方面,优化数据流入方式,避免了地址的跳转,引入并行化和流水线思想,在数据传输不间断的情况下,一个时钟周期即可输出一个有效计算结果。该设计支持AXI4-Stream协议,硬件开发人员可以快速调用该卷积层IP核完成卷积层的开发,不必再把精力浪费到内部卷积结构的设计上。
  1 卷积层原理
  卷积层有一维卷积层、二维卷积层和多维卷积层,同一种卷积层根据卷积窗口大小的不同也不同,这里主要介绍一维卷积层和二维卷积层。
  1.1 一维信号卷积
  一维卷积通常被用于时间序列的处理,一维卷积神经网络(1-dimensional convolutional neural network,简称1DCNN)多用于工业故障诊断[12]、医疗诊断[13]等需要对时间序列进行处理的场合。
  图1为一维卷积示意图,k个点的时间序列和n个点的卷积核做卷积运算,时间序列从左到右滑动,每次滑动对应数据相乘相加输出一个卷积结果,作为下一层卷积层或者池化层的输入。一维卷积运算又等效于FIR滤波器的直接型结构。
  一维卷积公式如式(1)所示:
  y(k)=∑n-1i=0x(i)h(k-1)。(1)
  式中:x(i)是输入数据,数据长度为k;h(n)是卷积核,卷积长度为n;y(k)是卷积核对输入数据进行卷积后的输出,数据长度为k,在边带不补零的情况下,数据长度为k-n+1。
  1.2 二维图像卷积
  二维卷积神经网络(2-dimensional convolutional neural network,简称2DCNN)多用于计算机视觉的处理[14-15],通过卷积核模拟人类大脑的神经元对卷积层输入进行局部感知,模拟人脑神经元感知到生物电信号的反应并将感知结果输出。
  图2为二维卷积层示意图,一个卷积核模拟的神经元在输入图像上滑动,遍历所有图像数据,每滑动一次,对应的图像数据和卷积核权值相乘求和输出。
  二维卷积公式如式(2)所示:
  y(p,q)=∑m-1j=0∑n-1i=0x(i,j)h((p-i),(q-j))。(2)
  式中:x(i,j)為输入数据,一般为图像数据;图像大小为p×q;h((p-i),(q-j))为卷积核;卷积核的窗口大小为m×n;y(p,q)为输出数据,数据长度为p×q,在边带不补零的情况下,数据长度为(p-m+1)×(q-n+1)。
  2 FPGA构架分析
  从1988年提出的LeNet-5模型到经典的VGG-16模型,卷积层由最初的2层增加到了13层,甚至在152层的ResNet网络中达到了50层。卷积层数的增加意味着计算量的增加,卷积层的计算量在CNN中占比高达90%[16]。因为神经元和感受野之间的局部连接特点,同一个卷积层下的卷积核是可以并行计算的,同一个卷积核的所有感受区域也是可以并行计算的,所以卷积层可以有很高的并行性。
  为了兼顾速度和资源,卷积层一般采用并行加流水线相结合的方式。在某一个感受野内的计算是并行的,即1次计算1个卷积结果。同一个卷积窗口在输入图像上的滑动是流水线式的,即所有数据依次进入卷积窗口进行计算,既增加了并行度、提高了计算速度,又相对节省资源。
  对于一个感受野中的单次卷积运算,以5×5大小的卷积窗口为例,对于FPGA并行结构的卷积核,在流水线结构下,1个运算周期可以输出1个卷积结果;对于基于冯诺依曼结构或者哈佛结构的通用中央处理器,1次卷积需要执行25次乘法和24次加法,共计49次计算,加上每次卷积中必须的地址跳转等操作,至少需要50个运算周期才能输出1个卷积结果。通过对比可知,在相同频率下,5×5大小的卷积窗口,基于FPGA的卷积核的计算速度是基于通用中央处理器的50倍以上。
  由于传统的FPGA电路定制化的特点,针对固定结构设计的卷积核很难移植到其他算法结构中[17-20],甚至在同一个算法结构中,一个3×3的卷积核也很难扩展成5×5的卷积核。为了解决卷积层加速结构不便移植的缺点,提出了如图3所示的通用卷积层加速结构。由图3可知,该卷积层加速结构的通用性在于仅需在通过生成卷积层时,配置几个简单的参数,即可生成含有指定大小卷积窗口的卷积层。3×3,5×5,7×7甚至是类似于3×5非正方形的卷积窗口和1×N大小的一维卷积窗口,都可以通过简单的配置生成。
  该卷积层加速结构支持AXI4-Stream协议,通过AXI4总线获取数据。卷积层结构主要分为3个部分,分别是控制核心区、数据缓存与预处理区和并行计算区。控制核心区负责接收和产生状态信号,通过AXI4总线与外部交互并且通过控制内部FIFO的使能信号控制数据的预处理和计算。数据缓存与预处理区在控制信号的控制下,将输入的数据流分别存入不同的FIFO中,每一行都配有一个FIFO。并行计算区不接受控制核心区的控制,在时钟、使能和复位的控制下独立地进行乘累加操作。
  3 通用卷积层IP核设计
  通用卷积层IP核模块运用类属参数语句generic和生成语句generate相结合的方式进行参数化设计。通过在生成IP核时配置参数,将要生成的IP核信息传递进入生成语句,生成特定大小的并行计算电路。计算时,将图像的大小信息输入控制核心模块,由控制核心负责切换卷积核的运行状态。   3.1 通用性设计
  该卷积核的通用性设计得益于标准的AXI4-Stream总线协议和大小可以随参数改变的卷积核结构。AXI4-Stream总线协议使其可以适配于支持AXI4-Stream协议的数据流传递网络中,是为了与Xilinx的IP核数据交互方式一致。大小随参数改变的卷积核结构使得该卷积核有更高的可重用性,在需要不同窗口大小的网络中生成不同大小的卷积窗口,通用卷积层示意图如图4所示。
  3.2 IP核设计
  该IP核的封装设计基于Xinlinx公司的Vivado 2019.1平台,通过对IP核进行封装,可以进一步提高该设计的通用性。通用卷积层IP核设计框图如图5所示。
  该IP核由控制核心控制整体时序、Memory做存储单元、AXIS到SDRAM协议转换的协议转换模块、卷积核心和可选的ReLU函数计算模块5部分组成。在高速卷积运算核心外围添加AXIS协议转换电路,使运算核心支持AXIS协议,不仅方便移植,更进一步地,多个支持AXIS协议的函数运算单元进行级联可以形成流水线计算模式。比如多个通用卷积层IP核模块进行级联,可以形成流水线计算的卷积神经网络。ReLU函数计算模块作为可选项,在IP核配置界面进行配置可以选择是否在该级卷积层后接ReLU函数。
  4 仿真分析
  封装后的通用卷积层IP核如图6所示。左侧为该IP核的模组顶层示意图,右侧为该IP核的可配置选项。通过配置右侧的参数,包括卷积窗口的大小、数据位宽、输入图像的大小等可以生成特定大小的卷积层。ReLU Mode选项通过配置0和1,可以选择是否在卷积层后接ReLU函数。
  4.1 仿真数据
  该设计是在XILINX公司的Vivado 2019.1开发平台上进行的仿真与分析。模拟生成一幅100×100图像的方法验证整个系统的时序逻辑,以下分析都是基于图5中CovCore模块进行的验证。
  模拟生成的源图像有4个值,分别是0x1000,0x2000,0x3000,0x4000,4个数循环作为激励输入卷积核的输入端,图7为图像模拟数据。在仿真中卷积核生成的尺寸为2×2,按从左到右、从上到下的方向依次滑过源图像。
  卷积核4个权值均设为0x1000,与图像进行卷积后,理论上行首的卷积计算结果应为0x1800 K,0x2800 K,0x3800 K和0x2800 K。图8为仿真结果波形图,经对比验证可知电路功能的正确性。
  4.2 性能分析
  FPGA芯片型号是ZYNQ系列的xc7z100iffv900-2L,在Vivado 2019.1的Utilization窗口中查看资源消耗,分别统计了生成2×2,5×5和7×7大小的卷积核时的资源消耗和计算速度,时钟频率为50 MHz。表1为FPGA性能分析。
  由表1可知,LUT和FF的资源消耗随卷积窗口的增大而增长,其中FF资源消耗增长较为剧烈。在计算速度方面,2×2大小卷积核心的计算时间是204.120 μs,与7×7大小的卷积核心相比速度加快约45 μs。
  在外围电路增加AXIS协议转换电路情况下,资源消耗和计算时间又略有增长。LUT和FFT分别增加固定个数27和28,计算时间随着一帧图像数据大小的增长而增长。
  5 结 语
  在FPGA上实现了可变大小的卷积神经网络的卷积层IP核,在生成2×2大小的卷积层IP核时,各项资源利用率不超过1%,当生成更大的卷积核时,消耗的资源会相应增长。在50 MHz的工作频率下,对像素值为100×100的图像进行2×2卷积窗口的卷积,耗时约204 μs。生成多级卷积层IP核流水线式处理图像数据时,计算速度理论最高可以达到5 MF/s,即1 s处理5 M幅100×100大小的图像。该通用卷积层IP核在满足资源消耗和计算速度的情况下,实现了卷积核的通用性设计,可为卷积神经网络移植和FPGA加速构架设计中起到参考作用。
  该IP核作为专用的卷积层IP核和神经网络的基本运算结构,可以被绝大多数深度学习框架所使用。在AI芯片、张量处理单元(TPU)等基于深度学习的ASIC解决方案中占据重要地位,可以被广泛应用于深度学习加速卡、异构处理器、边缘计算和云计算等当下热门AI芯片领域。本文主要针对实数域下的通用卷积层IP核结构进行加速设计,未来还需完善将其推广到复数域卷积层IP核加速结构,进一步提升通用性。
  参考文献/References:
  [1] 屈家丽,贺光辉,王国兴.语音识别中卷积神经网络的FPGA实现[J].微电子学与计算机,2018,35(9):37-46.
  QU Jiali,HE Guanghui,WANG Guoxing.FPGA implementation of convolutional neural network in speech recognition[J].Microelectronics & Computer,2018,35(9):37-46.
  [2] 常亮,鄧小明,周明全,等.图像理解中的卷积神经网络[J].自动化学报,2016,42(9):1300-1312.
  CHANG Liang,DENG Xiaoming,ZHOU Mingquan,et al.Convolutional neural networks in image understanding[J].Acta Automatica Sinica,2016,42(9):1300-1312.
  [3] 李玺,查宇飞,张天柱,等.深度学习的目标跟踪算法综述[J].中国图象图形学报,2019(12):2057-2080.
  LI Xi,ZHA Yufei,ZHANG Tianzhu,et al.A review of deep learning target tracking algorithms[J].Journal of Image and Graphics,2019(12):2057-2080.   [4] PEI Xia,LI Dong,WANG Lijun,et al.Deep visual tracking:Review and experimental comparison[J].Pattern Recognition.2018,76:323-338.
  [5] 李彦冬,郝宗波,雷航.卷积神经网络研究综述[J].自动化学报,2016,36(9):2508-2515.
  LI Yandong,HAO Zongbo,LEI Hang.A review of convolutional neural networks[J].Acta Automatica Sinica,2016,36(9):2508-2515.
  [6] 蒋佩卿,吴丽君.基于FPGA的改进二值化卷积层设计[J].电气开关,2019(6):8-13.
  JIANG Peiqing,WU Lijun.Design of improved binarization convolutional layer based on FPGA[J].Electric Switchgear,2019(6):8-13.
  [7] 赵烁,范军,何虎.基于FPGA的CNN加速SoC系统设计[J].计算机工程与设计,2020,41(4):939-944.
  ZHAO Shuo,FAN Jun,HE Hu.Design of CNN acceleration SoC system based on FPGA[J].Computer Engineering and Design,2020,41(4):939-944.
  [8] 陈桂林,马胜,郭阳.硬件加速神经网络综述[J].计算机研究与发展,2018,56(2):240-253.
  CHEN Guilin,MA Sheng,GUO Yang.A review of hardware-accelerated neural networks[J].Journal of Computer Research and Development,2018,56(2):240-253.
  [9] 孙延腾,吴艳霞,顾国昌.基于VHDL语言的参数化设计方法[J].计算机工程与应用,2010,46(31):68-71.
  SUN Yanteng,WU Yanxia,GU Guochang.Parametric design method based on VHDL language[J].Computer Engineering and Applications,2010,46(31):68-71.
  [10]刘志成,祝永新,汪辉,等.基于FPGA的卷积神经网络并行加速结构设计[J].微电子学与计算机,2018.35(10):80-84.
  LIU Zhicheng,ZHU Yongxin,WANG Hui,et al.Design of convolutional neural network parallel acceleration structure based on FPGA[J].Microelectronics & Computer,2018,35(10):80-84.
  [11]陈煌,祝永新,田犁,等.基于FPGA的卷积神经网络卷积层并行加速结构设计[J].微电子学与计算机,2018,35(10):85-88.
  CHEN Huang,ZHU Yongxin,TIAN Li,et al.Design of convolutional layer parallel acceleration structure of convolutional neural network based on FPGA[J].Microelectronics & Computer,2018.35(10):85-88.
  [12]安晶,艾萍,徐森,等.一种基于一维卷积神经网络的旋转机械智能故障诊断方法[J].南京大学学报(自然科学),2019(1):133-142.
  AN Jing,AI Ping,XU Sen,et al.An intelligent fault diagnosis method for rotating machinery based on one-dimensional convolutional neural network[J].Journal of Nanjing University(Natural Science),2019(1):133-142.
  [13]黃佼,宾光宇,吴水才.基于一维卷积神经网络的患者特异性心拍分类方法研究[J].中国医疗设备,2018(3):11-14.
  HUANG Jiao,BIN Guangyu,WU Shuicai.Patient - specific cardiopap classification based on one-dimensional convolutional neural network[J].China Medical Devices,2018(3):11-14.
  [14]王礼贺,杨德振,李江勇,等.卷积神经网络在目标检测中的应用及FPGA实现[J].激光与红外,2020,50(2):252-256.
  WANG Lihe,YANG Dezhen,LI Jiangyong,et al.Application of convolutional neural network in target detection and FPGA implementation[J].Laser and Infrared,2020,50(2):252-256.   [15]江泽涛,刘小艳,胡硕.基于CNN的红外与可见光融合图像的场景识别[J].计算机工程与设计,2019,40(8):2289-2294.
  JIANG Zetao,LIU Xiaoyan,HU Shuo.Scene recognition of infrared and visible fusion images based on CNN[J].Computer Engineering and Design,2019,40(8):2289-2294.
  [16]HE K,ZHANG X,REN S,et al.Deep residual learning for image recognition[C]// 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).New York:IEEE,2016:770-778.
  [17]王婷,陈斌岳,张福海.基于FPGA的卷积神经网络并行加速器设计[J].电子技术应用,2021,47(2):81-84.
  WANG Ting,CHEN Binyue,ZHANG Fuhai.Design of convolutional neural network parallel accelerator based on FPGA[J].Application of Electronic Technique,2021,47(2):81-84.
  [18]张旭欣,张嘉,李新增,等.二值VGG卷积神经网络加速器优化设计[J].电子技术应用,2021,47(2):20-23.
  ZHANG Xuxin,ZHANG Jia,LI Xinzeng,et al.Accelerator optimization design of binary VGG convolutional neural network[J].Application of Electronic Technique,2021,47(2):20-23.
  [19]張帆.图像卷积实时计算的FPGA实现[J].电子设计工程,2021,29(1):132-137.
  ZHANG Fan.FPGA implementation of image convolution real-time computation[J].International Electronic Elements,2021,29(1):132-137.
  [20]范军,巩杰,吴茜凤,等.基于FPGA的RNN加速SoC设计与实现[J].微电子学与计算机,2020,37(11):1-5.
  FAN Jun,GONG Jie,WU Xifeng,et al.Design and implementation of RNN accelerated SoC based on FPGA[J].Microelectronics & Computer,2020,37(11):1-5.
其他文献
图G存在Pk因子,如果G有一个支撑子图H使得H的每个分支都是一条恰含k个顶点的路,其中k≥3.图G存在K1,n因子,如果G有一个支撑子图H使得H的每个分支都是含n+1个顶点的星,其中n≥
如何提高课堂效率、构建高效课堂是当代教师致力探讨的问题.本文作者在教学实践中践行学习迁移理论,通过铺设与生活相关的桥梁、设置矛盾冲突点、引导学生自主建模三种方式,
导致小学生出现数学计算错误的原因有很多,包括惯性思维影响、数学计算逻辑不清、缺少计算验算等,因此,计算一直是小学生数学学习的重点、难点问题.小学数学教师在教学中应注
通过对位于断裂带同侧的晋7-1井与晋源井不同深度水温变化进行实验观测与对比分析,结果表明:(1)两口井在0~70 m温度梯度总体变化一致,井的深度不影响井的温度梯度,决定井温度梯度的是其所处位置的水文地质构造;(2)温度梯度越小,水温记录背景噪声越小,也就是说对于同一口井井底、正负温度转换带或者是恒温井这些温度梯度为零或近零点水温观测背景最小;(3)水温"潮汐"变化为次生变化,大小与水位"潮汐"相
本文立足于小学数学教学实践,从“尊重学生主体,引导学生主动探究数学知识”“动手进行实践,引导学生感悟数学知识形成”“立足于实际生活,引导学生学会运用数学知识”三个方
在平面波假设下,基于Tikhonov正则化方法对背景噪声源能量随方位角的分布进行反演;从数据分辨率矩阵、模型分辨率矩阵和单位协方差矩阵的角度对解进行了评价;通过数值实验,分别研究了速度模型、噪声源能量分布模型、周期对解的估计的影响;从不同的角度,说明了Tikhonov正则化方法在背景噪声能量随方位角分布的反演中是一种有效的、稳定的反演方法。
摘 要:针对无刷直流电机匝间短路故障问题,提出一种结合深度迁移学习和多维特征拟合方法,以实现匝间短路故障的精确定位和定量评估。同步采集电机定子绕组的三相电流信号,将一维电流信号转化为图像信号,采用基于迁移学习的卷积神经网络实现匝间短路故障的定位,在确定故障相之后,从电流信号中提取并筛选敏感特征,采用特征拟合方法实现故障等级的定量评估。实验结果表明,所提出的方法能够实现100%精度的故障相定位,同时
在人们的意识里,数学就是抽象的理论知识,与实验没有丝毫关系,其实不然,数学应该是实验结论的综合体现,数学知识的发现以及认识过程都是在实验中完成的.教学过程中借助实验,
既往研究表明,对于统一制国家来说,汶川8.0地震后实施的跨区域支援,是一种创新并有效应对巨灾的重建支援手段;但因其支援方是具有更高行政级别的政府,研究者对其重建规划决策是否存在违背受灾地地方政府的倾向而提出质疑。针对以上疑问,以汶川地震灾后重建中上海市对口支援都江堰市为例,从重建项目构成及地理分布2个方面对比分析支援项目与其他重建项目的特点,试图明确支援政府在进行跨区域支援时,在确定支援内容及空间
迄今为止,二阶变系数线性微分方程仍然没有通用的求解方法.本文利用了降阶法求解一类特殊的二阶变系数微分方程,并将该方法应用于具体的实例中,进一步说明了使用该方法的重点