APP下载

孪生网络跟踪算法并行计算结构研究

2021-04-07卢金仪唐维伟徐文辉颜露新

测控技术 2021年3期
关键词:功耗嵌入式尺度

卢金仪, 唐维伟, 徐文辉, 颜露新, 钟 胜, 邹 旭

(1.华中科技大学 人工智能与自动化学院,湖北 武汉 430074;2.华中科技大学 多谱信息处理技术国家级重点实验室,湖北 武汉 430074)

随着人工智能及计算机视觉[1]等技术的发展,卷积神经网络被逐渐应用在目标跟踪任务中。目标跟踪的主要流程包括候选预测、特征提取、模板表征和建模求解。在建模求解的步骤中,按照所采取的建模技术将目标跟踪算法大致分为两大类:生成式方法和判别式方法[2]。传统的判别式模型在特征提取步骤中,主要提取的是人工定义并构建的特征,常用的人工定义特征包括:HOG特征、SIFT特征、Haar特征等。在统计建模步骤中,使用支持向量机、Boosting算法等常见分类器对目标和背景两者进行区分,得到跟踪结果。得益于卷积神经网络特征的强大表征能力,传统人工定义特征逐渐替换为卷积特征,基于卷积神经网络的跟踪框架的一个重要方向便是孪生网络跟踪框架。其中全卷积网络 Siamese-FC由Bertinetto等[3]提出,这种端到端网络参数量小,在前向推理时有较快的跟踪效果,同时网络可以将一部分工作离线解决,在将算法部署于嵌入式设备时,只需要计算搜索区域的前向推理部分,减少了在线跟踪的计算量,因此轻量化的孪生网络在嵌入式部署时有快速和低计算量的优势。

卷积网络强大的特征提取和泛化能力是以大参数量以及计算量为代价的,如常用的网络框架AlexNet[4]的计算量达到了727MFLOP,VGG-16[5]的计算量达到了16GFLOP。如此大的计算量和参数量对嵌入式平台部署应用造成压力,为满足多场景下嵌入式平台网络推理的需求,提出一种硬件部署方案十分必要。目前主要的边缘端解决方案使用的芯片有ASIC[6]、SoC以及FPGA。相较于专用ASIC或者SOC器件,FPGA的可重构特性使电路能根据实际情况灵活配置。

FPGA上的卷积加速研究主要在提高运算的并行度上,卷积可以展开的并行类型[7]有输入通道并行、输出通道并行、特征图并行和卷积核并行,Qiu等[8]根据卷积的滑窗过程设计了line-buffer结构实现卷积运算,但时钟频率很难提高。Gokhale等[9]根据卷积计算过程设计了脉动阵列结构实现卷积运算,提高时钟频率,但存在乘法器利用率不足的问题。Zeng等[10]使用离散傅里叶变换将卷积的计算过程转换成频域的点积计算。离散傅里叶变换在卷积模板的尺寸大于5×5的情况下可以大量减少计算量。除结构设计外,在嵌入式平台的边缘计算场景,网络的轻量化工作尤为重要,网络量化的思想在于将网络计算中的浮点数运算转换为定点数运算[11]或设计轻量化的网络结构[12],减少计算资源消耗。Gysel等[13]提出了Ristretto框架来近似网络模型,通过分析模型中的卷积层和全连接层中权重和输出特征图的数据分辨率,将浮点数转为低bit整数,但该操作较为复杂,增加了开发时间。

立足于以上研究,使用基于KL相对熵的量化方案减少目标跟踪算法Siamese-FC计算量,并根据算法特点及FPGA结构特点,设计不同方式并行度的组合,提高嵌入式平台部署神经网络对复杂背景场景目标进行跟踪的算法效率。实验结果与CPU前向推理相比,在保证精度的同时,提升了运行速度,降低了功耗,得到了较好的加速效果。

1 资源约束下跟踪算法分析

1.1 Siamese-FC网络的计算结构

Siamese-FC网络的流程如图1所示,网络有两个输入x和z,其中z表示大小为127×127的目标模板图像,x表示大小为255×255待搜索区域图像。将两个输入送入两个共享权值的特征提取网络φ,该网络φ是在AlexNet的基础上去掉计算量大的全连接层结构构成的,在Siamese-FC网络模型中特征提取网络φ采用的是全卷积神经网络,将两个输入项x和z以相同的方式提取特征,得到22×22×128的x的网络特征和6×6×128的z的网络特征,并将两个输出的特征通过卷积运算获得最后的17×17×1的置信得分图,目标区域会得到高分,而非目标区域将会得到低分,故只要比较计算置信得分图之中得分最高的位置,并通过插值的方式获得疑似目标位置区域。

Siamese-FC网络的结构分为两路全卷积网络,其中输入目标模板一路的网络前向推理可以离线计算,同时,网络最后的卷积操作也可以在嵌入式平台以外操作,因此,在嵌入式平台中可以只计算输入待搜索区域图一侧的网络前向推理过程。

1.2 Siamese-FC网络的计算复杂度

在卷积网络中,一般是通过由卷积层—BN层—激活层—池化层—…—卷积层—BN层—激活层—池化层—全连接层的基本形式组合成,其中卷积层作为主要计算流程,计算量和存储量都是整个网络中占比最大的部分,可以通过计算卷积层的存储资源要求和计算资源要求,对Siamese-FC网络的计算量和存储量有一个直观的认识,以及为后续在有限资源的嵌入式平台部署时提供参考。表1是根据Siamese-FC网络的计算过程得到的各卷积层的计算量以及存储量需求。

表1 Siamese-FC网络各个卷积层的计算量与存储量

ZYNQ系列FPGA芯片XC7Z045的片上缓存资源Block RAM为19.2 MB,乘法器资源DSP48的数量为900个, Siamese-FC网络最大单层权重参数的存储量超过了40 MB,是XC7Z045芯片片上缓存容量的两倍,计算量最大的层达到了998M次乘法和938M次加法,而一个DSP48资源在一个时钟周期之内只能进行一次25 bit×18 bit的乘法和一次48 bit的加法。由此可见为了能将其部署在嵌入式平台上,需要大容量外部缓存如DDR缓存权重参数和输入输出特征图,同时需要对网络进行定点量化处理,减少网络的计算量。

2 跟踪算法的ZYNQ部署实现

2.1 卷积网络部署重点分析与软硬件规划

卷积网络部署有两个重点,第一点是前向推理计算的实现,其中包括了卷积层、池化层、BN层、激活层等,根据计算特性设计成不同的计算IP,最后整合成一个前向计算的IP;第二点则是图像数据流的控制,其包括了数据的输入、输出以及数据的存储,这部分的实现重点在于通信协议的使用和存储器的结构。

根据卷积网络算法部署的这两个重点,为了简化数据流通信协议的使用以及简化存储器的读写控制逻辑,本文以ZYNQ作为硬件部署的平台,将数据流输入输出的控制以及存储器的读写控制任务交给ZYNQ系统侧,而可编程逻辑部分主要负责前向网络结构的硬件实现。

基于ZYNQ的卷积网络硬件部署的整体架构如图2所示,整个系统的数据流输入与输出、外部存储器的读写控制、前向网络结构的硬件实现均在ZYNQ上实施,使用外部存储器DDR器件作为缓存,用于算法的前向计算流程获取数据。ZYNQ系列FPGA系统侧(PS侧)以ARM作为中心器件,主要负责通过发布指令来实现数据调度;可编程逻辑部分(PL侧)则负责卷积加速器的实现和生成作为中间缓存的片上RAM,其中卷积加速器根据可编程逻辑器件并行计算的结构,可设计为多个基本处理单元PE。

2.2 Siamese-FC网络的定点量化

定点量化指使用一个低比特定点数表示原来的浮点数,达到减少计算量、提高计算效率的目的。

量化算法的本质是将一组一定范围内的浮点数映射到另一组一定范围的数中,也就是等比例缩放。映射方案以是否以零点为对称点分为对称量化和非对称量化。非对称量化方式相对于对称量化方式来说,不仅在单个浮点数量化时要复杂,同时将量化应用在浮点数的四则运算中也相对复杂,因此本文采用对称量化。设浮点数集合F*(其中任意元素F∈[Fmin,Fmax])量化到[Qmin,Qmax],量化后F对应的值为Q,则式(1)为对称量化公式。

(1)

式中,S为量化系数。

对称量化中,又分为极值量化与饱和量化。若数据分布均匀,则直接采用极值量化即可;若数据不均匀,则需要采用饱和量化,找到合适的阈值对数据进行饱和裁剪。两种量化方式的计算方式如图3所示。

图3 两种对称量化的量化方法

在实际应用中,数据的分布并不是均匀的,且映射过程中精度损失客观存在,如果集合中存在一些噪声值,采用极值量化会使映射前后的两个集合的分布相差较大,因此采用阈值量化的方式对卷积网络进行量化。本文采用KL相对熵方式[14]对量化前后分布进行差异程度计算,以此找到合适的阈值。

设两个大小都为X的有序集合F*和Q*,它们中的元素一一对应且任意两个相对应的元素能且仅能被x(x∈{1,2,…,X})索引到,记DKL(F*||Q*)为F*对Q*的相对熵,则DKL(F*||Q*)的计算公式如下:

(2)

其中对数函数可以为任意底,因为式(2)一般用在目标函数中,DKL(F*‖Q*)越小说明两个集合的分布差异越小。

具体量化流程为:

① 求出F*中的极值|Fmax|;

③ 得到最低相对熵的阈值T即为最优阈值。

2.3 基于通道并行的卷积层加速架构设计

卷积网络算法计算量和数据量大,其中计算量比重最高的层为卷积层,同时由于卷积层的部分连接和权重共享特性,其计算是可以并行的,故网络前向推理的硬件实现部分是在PL侧完成硬件加速。

将Siamese-FC网络硬件部署的卷积层结构首层并行度设计为4×16,结合输入特征图通道并行与输出特征图通道并行;后续层并行度为16×16,结合输入特征图通道并行与输出特征图通道并行。首层卷积层的结构和后续卷积层的结构如图4所示。

图4 卷积层卷积并行计算结构

图4中首层卷积层Tn=4、Tm=16,后续卷积层Tn=16、Tm=16。并行卷积模块实际就是并行乘法计算部分,文章设计的并行卷积模块结构为树状结构,并行卷积模块中的PE指的是基本处理单元(Processing Element),树状结构的并行卷积模块的PE也是树状的,结构如图5所示。由于树状结构并行卷积模块PE内部的累加树的存在,在加法计算数量不变的情况下,将计算多次加法的时间复杂度降为了O(logn),所以树状结构的并行卷积模块计算速度较快。

图5 并行卷积模块结构图

2.4 系统侧数据调度设计

为了PL侧并行计算模块的高效运行,需要一个合理的数据调度,对于ZYNQ系列FPGA 来说,数据调度的部分可以设计在PS侧,PS侧数据调度的对象包括PL侧卷积网络硬件加速核、SD卡、DDR和HDMI。PS侧数据调度的具体流程主要包含以下步骤。

① 初始化。从SD卡中初始帧读取目标的初始尺度信息和位置信息,并读取离线计算好的目标模板的Siamese-FC网络输出特征图。读取Siamese-FC网络的权重参数、偏置参数和量化参数并放入对应的DDR地址区域。

② 从SD卡中读取下一帧完整图像,以上一帧的尺度信息和位置信息为中心,扩大和缩小各获得一个尺度的搜索区域,加上原本尺度信息的搜索区域,一共3个尺度的搜索区域,这3个尺度的尺度因子分别为0.985,1,1.015。截取这3个尺度的图像并将其插值成255×255作为待搜索区域图像。

③ 将一张待搜索区域图放入首层卷积层的输入特征图的DDR地址区域。

④ 通过给卷积网络加速核配置当前卷积层层数、卷积并行度、是否有池化层等参数,卷积网络加速核就会在对应卷积层输入特征图DDR地址区域和权重参数的DDR地址区域读取数据,并将卷积层输出特征图写入对应DDR地址区域。

⑤ 重复步骤④直到结束卷积网络前向推理计算。

⑥ 重复步骤③、步骤④、步骤⑤直到3个尺度待搜索区域计算完前向推理计算,得到3张17×17响应得分图。

⑦ 将响应得分图乘以汉明窗,比较出最大的响应值,最大响应值对应的尺度就是当前帧尺度信息,将当前帧尺度的17×17的得分图插值回原来的255×255并除以尺度值,最大响应值对应的位置就是当前帧位置信息。

⑧ 将尺度信息和位置信息映射回原图,标出目标框后,将图像输出到HDMI。

⑨ 回到步骤②。

3 实验结果

3.1 量化结果分析

实验在CPU配置为i5 3470 @ 3.20 GHz 4核、开发环境为Visual Studio 2019的条件下,使用C++语言实现浮点数计算的Siamese-FC网络,以及使用量化方案后以short类型计算的Siamese-FC网络。

本实验采用目标跟踪标准数据集[15],该数据集为目标跟踪中背景复杂场景、光照变化场景、快速运动场景、尺度变化场景等的测试序列图。选取该数据集中的4个测试序列,其图像大小和数据集特点如表2所示。

表2 测试图像序列

分别将4组测试序列的量化前后跟踪结果以坐标信息与尺度信息的形式存储下来,计算各组测试序列图量化前后的平均交并比(Intersection-Over Union,IOU),实验结果如表3所示。

在上述4个数据集中,量化前后的平均交并比都在95%以上,其中对量化算法影响最大的是运动模糊,但文中量化算法的平均交并比为95.43%,平均精度损失不超过4.57%,本文的量化方法在减少量化后算法计算量的同时,保证了量化后算法的计算精度,后续算法部署到FPGA上的前向推理计算精度与在PC上的浮点数前向推理计算精度达到相近水平。

表3 各序列图量化前后平均交并比

3.2 卷积加速器实现结果

在HLS开发环境中实现加速器设计时,经编译后可得到综合报告,报告中会提供一个估计的资源消耗和各个模块估计的最大和最小延时等信息,可以根据估计的资源消耗以及延时的信息,制定下一次优化的方向,充分利用FPGA芯片的片上资源。HLS工程仿真后,得到卷积加速核的资源消耗估计如表4所示。

表4 卷积加速器资源消耗估计

由表4可知,消耗占比最高的是LUT资源,其次就是BRAM_18K资源,资源占用率最少的是FF。FF占比最少但是BRAM_18K占比较高,如果要提高数据带宽,需要缓存更多数据进片上存储时,会占用更多的BRAM_18K资源,所以这种情况下,可以考虑通过HLS指令配置一些RAM由触发器资源组成,而不占用BRAM_18K资源。DSP48E资源占比较少,说明卷积加速核的并行度还可以提高。

在综合报告中还会给出估计最大延时,表5中给出了Siamese-FC网络实现的卷积加速核各层最大延时。

表5 卷积层各层最大延时

由表5可知,综合报告估计的最高延时总和为57883057个周期,按照设置的时钟200 MHz来计算,可以得到卷积加速核进行整个Siamese-FC网络前向推理需要的时间为0.289 s。

3.3 板级验证及性能分析

板级验证系统结构如图6所示。其中图6(a)为板上FPGA没有烧写任何程序时的功耗情况,此时的功耗为板子的静态功耗,在12 V电压的供电下,电流为0.511 A;图6 (b)为开发板运行跟踪算法时的运行功耗,增加功率包括了DDR功率与FPGA功率,在12 V电压的供电下,电流为0.878 A。

图6 开发板工作的静态功耗以及运行功耗

表6中列举了CPU与FPGA运行一次孪生卷积网络前向推理计算所需要的时间,表7列举了CPU与FPGA运行时功耗。

表6 不同器件测试速度对比

表7 不同器件功耗对比

结合表6~表7可得出,本文方法在耗时为i5 3470 CPU运行耗时16.15%的前提下,整块开发板的运行功耗仅为i5 3470 CPU的13.7%,能够达到本文的设计目的。

4 结束语

本文从复杂背景的目标跟踪问题出发,讨论了卷积网络算法中以全卷积网络Siamese-FC进行目标跟踪的有效方案,并针对性地设计了卷积网络计算加速器。对于Siamese-FC,板级验证在误差不超过0.6885±1.4795个像素的前提下,实现了CPU运行耗时16.15%的加速效果,功耗仅为CPU的13.7%,表明本文的设计在智能视频监控设备、无人机跟踪等嵌入式应用场景有较高的使用价值。

猜你喜欢

功耗嵌入式尺度
基于任务映射的暗硅芯片功耗预算方法
财产的五大尺度和五重应对
搭建基于Qt的嵌入式开发平台
揭开GPU功耗的面纱
嵌入式软PLC在电镀生产流程控制系统中的应用
数字电路功耗的分析及优化
宇宙的尺度
IGBT模型优化及其在Buck变换器中的功耗分析
9
Altera加入嵌入式视觉联盟