丁晓彤 徐佩 任鹏举
关键词: 智能化; 目标识别; 卷积神经网络; FPGA; 武器装备
中图分类号: TJ760.1; TP18 文献标识码: A 文章编号: 1673-5048(2019)02-0015-06
0 引 言
卷积神经网络算法是一种高效识别分类算法, 起源于1962年, Hubel和Wiesel在研究猫视觉皮层细胞时发现其独特的网络结构, 提出了感知野(Receptive Field)的概念。 1984年日本学者Fukushima基于感知野的概念提出了神经认知机(Neocognitron), 可以认为是第一个卷积神经网络[1]。 2012年, Alex Krizhevsky提出了一种卷积神经网络算法结构Alex_Net, 在大规模视觉识别挑战(LSVRC)分类赛上取得了惊人的成绩, 开启了卷积神经网络的研究热潮[2]。 作为人工智能领域机器学习分支中的重要算法, 卷积神经网络近年来已经在多媒体与智能产业中占据优势地位, 在图像识别、 目标分类等方面表现优异。
在军事上, 随着战场的复杂态势逐步升级, 武器装备需要提升其在复杂战场环境下的精确目标识别与抗干扰能力。 针对这个需求, 可以将卷积神经网络算法应用于武器装备, 利用其出色的目标识别与分类能力提升武器裝备的性能, 促进武器装备智能化发展。 目前很多国家都在进行智能武器研究, 美国研制的远程反舰导弹LRASM被称为“人工智能导弹”, 具有末端虚假目标剔除与高价值目标识别锁定的能力[3]; 挪威的NSM反舰导弹装备有双频智能红外成像导引头, 能够区分出中立目标与敌方目标[4]。 锁定目标与辨别敌我均可以通过卷积神经网络算法实现, 可见卷积神经网络在军事领域应用的重要性与必要性。 考虑到武器装备的体积、 功耗与实时性的要求, 传统的CPU或GPU将很难满足这些需求。 FPGA是一种现场可编程门阵列, 具有丰富的逻辑门资源, 以并行运算为主, 采用硬件描述语言实现, 具有低功耗、 高速、 高灵活性等优势, 可以快速进行硬件的功能验证和评估, 加快设计迭代速度, 是卷积神经网络算法在智能武器上实现的一种较好方式。
本文探讨了一种基于FPGA的卷积神经网络模型设计方法, 并针对智能武器的低功耗需求提出该模型的优化方式。
1 卷积神经网络
1.1 卷积神经网络算法基本原理
图1所示为卷积神经网络算法流程示意图, 从
左至右依次为网络的输入图像、 卷积层、 池化层以及全连接层, 最终输出的是若干分类结果。 卷积神经网络的输入可以是图像的像素, 而不用经过其他操作, 因此, 在图像处理领域运用十分广泛。
假设输入图像为单通道灰度图像, 用P表示, 特征窗滑动步长为1, 对P进行卷积操作, 每次卷积操作可表示为
f=bias + ∑m∑n ( pixelmn × weightmn)
式中: f 为该卷积层输出图像C上的一个像素值; bias为每个特征窗中特定的偏置值; m, n分别为特征窗的长和宽。 卷积操作利用局部感知原理, 在保持像素空间位置信息的同时减少了参数的数量, 卷积后输出图像C, 作为池化层的输入。 池化层又叫采样层, 主要作用是将图像进行采样、 压缩和聚拢, 以减少后面网络的计算量, 同时在一定程度上防止过拟合。 池化层一般有两种方式实现, 平均值池化与最大值池化, 如果选用的是2×2池化窗, 则池化后图像大小为原来的1/4。 图1中池化层的输出用F表示, 将F中的像素按行展开为F1作为全连接层的输入, 全连接层的输出用F2表示, 即可作为分类结果。 F1与F2的节点之间两两互连, 是计算量最大、 参数最多的部分。
从上述过程可以看出, 卷积神经网络是一种前馈网络, 数据流向稳定向前, 未形成环路。 卷积神经网络中参数的初始值需满足高斯分布, 目前常用的训练过程采用反向传播(BP)算法, 需要上万张训练图像迭代更新。
1.2 卷积神经网络的经典结构
目前人工神经网络的实现多集中于软件领域, 工程师们开源了一些卷积神经网络的软件平台, 如Caffe, Tensorflow等, 这些平台可以搭建不同结构的卷积神经网络并完成训练与推理。 近年来新的网络结构层出不穷, 而大多数网络都是在经典网络上改进的, 一种经典的卷积神经网络结构是1986年由Partrick Haffner提出的LeNet-5, 图2所示为LeNet-5算法结构图[5], 包括两层卷积层、 池化层和两层全连接层。
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的体系结构, 包括八层结构(五层卷积层和三层全连接层)。
2 卷积神经网络模型的FPGA设计实现
卷积神经网络中的卷积层以局部感知、 权值共享的方式减少了参数数量, 是卷积神经网络的优势所在, 映射在FPGA上需要保留这种权值共享的模式。 而全连接层参数量、 计算量较大, 用FPGA实现时占用的资源过多, 是后续优化系统的关键部分。 由于不同网络结构中输入图像大小、 卷积窗大小、 个数等均有不同, 本设计是一种基于FPGA的可重构、 可配置的卷积神经网络模型设计, 根据配置参数的不同完成不同卷积神经网络结构在FPGA上的映射。
2.1 卷积神经网络模型的设计实现
设计的基本思路是依据卷积神经网络算法的功能层设计每层对应的基础模块, 通过配置参数将这些基础模块例化组合, 实现各个功能层的功能。 图4为一个基于FPGA的卷积神经网络模型各层基础模块连接图, C为卷积层基础模块, P为池化层基础模块, F为全连接层基础模块, 图中模型为两层卷积层和一层全连接层, 可通过配置参数调整网络层数及每层基础模块个数。
卷积层基础模块的设计受2016年在ISSCC和ISCA两个会议上广泛好评的Eyeriss[6]设计的启发, 该设计的巧妙之处在于对数据流的控制, 图5所示为一个卷积层基础模块, 由处理单元(PE)阵列组成, PE实际上是一个乘加器, 每行PE横向自左向右接收特征窗中的一行特征值, 斜向自下而上接收输入图像的像素值, 每个PE完成k组乘加运算, 将结果传入同列的上层PE中相加, 每列累加后的结果由第一层PE输出为部分和(Psum), 对应卷积操作后输出的一个像素。 该设计将数据与权重互配合输入PE, 并行计算多次滑动卷积结果。 本设计也采取了这种数据流控制方式, 但是区别在于每列PE单独采用一个加法器得到Psum, 节省了加法器个数, 假设阵列每列由k个PE组成,则完成一次运算较Eyeriss设计节省[(k-1)- k ]个时钟周期。 每个卷积层基础模块C中存储一个特征窗的所有参数, 同一幅图像数据流同时
送入本层所有C中, 与C中存储的特征参数做卷积操作, 由于多个特征窗对同一幅图像的卷积操作互不影响, 故采用并行设计完成。
池化层基础模块中设计两种计算方式, 可根据配置选项激活两个模块: 取最大值模块或求平均值模块。 图6所示为池化层基础模块内部框图, 取最大值操作由比较器组多次比较完成, 求平均值操作由输入数据与常数乘加得到, 如求平均值操作的采样窗大小为2×2, 则常数取1/4。
全连接层的特点是参数数目巨大, 在含有全连接层的模型中, 全连接层参数可以占到整个网络参数的90%以上, 所以目前卷积神经网络优化的手段主要从全连接层入手。 全连接层设计思想与卷积层和池化层相同, 设计全连接层基本模块, 其中输入、 输出端口个数和位宽均可以通过参数 进行配置[7]。 图7所示为全连接层基本模块的内
部结构, 包括存储模块、 基本列模块与地址计数器模块。 存储模块中两个SRAM分别存有训练好的神经网络权重值和偏置值, 通过地址计数器模块控制读取。 基本列模块中包含若干个计算单元,
进行输入数据与对应权重与偏置值的乘加运算。 每个全连接层基本模块得到该全连接层的一个运算结果, 由于全连接层的每个运算结果都涉及该层所有的输入数据, 故从图4中可以看到, 全连接层中每个基础模块F的输入都来自所有池化层基础模块P, 通过数据流控制确保每个全连接层基础模块都能接收到上层所有输出数据。
2.2 卷积神经网络模型的设计优化
基于FPGA的卷积神经网络主要完成正向推理过程, 片上存储器存有大量训练完成的参数。 随着卷积神经网络规模不断扩大, 参数数目成倍增加, 运算操作也随之增加, 图8所示为统计的多种深度卷积神经网络(DCNN)随着层数增加的参数数目与操作数目的对比图[8]。 实现较大规模的卷积神经网络对于FPGA有限的存储与逻辑资源来说是巨大的挑战。 为了解决这个问题, 可以尝试多种优化方式[9]。
首先, 在网络准确率变化不大的情况下, 可以通过降低参数精度的方式减少参数占用的存储资源。 软件中训练卷积神经网络均采用浮点型参数, 而在FPGA中, 做浮点运算比做定点运算消耗更多的硬件资源与功耗, 可将卷积神经网络算法中的浮点型参数转化为定点型参数。 中科院计算所在文献[10]中统计过卷积神经网络分别采用浮点型与定点型参数时对MNIST手写数字库的识别错误率, 表1所示为定点小数运算对MNIST测试集错误率的影响, 第一行为对照行, 从表中可以得知若训练时的数据保持浮点型, 测试时的数据为定点16位和定点32位时错误率并无变化, 故可将FPGA中存储的数据更换为16位定点型[11]。 当网络模型确定后, 可以在定点型参数的基础上继续压缩数据位宽来观察网络最终的正确率变化, 由此选择最适合网络模型的參数位宽。
除了压缩参数位宽降低精度之外, 还可以通过增加参数“0”值的比例, 选择性地屏蔽乘法运算, 优化资源配置, 从而减少FPGA运行功耗。 图9所示为一个小型卷积神经网络模型, 包括一层卷积池化层与两层全连接层, 在对MNIST数据库训练完成后, 得到网络中所有参数的密度分布函数图如图10所示, 图中显示几乎所有参数都在“0”值附近, 如果将“0”值邻域的值近似取“0”, 即可大大提高网络参数中“0”值比例。
卷积神经网络中常用的激活函数ReLu也有相似功能, 数据经过ReLu函数后小于“0”的参数做归零处理, 因此会得到大量的“0”值参与后续计算。 当数据和参数进行乘法操作之前, FPGA先判定数据或参数是否为“0”, 若为“0”, 则旁路乘法器直接输出“0”值结果。
3 仿真验证及硬件综合
为了验证本设计的正确性, 基于Xilinx公司Virtex-7系列的XC7V2000TFLG1925芯片搭建如图9所示的小型卷积神经模型。 图11所示为卷积层、 全连接层与网络分类结果的输出波形。
搭建的小型卷积神经网络中包含参数约29万个, 按照2.2节中描述的优化方式对整个网络中的系数进行优化, 建立旁路乘法器, 将所有参数由16 bit半精度浮点型压缩为8 bit定点型, 网络准确度在原先97.4%的基础上损失约1.8%。 综合后统计资源与功耗, 优化前后整个网络的资源占有率对比如图12所示, 静态功耗与动态功耗比如图13所示。 可以看到优化后, LUT资源减少约34.9%, BRAM资源减少约38.7%, 静态功耗降低约15.7%, 动态功耗降低约60.9%。
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. GradientBased 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 EnergyEfficient 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 FPGABased Reconfigurable Convolutional Neural Network [D]. Xian: Xian 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 CNNRNN Processor for GeneralPurpose Deep Neural Networks[C]∥IEEE International SolidState 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 SmallFootprint HighThroughput Accelerator for Ubiquitous MachineLearning[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.