一种基于FPGA的卷积神经网络模型设计论文

一种基于FPGA的卷积神经网络模型设计

丁晓彤1*, 徐 佩1, 2, 任鹏举3

(1.中国空空导弹研究院, 河南 洛阳 471009; 2.航空制导武器航空科技重点实验室, 河南 洛阳 471009; 3.西安交通大学, 西安 710000)

摘 要: 武器装备的智能化已经成为一种发展趋势, 卷积神经网络(CNN)在图像识别、 目标检测和跟踪任务中展现出优异的性能, 因此, 将卷积神经网络算法应用于相关武器有助于提升其在复杂战场环境下的精确目标识别和抗干扰能力。 本文提出了一种基于FPGA的卷积神经网络模型设计方法, 并且在Xilinx Virtex-7系列FPGA验证了其功能的正确性。 该模型具有可配置、 可重构的高灵活性, 移植能力强, 适用范围广。

关键词: 智能化; 目标识别; 卷积神经网络; FPGA; 武器装备

0 引 言

卷积神经网络算法是一种高效识别分类算法, 起源于1962年, Hubel和Wiesel在研究猫视觉皮层细胞时发现其独特的网络结构, 提出了感知野(Receptive Field)的概念。 1984年日本学者Fukushima基于感知野的概念提出了神经认知机(Neocognitron), 可以认为是第一个卷积神经网络[1]。 2012年, Alex Krizhevsky提出了一种卷积神经网络算法结构Alex_Net, 在大规模视觉识别挑战(LSVRC)分类赛上取得了惊人的成绩, 开启了卷积神经网络的研究热潮[2]。 作为人工智能领域机器学习分支中的重要算法, 卷积神经网络近年来已经在多媒体与智能产业中占据优势地位, 在图像识别、 目标分类等方面表现优异。

由表6可以看出,在其它变量不变的情况下,解释变量国内生产总值、年末人口数量和居民人均教育消费支出对被解释变量国家财政教育支出的影响显著.解释变量居民教育消费价格指数和财政教育支出占总支出的比例对被解释变量国家财政教育支出的影响都不显著,从回归模型中剔除,得到新的回归模型为

在军事上, 随着战场的复杂态势逐步升级, 武器装备需要提升其在复杂战场环境下的精确目标识别与抗干扰能力。 针对这个需求, 可以将卷积神经网络算法应用于武器装备, 利用其出色的目标识别与分类能力提升武器装备的性能, 促进武器装备智能化发展。 目前很多国家都在进行智能武器研究, 美国研制的远程反舰导弹LRASM被称为“人工智能导弹”, 具有末端虚假目标剔除与高价值目标识别锁定的能力[3]; 挪威的NSM反舰导弹装备有双频智能红外成像导引头, 能够区分出中立目标与敌方目标[4]。 锁定目标与辨别敌我均可以通过卷积神经网络算法实现, 可见卷积神经网络在军事领域应用的重要性与必要性。 考虑到武器装备的体积、 功耗与实时性的要求, 传统的CPU或GPU将很难满足这些需求。 FPGA是一种现场可编程门阵列, 具有丰富的逻辑门资源, 以并行运算为主, 采用硬件描述语言实现, 具有低功耗、 高速、 高灵活性等优势, 可以快速进行硬件的功能验证和评估, 加快设计迭代速度, 是卷积神经网络算法在智能武器上实现的一种较好方式。

本文探讨了一种基于FPGA的卷积神经网络模型设计方法, 并针对智能武器的低功耗需求提出该模型的优化方式。

1 卷积神经网络

1.1 卷积神经网络算法基本原理

图1所示为卷积神经网络算法流程示意图, 从左至右依次为网络的输入图像、 卷积层、 池化层以及全连接层, 最终输出的是若干分类结果。 卷积神经网络的输入可以是图像的像素, 而不用经过其他操作, 因此, 在图像处理领域运用十分广泛。

图1 卷积神经网络算法流程示意图

Fig.1 Flow diagram of CNN algorithm

假设输入图像为单通道灰度图像, 用P表示, 特征窗滑动步长为1, 对P进行卷积操作, 每次卷积操作可表示为

全连接层的特点是参数数目巨大, 在含有全连接层的模型中, 全连接层参数可以占到整个网络参数的90%以上, 所以目前卷积神经网络优化的手段主要从全连接层入手。 全连接层设计思想与卷积层和池化层相同, 设计全连接层基本模块, 其中输入、 输出端口个数和位宽均可以通过参数进行配置[7]。图7所示为全连接层基本模块的内部结构, 包括存储模块、 基本列模块与地址计数器模块。 存储模块中两个SRAM分别存有训练好的神经网络权重值和偏置值, 通过地址计数器模块控制读取。 基本列模块中包含若干个计算单元, 进行输入数据与对应权重与偏置值的乘加运算。 每个全连接层基本模块得到该全连接层的一个运算结果, 由于全连接层的每个运算结果都涉及该层所有的输入数据, 故从图4中可以看到, 全连接层中每个基础模块F的输入都来自所有池化层基础模块P, 通过数据流控制确保每个全连接层基础模块都能接收到上层所有输出数据。

设计的基本思路是依据卷积神经网络算法的功能层设计每层对应的基础模块, 通过配置参数将这些基础模块例化组合, 实现各个功能层的功能。 图4为一个基于FPGA的卷积神经网络模型各层基础模块连接图, C为卷积层基础模块, P为池化层基础模块, F为全连接层基础模块, 图中模型为两层卷积层和一层全连接层, 可通过配置参数调整网络层数及每层基础模块个数。

有一次我生病,难受时想家想妈妈,打电话把妈妈叫来陪我。活佛知道后过来照顾我,骂我没良心。“妈妈独自一人在家支撑这个家庭,还要干活,又苦又累,你还让她跑这么远。”其实活佛身体也不好,患有高血压,原因是他劳累过度,坐久了脚面浮肿得厉害。大家都有很多话要跟活佛讲,也想看望他。停电是聊天的好机会,我们就会一边聊天一边给他捏捏脚,这时候是最幸福的。[注]访谈人:欧阳丽婷;访谈对象:德钦;访谈时间:2015年10月8日;访谈地点:青海省兴海县莫多寺。

1.2 卷积神经网络的经典结构

卷积神经网络中的卷积层以局部感知、 权值共享的方式减少了参数数量, 是卷积神经网络的优势所在, 映射在FPGA上需要保留这种权值共享的模式。 而全连接层参数量、 计算量较大, 用FPGA实现时占用的资源过多, 是后续优化系统的关键部分。 由于不同网络结构中输入图像大小、 卷积窗大小、 个数等均有不同, 本设计是一种基于FPGA的可重构、 可配置的卷积神经网络模型设计, 根据配置参数的不同完成不同卷积神经网络结构在FPGA上的映射。

图2 LeNet-5的算法结构图

Fig.2 Structure diagram of LeNet-5 algorithm

2012年, Alex Krizhevsky提出的一个经典卷积神经网络算法结构Alex_Net[2]。 该网络结构采用ImageNet数据集, 包括训练集1 281 167张图片、 验证集50 000张图片和100 000张测试图片, 分别属于1 000种不同类别。 由于ImageNet数据集中的图像大小并不一致, Alex_Net在使用时先对输入图像进行压缩操作使其固定分辨率为256×256, 又对该图像进行预处理使其成为224×224大小作为网络的输入。 图3所示为Alex_Net的体系结构, 包括八层结构(五层卷积层和三层全连接层)。

图3 Alex_Net的算法结构图

Fig.3 Structure diagram of Alex_Net algorithm

2 卷积神经网络模型的FPGA设计实现

目前人工神经网络的实现多集中于软件领域, 工程师们开源了一些卷积神经网络的软件平台, 如Caffe, Tensorflow等, 这些平台可以搭建不同结构的卷积神经网络并完成训练与推理。 近年来新的网络结构层出不穷, 而大多数网络都是在经典网络上改进的, 一种经典的卷积神经网络结构是1986年由Partrick Haffner提出的LeNet-5, 图2所示为LeNet-5算法结构图[5], 包括两层卷积层、 池化层和两层全连接层。

2.1 卷积神经网络模型的设计实现

式中:f 为该卷积层输出图像C上的一个像素值;bias 为每个特征窗中特定的偏置值;m ,n 分别为特征窗的长和宽。 卷积操作利用局部感知原理, 在保持像素空间位置信息的同时减少了参数的数量, 卷积后输出图像C, 作为池化层的输入。 池化层又叫采样层, 主要作用是将图像进行采样、 压缩和聚拢, 以减少后面网络的计算量, 同时在一定程度上防止过拟合。 池化层一般有两种方式实现, 平均值池化与最大值池化, 如果选用的是2×2池化窗, 则池化后图像大小为原来的1/4。 图1中池化层的输出用F表示, 将F中的像素按行展开为F1作为全连接层的输入, 全连接层的输出用F2表示, 即可作为分类结果。 F1与F2的节点之间两两互连, 是计算量最大、 参数最多的部分。

图4 基于FPGA卷积神经网络模型基础模块连接图

Fig.4 Connection diagram of basic modules of CNN on FPGA

位一直走到窗户旁边,再走回来。我按他的话向前走,心里却十分尴尬。他斜靠在椅背上,手掌托着下巴,神情十分严肃。走完一个来回后,我又重新站到他的面前,然而他一句话也没说。为了掩饰我的窘态,我的眼睛一直没从放在那张空椅下的鞋子上移开。

图5 卷积层基础模块内部数据流示意图

Fig.5 Data flow diagram inside the convolutional layer module

池化层基础模块中设计两种计算方式, 可根据配置选项激活两个模块:取最大值模块或求平均值模块。 图6所示为池化层基础模块内部框图, 取最大值操作由比较器组多次比较完成, 求平均值操作由输入数据与常数乘加得到, 如求平均值操作的采样窗大小为2×2, 则常数取1/4。

四川省安岳县是国内柠檬主要种植区,当地柠檬种植面积占当地耕地面积的35%。目前主要是2014年-2015年新种植的柠檬,到2019年到达盛果期。现阶段,柠檬种植户刚开始见到收益,故用肥积极性比去年略高。有经销商反映,当地零售商多销售常规肥料,很少销售有机肥,这便给部分销售有机肥的忽悠团以可乘之机。忽悠团销售的有机肥价格比正规有机肥低很多,但农民不会识别有机肥的品质,在忽悠团忽悠下就会购买,但这种有机肥水分控制得不好,盐分也超标,农民施用过后会出现果树黄化现象。农民发现上当后,早已不见忽悠团的身影,农民无处投诉,忽悠团正是看到这一点,故能一直逍遥法外。

图6 池化层基础模块内部框图

Fig.6 Block diagram inside the pooling layer module

f =bias + ∑mn (pixel mn ×weight mn )

图7 全连接层基础模块内部框图

Fig.7 Block diagram inside the full connection module

2.2 卷积神经网络模型的设计优化

基于FPGA的卷积神经网络主要完成正向推理过程, 片上存储器存有大量训练完成的参数。 随着卷积神经网络规模不断扩大, 参数数目成倍增加, 运算操作也随之增加, 图8所示为统计的多种深度卷积神经网络(DCNN)随着层数增加的参数数目与操作数目的对比图[8]。 实现较大规模的卷积神经网络对于FPGA有限的存储与逻辑资源来说是巨大的挑战。 为了解决这个问题, 可以尝试多种优化方式[9]

从上述过程可以看出, 卷积神经网络是一种前馈网络, 数据流向稳定向前, 未形成环路。 卷积神经网络中参数的初始值需满足高斯分布, 目前常用的训练过程采用反向传播(BP)算法, 需要上万张训练图像迭代更新。

图8 不同结构的深度卷积神经网络复杂度对比

Fig.8 Complexity comparison of different DCNN

首先, 在网络准确率变化不大的情况下, 可以通过降低参数精度的方式减少参数占用的存储资源。 软件中训练卷积神经网络均采用浮点型参数, 而在FPGA中, 做浮点运算比做定点运算消耗更多的硬件资源与功耗, 可将卷积神经网络算法中的浮点型参数转化为定点型参数。 中科院计算所在文献[10]中统计过卷积神经网络分别采用浮点型与定点型参数时对MNIST手写数字库的识别错误率, 表1所示为定点小数运算对MNIST测试集错误率的影响, 第一行为对照行, 从表中可以得知若训练时的数据保持浮点型, 测试时的数据为定点16位和定点32位时错误率并无变化, 故可将FPGA中存储的数据更换为16位定点型[11]。 当网络模型确定后, 可以在定点型参数的基础上继续压缩数据位宽来观察网络最终的正确率变化, 由此选择最适合网络模型的参数位宽。

在岩土工程勘察过程中,通过对地形的评估,可以总结影响工程的质量因素,为工程平面图的绘制提供参考依据。利用岩土工程勘察的一些技术方法,可以较精确地计算地层的承载力,若地基承载力可以满足工程的建设需要,则无需对地基进行处理,如果不能满足,施工方需要采取有效方法和措施对地基进行处理,从而提高地基承载力,从根本上保证建筑的施工质量。此外,由于地下水也会对地基的稳定性和承载力有一定的影响,因此,进行岩土工程勘察时,还要明确地下水的相关信息,从而防止地下水影响建筑物地基基础的稳定性。

除了压缩参数位宽降低精度之外, 还可以通过增加参数“0”值的比例, 选择性地屏蔽乘法运算, 优化资源配置, 从而减少FPGA运行功耗。 图9所示为一个小型卷积神经网络模型, 包括一层卷积池化层与两层全连接层, 在对MNIST数据库训练完成后, 得到网络中所有参数的密度分布函数图如图10所示, 图中显示几乎所有参数都在“0”值附近, 如果将“0”值邻域的值近似取“0”, 即可大大提高网络参数中“0”值比例。

(1)头部摆动频率:将秀丽隐杆线虫置于含有60 μL M9缓冲液的载玻片上,等待其经过1 min的适应,行为恢复稳定后,在体视显微镜下观察并记录秀丽隐杆线虫的头部摆动频率。每个浓度测量20条秀丽隐杆线虫。头部摆动频率的标准为1 min内头部从一侧摆到另一侧再摆回来的次数。

卷积层基础模块的设计受2016年在ISSCC和ISCA两个会议上广泛好评的Eyeriss[6]设计的启发, 该设计的巧妙之处在于对数据流的控制, 图5所示为一个卷积层基础模块, 由处理单元(PE)阵列组成, PE实际上是一个乘加器, 每行PE横向自左向右接收特征窗中的一行特征值, 斜向自下而上接收输入图像的像素值, 每个PE完成k 组乘加运算, 将结果传入同列的上层PE中相加, 每列累加后的结果由第一层PE输出为部分和(P sum), 对应卷积操作后输出的一个像素。 该设计将数据与权重互配合输入PE, 并行计算多次滑动卷积结果。 本设计也采取了这种数据流控制方式, 但是区别在于每列PE单独采用一个加法器得到P sum,节省了加法器个数, 假设阵列每列由k 个PE组成,则完成一次运算较Eyeriss设计节省个时钟周期。 每个卷积层基础模块C中存储一个特征窗的所有参数, 同一幅图像数据流同时送入本层所有C中, 与C中存储的特征参数做卷积操作, 由于多个特征窗对同一幅图像的卷积操作互不影响, 故采用并行设计完成。

表1 定点小数运算对MNIST测试集错误率的影响

Table 1 Effects of fixed-point decimals on MNIST

图9 小型卷积神经网络模型

Fig.9 Model of a small-scale CNN

图10 小型卷积神经网络中参数密度分布函数图

Fig.10 Density distribution function diagram of all parameters in a small-scale CNN

卷积神经网络中常用的激活函数ReLu也有相似功能, 数据经过ReLu函数后小于“0”的参数做归零处理, 因此会得到大量的“0”值参与后续计算。 当数据和参数进行乘法操作之前, FPGA先判定数据或参数是否为“0”, 若为“0”, 则旁路乘法器直接输出“0”值结果。

3 仿真验证及硬件综合

为了验证本设计的正确性, 基于Xilinx公司Virtex-7系列的XC7V2000TFLG1925芯片搭建如图9所示的小型卷积神经模型。 图11所示为卷积层、 全连接层与网络分类结果的输出波形。

3例术中出现导丝断裂,其中2例螺钉退出时断裂导丝一并旋出,1例无法取出留于椎体内。1例术中术野有新鲜血液喷出,立即暂停手术,抗休克治疗,患者病情稳定后行术中造影,证实为腹主动脉损伤、假性动脉瘤形成,破口较小,未进行翻修,术后随访1年未见假性动脉瘤增大。3例攻丝扩大钉道时出现清亮脑脊液漏,调整钉道并置入椎弓根螺钉后未见脑脊液漏,未进一步处理,愈后良好。

图11 小型卷积神经网络运行MNIST的波形仿真图

Fig.11 Waveform simulation of a small-scale CNN on MNIST

输入一张测试图片, 输出时系统以一个10 bit数据表示数字0~9十个分类。 表2所示为处理一张图片各层花费的网络时钟周期数。

表2 网络中各层在FPGA上运行的时钟周期数

Table 2 Numbers of clock cycles in every layer on FPGA

搭建的小型卷积神经网络中包含参数约29万个, 按照2.2节中描述的优化方式对整个网络中的系数进行优化, 建立旁路乘法器, 将所有参数由16 bit半精度浮点型压缩为8 bit定点型, 网络准确度在原先97.4%的基础上损失约1.8%。 综合后统计资源与功耗, 优化前后整个网络的资源占有率对比如图12所示, 静态功耗与动态功耗比如图13所示。 可以看到优化后, LUT资源减少约34.9%, BRAM资源减少约38.7%, 静态功耗降低约15.7%, 动态功耗降低约60.9%。

图12 优化前后网络占用资源对比图

Fig.12 Comparison of hardware resources before and after optimization

图13 优化前后网络功耗使用对比图

Fig.13 Comparison of power consumption before and after optimization

4 结 论

本文构建一种基于FPGA的卷积神经网络模型设计方法, 并提出了优化方案。 在Xilinx公司Virtex-7系列的XC7V2000TFLG1925芯片上构建了一个小型卷积神经网络, 通过波形仿真验证了其功能的正确性, 进行综合后比较了优化前后的资源及能耗情况。 结果表明, 可以使用该设计方法在FPGA上实现卷积神经网络, 且优化方案可行, 在降低硬件资源占有率的同时降低了静态与动态功耗, 适用于便携式智能武器装备。

但是, 智能武器装备的发展需求在不断更新, 卷积神经网络的算法优化也在不断改进, 目前一些表现优异的算法在传统卷积神经网络的基础上增加了特殊功能层, 轻量化网络也在不断发展, 所以卷积神经网络在FPGA上的映射方式仍需进一步研究。

参考文献:

[1] 马晓平, 赵良玉. 红外导引头关键技术国内外研究现状综述[J]. 航空兵器, 2018(3):3-10.

Ma Xiaoping, Zhao Liangyu. An Overview of Infrared Seeker Key Technologies at Home and Abroad[J]. Aero Weaponry, 2018(3): 3-10. (in Chinese)

[2] Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks[C]∥ Proceedings of the 25th International Conference on Neural Information Processing Systems, 2012:1097-1105.

[3] 胡仕友, 赵英海. 导弹武器智能精确制导技术发展分析[J]. 战术导弹技术, 2017(2):1-6.

Hu Shiyou, Zhao Yinghai. Analysis on the Development of Intelligent Precision Guidance Technology for Missile Weapons[J]. Tactical Missile Technology, 2017(2): 1-6. (in Chinese)

[4] 熊俊辉, 舒孟炯, 秦建飞, 等. 导弹智能化技术及作战模式探讨[J]. 飞航导弹, 2017(4):3-5.

Xiong Junhui, Shu Mengjiong, Qin Jianfei, et al. Discussion on Missile Intelligent Technology and Operational Mode [J]. Aerodynamic Missile Journal, 2017(4): 3-5. (in Chinese)

[5] Lécun Y, Bottou L, Bengio Y, et al. Gradient-Based Learning Applied to Document Recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324.

[6] Chen Y H, Emer J, Sze V. Eyeriss: A Spatial Architecture for Energy-Efficient Dataflow for Convolutional Neural Networks[C]∥ 43rd ACM/IEEE International Symposium on Computer Architecture, Seoul, 2016: 367-379.

[7] 丁晓彤. 基于FPGA的可配置神经网络全连接层设计及参数压缩[D]. 西安:西安交通大学, 2017:23-31.

Ding Xiaotong. Full Connection Layer Design and Parameters Compression for FPGA-Based Reconfigurable Convolutional Neural Network [D]. Xi’an: Xi’an Jiaotong University, 2017: 23-31. (in Chinese)

[8] Shin D, Lee J M, Lee J S, et al. 14.2 DNPU: An 8.1 TOPS/W Reconfigurable CNN-RNN Processor for General-Purpose Deep Neural Networks[C]∥IEEE International So-lid-State Circuits Conference, San Francisco, 2017: 240-241.

[9] Cong J, Xiao B J. Minimizing Computation in Convolutional Neural Networks[C]∥ 24th International Conference on Artificial Neural Networks, Hamburg, 2014: 281-290.

[10] Chen Tianshi, Du Zidong, Sun Ninghui, et al. DianNao: A Small-Footprint High-Throughput Accelerator for Ubiquitous Machine-Learning[J]. ACM SIGPLAN Notices, 2014, 49(4): 269-284.

[11] Lin D D, Talathi S S, Annapureddy V S. Fixed Point Quantization of Deep Convolutional Networks[C]∥Proceedings of the 33rd International Conference on Machine Learning, 2016, 48:2849-2858.

Design of FPGA -Based Convolutional Neural Network Model

Ding Xiaotong1*, Xu Pei1, 2, Ren Pengju3

(1. China Airborne Missile Academy, Luoyang 471009, China; 2. Aviation Key Laboratory of Science and Technology on Airborne Guided Weapons, Luoyang 471009, China; 3. Xi’an Jiaotong University, Xi’an 710000, China)

Abstract : Recently, intellectualization of weapon equipment has become a development trend. Convolutional neural network (CNN) has demonstrated extraordinary performance in image classification, target detection and tracking tasks. Therefore, applying CNN algorithm to weapon equipment can improve the ability of object identification and anti-interference in complex environment. In this paper, a design method of FPGA-based convolutional neural network model is presented, and the function is verified on the Xilinx Virtex-7 series FPGA. The model is reconfigurable and flexible, which has strong transplant ability and wide application range.

Key words : intellectualization; object identification; convolutional neural network; FPGA; weaponry equipment

中图分类号: TJ760.1; TP18

文献标识码: A

文章编号: 1673-5048(2019)02-0015-06

收稿日期: 2018-12-10

作者简介: 丁晓彤(1991-), 女, 河南洛阳人, 硕士, 研究方向为机器学习及信息处理系统设计。* E- mail: dingxiaotong1213@163.com

引用格式: 丁晓彤, 徐佩, 任鹏举. 一种基于FPGA的卷积神经网络模型设计[ J]. 航空兵器, 2019, 26( 2):15-20.

Ding Xiaotong, Xu Pei, Ren Pengju. Design of FPGA-Based Convolutional Neural Network Model[ J]. Aero Weaponry, 2019, 26( 2):15-20.( in Chinese)

DOI :10.12132/ISSN.1673-5048.2018.0073

标签:;  ;  ;  ;  ;  ;  ;  ;  

一种基于FPGA的卷积神经网络模型设计论文
下载Doc文档

猜你喜欢