端侧的弱算力设备上部署深度学习模型往往需要经过一系列优化处理才能够满足硬件端的算力要求,部分研究工作结合硬件平台的特性来设计高效的神经网络模型,这里看到一篇20年的研究工作,就想趁着晚上回来还有时间简单看下,原文在这里,如下所示:
本文主要是自己对原文的阅读记录做的笔记,方便后续回顾学习使用,感兴趣的话可以参看一下,如果想要进一步深入学习建议移步阅读原英文论文。
摘要
目标检测和跟踪对于资源受限的嵌入式系统来说是具有挑战性的任务。尽管这些任务是人工智能领域中计算量最大的任务之一,但它们在嵌入式设备上只能使用有限的计算和内存资源。与此同时,这种资源受限的实现通常需要满足额外的苛刻要求,如实时响应、高吞吐量性能和可靠的推理精度。为了克服这些挑战,我们提出了SkyNet,一种硬件高效的神经网络,为嵌入式系统提供最先进的检测精度和速度。SkyNet没有遵循常见的自上而下的紧凑深度神经网络(DNN)设计流程,而是提供了一种自下而上的DNN设计方法,从一开始就全面理解硬件约束,以提供硬件高效的DNN。SkyNet的有效性通过在第56届IEEE/ACM设计自动化会议(DAC-SDC)的低功耗目标检测系统设计竞赛中获胜得到了证明,我们的SkyNet显著优于其他100多名竞争对手:它在TX2嵌入式GPU上实现了0.731的交并比(IoU)和67.33帧每秒(FPS);在Ultra96嵌入式FPGA上实现了0.716的IoU和25.05 FPS。SkyNet的评估还扩展到了GOT-10K,这是一个最近的大规模高多样性通用对象跟踪基准。对于使用ResNet-50作为骨干网络的最先进目标跟踪器SiamRPN++和SiamMask,使用我们的SkyNet作为骨干DNN的实现在一台1080Ti GPU上运行时,速度分别提高了1.60倍和1.73倍,并且在参数大小上小了37.20倍,显著改善了内存和存储占用。
1 引言
边缘AI应用不仅需要DNN的高推理精度,还需要积极的推理速度、吞吐量和能效,以满足现实需求。这些应用在部署到计算和内存资源极其有限的嵌入式系统时,依赖于硬件高效的DNN设计。最近,我们在硬件中看到了对DNN加速器的密集研究,这些研究试图利用不同的硬件设计风格,如GPU、FPGA和ASIC,来提高DNN推理和训练过程的速度和效率。
尽管硬件加速器可能有所帮助,但它们仍然受限于可用资源来处理各种现实应用,尤其是嵌入式系统,因为大多数DNN并不是原生设计为硬件高效的。因此,开发者开始将优化努力集中在软件端,以压缩DNN以减少复杂性,降低计算需求和内存占用。最近的研究已经证明了使用低比特宽数据来表示原始浮点参数的可能性,例如使用二值和三值网络。这些解决方案旨在通过逻辑操作替换硬件密集型的浮点乘法,从而使DNN在硬件平台上更加高效。
研究人员还研究了网络剪枝策略,以减少DNN结构的冗余。根据已发表的剪枝策略,相对不太重要的DNN层之间的连接被丢弃,然后进行网络再训练以恢复精度。在经典的DNN(如AlexNet和VGG-16)上可以实现显著的减少。由于网络压缩的主要好处来自全连接(FC)层,为了持续有效地剪枝后期的DNN(如GoogleNet和ResNet),需要集成更复杂的算法,如使用进化算法、交替方向乘子法(ADMM)和迭代剪枝。
由于大多数计算发生在卷积(Conv)层中,先前的工作还试图通过使用深度可分离卷积层来减少计算复杂性,用于图像分类和无处不在的关键词检测应用。深度可分离结构可以有效减少操作数量,并为资源受限的硬件提供更紧凑的DNN设计。为了进一步提高DNN在硬件上的部署,Alwani等人提出了层融合,以最小化片上和片外内存之间的数据移动。
总的来说,传统的硬件高效DNN设计过程可以总结为图1所示的自上而下的设计流程,采用了上述技术。它从选择一个参考DNN开始,重点关注精度。这样的DNN通常对于目标嵌入式系统来说过于复杂,需要通过软件和硬件优化进行压缩。由于软件压缩和硬件实现通常在两个独立的步骤中进行,步骤2和步骤3通常以迭代的方式进行,以平衡DNN精度和目标设备上的硬件性能。在压缩后还需要进行网络再训练以恢复精度。由于过程的迭代性质,很难同时覆盖软件中的推理精度和硬件中的部署效率。
在本文中,我们通过提出SkyNet来解决硬件高效DNN设计问题,SkyNet遵循一种自下而上的DNN设计方法,全面考虑硬件约束。本文的主要贡献总结如下:
-
我们调查了最新的低功耗嵌入式系统目标检测器,并识别了使用自上而下DNN设计流程的潜在障碍,这些障碍可能阻碍DNN精度和硬件效率的进一步改进。
-
我们提出了一种针对嵌入式GPU和嵌入式FPGA的硬件高效DNN的自下而上设计策略;使用这种方法,我们提出了SkyNet,它全面考虑了硬件限制,以克服自上而下设计流程的挑战。
-
我们在DAC-SDC'19中使用TX2 GPU和Ultra96 FPGA展示了SkyNet,并达到了最先进的精度。SkyNet在精度和吞吐量方面取得了最高总分,并在GPU和FPGA赛道上获得了第一名。
-
我们将SkyNet扩展到目标跟踪。通过使用SkyNet作为骨干DNN,SiamRPN++和SiamMask在1080Ti GPU上运行时,速度分别提高了1.60倍和1.73倍,并且在参数大小上小了37.20倍,显著改善了内存和存储占用。
2 相关工作
最近最先进的目标检测器以DNN骨干网络来提取输入特征。研究人员最初提出了一种两阶段的方法,首先输出多个目标候选区域的提案,然后生成更准确的区域及其相应的类别标签。为了提高检测速度,一些单阶段方法被提出,同时回归目标位置和类别。目标跟踪也依赖于从DNN骨干网络中提取的特征,我们看到了最近基于孪生网络的跟踪器将跟踪器表述为示例图像和搜索区域之间的特征。这些新兴方法使得使用桌面GPU进行实时目标检测和跟踪成为可能,但在部署到嵌入式系统之前仍需要进行积极的压缩。
低功耗目标检测器
如今,人们更多地关注于为目标检测提供硬件高效的设计,而不仅仅是追求更高的推理质量。为了解决现实应用的设计困难,DAC-SDC提出了一个低功耗目标检测挑战,旨在使用嵌入式平台(如NVIDIA TX2 GPU、Ultra96 FPGA和Xilinx Pynq-Z1 FPGA)进行无人机应用。通过检查获胜作品,我们注意到它们都采用了单阶段检测器,并共享类似的自上而下DNN设计方法。如表1所示,它们大多从已建立的硬件高效DNN(如ShuffleNet、SqueezeNet和MobileNet)开始,并将图像分类器替换为YOLO或RetinaNet后端进行目标检测。其他解决方案直接采用目标检测算法,如SSD和YOLO。为了提供硬件高效的DNN,它们采用输入重缩放和网络剪枝来降低网络复杂性。一些GPU作品使用半精度数据格式(16位)和TensorRT来提高吞吐量。由于资源预算更加紧张,FPGA设计中的压缩更为激进。DNN参数被量化到大约8位,甚至低至1位。它们还包括任务划分(主机CPU和FPGA之间)、双泵DSP(DSP单元的工作频率加倍)、定制流水线、多线程和时钟门控,以提升硬件性能和能效。
硬件感知的神经网络搜索
为了为边缘设备提供DNN,人们越来越感兴趣使用神经架构搜索(NAS)来自动找到针对边缘平台的资源受限DNN。为了找到特定平台的有效网络,Tan等人使用在目标设备上运行的实时延迟,而不是延迟代理。由于可用物理设备的数量有限,Wu等人使用查找表(LUT)来近似模型在特定设备上的运行时间。为了结合人类知识,Howard等人使用平台感知的NAS来搜索平台的DNN,并手动调整结构以使其更高效。与之前针对特定平台的硬件感知NAS方法相比,SkyNet可以同时针对嵌入式GPU和嵌入式FPGA平台,并通过使用真实的硬件性能反馈而不是LUT近似来捕捉硬件限制。
3 动机
为了提供更好的解决方案,我们调查了自上而下设计流程(图1)中的潜在障碍,这些障碍可能阻碍DNN精度和效率的进一步改进。我们总结了两个挑战如下:
-
在遵循自上而下的方法进行模型压缩时,很难平衡DNN配置对软件和硬件的敏感性。
-
在自上而下流程的开始阶段,很难选择合适的参考DNN,因为对于给定的现实任务,其精度变化不确定。
第一个挑战导致在软件和硬件优化之间进行繁琐的迭代探索。在相似的硬件性能(如吞吐量和延迟)下,DNN可能会有不同的精度结果,因为压缩技术应用于不同的网络组件。我们以数据量化为例。在图2(a)中,参数和中间特征图(FM)量化的精度结果显著不同。在该图中,气泡中心坐标表示精度和模型压缩比,气泡面积显示数据大小(MB)。我们放大了FM气泡以获得更好的图形效果。通过将模型从Float32压缩到定点,我们将参数大小减少了22倍(237.9MB→10.8MB),FM大小减少了16倍(15.7MB→0.98MB)。在这种情况下,推理精度对FM精度更为敏感。
另一方面,精度相似的DNN可能在硬件上造成差异。为了提供定量分析,图2(b)显示了不同输入大小和FM量化下的BRAM(FPGA片上内存)使用情况。通过将重缩放因子从1.00减少到0.78,我们可以保持几乎相同的DNN精度(<1.0%的下降),但当因子小于0.9时,可以节省一半的内存。同样,图2(c)表明小的变化可能导致不同的DSP利用率。以16位FM(FM16)为例,当权重从15位(W15)变为14位(W14)时,所需的DSP从128减少到64。
对于第二个挑战,很难选择一个在给定任务上具有相对较高精度上限的参考DNN。在已发表的数据集(如CIFAR-10/100和ImageNet)上具有令人印象深刻的精度的DNN可能并不总是适用。我们评估了流行DNN在DAC-SDC目标检测数据集上的精度,并在表2中列出了结果。在相同的框回归部分下,这些DNN在充分训练后显示出其参数大小和推理精度之间没有明显的联系。因此,很难为给定任务选择一个有前途的参考模型。
4 自下而上的设计方法
受第3节讨论的挑战的启发,我们提出了一种自下而上的方法,为嵌入式系统提供硬件高效的DNN设计。它是一个三阶段的方法,如图3所示。
阶段1:捆绑选择和评估
这个流程从构建硬件感知的基本块开始,称为捆绑(Bundles)。从软件角度来看,捆绑是一组顺序的DNN层,可以重复堆叠以构建DNN。从硬件角度来看,捆绑是一组要在硬件上实现的IP。为了捕捉硬件约束,需要在目标嵌入式系统上评估捆绑,以收集真实的延迟(对于FPGA和GPU)和资源利用率(对于FPGA)结果。
在第一阶段,我们枚举DNN组件(如Conv、池化、激活层等)并将它们组装成捆绑1~n。然后在目标硬件设备上实现和评估每个捆绑的硬件性能指标。为了获得其潜在的精度贡献,我们基于给定任务构建具有固定前端和后端结构的DNN草图,并在中间分别插入一种捆绑(带有复制)。我们限制一种捆绑用于一个DNN草图,以保证其硬件效率。然后,使用目标数据集快速训练DNN草图,以找出具有相对较高精度的草图。例如,对于目标检测任务,我们可以将输入重缩放单元(前端)和边界框回归(后端)与选定的捆绑连接起来构建DNN草图。训练的轮数可能因数据集而异,使用DAC-SDC数据集(100K图像)进行20轮训练可以区分草图,而使用Cifar-10数据集进行5轮训练就足够了。我们还在Jiang等人中看到了类似的策略,通过在ImageNet子集上进行25轮训练来区分候选者。最后,位于帕累托曲线上的最有前途的捆绑被选中进入下一阶段。
阶段2:硬件感知的DNN搜索
在DNN搜索期间,输入包括软件和硬件指标(如DNN精度和每秒吞吐量)以及目标硬件平台,而输出是满足软件和硬件要求的DNN候选者。为了解决这种多目标优化问题,我们提出了一种基于群体的粒子群优化(PSO)进化算法来发现合适的DNN候选者,因为文献已经证明了使用进化方法发现具有最先进精度的DNN的有效性。从设计方法学的角度来看,SkyNet可以扩展以支持其他优化算法,并满足不同场景的需求。
在提出的基于群体的PSO算法中,每个DNN个体被视为一个粒子,搜索期间的所有活动DNN都贡献于群体。由于我们在每个DNN中只使用一种捆绑,由相同类型捆绑组成的DNN被视为一个粒子组。为了保持进化稳定性,DNN仅在其自己的组内进化。我们将组内最佳位置标记为Pgroupi,表示在给定条件下评估的最佳适应度值。我们将组i中的DNN粒子j标记为nij,每个nij有一对特征向量(fv1,fv2)来描述两个关于DNN结构的超参数。fv1表示每个捆绑复制的通道数;fv2描述捆绑之间的池化位置。两个特征向量的维度等于nij中堆叠的捆绑数量,它们都影响精度和硬件性能。为了定位最佳DNN候选者,我们提出了算法3.4,其主要组件如下:
群体生成。生成初始网络群体P(一组DNN候选者),包含M个组和每个组N个网络。搜索包含I次迭代,在第itr次迭代中,所有网络都快速训练eitr轮,其中eitr随itr增加。
延迟估计。我们进行平台特定的延迟估计。对于GPU,我们直接在训练GPU上测量推理延迟,如果目标GPU与训练GPU不同,则按比例缩放到目标GPU。对于FPGA,我们遵循预定义的基于IP的DNN加速器模板进行硬件性能评估。特定层的IP在硬件中实现并由相应的DNN层共享。为了最大化性能,IP被配置为充分利用可用资源。然后,我们从FPGA高层次综合工具中收集每个DNN的端到端性能和资源开销。
适应度值。在网络训练和延迟估计之后,我们计算每个网络的适应度值为:
其中Accji是nji的验证精度,Est(nji)表示硬件上的延迟;Tar是目标延迟。参数α(α < 0)用于平衡网络精度和硬件性能。
速度计算和粒子更新。在标准PSO中,粒子的更新速度是根据当前速度、朝向局部和全局最佳位置的速度计算的。粒子可以按照更新速度以分配的概率移动到更好的位置。类似地,在我们的情况下,同一组中的DNN根据当前设计、局部最佳设计(所有经过迭代的最佳设计)和组内最佳设计更新其位置(由特征向量表示的网络结构)。为了确定朝向局部最佳Vlocal和组内最佳Vgroup的速度,我们计算当前位置和局部/组内最佳设计之间的差异。由于每个位置由(fv1,fv2)表示,位置差异可以通过层扩展因子fv1和池化点fv2的不匹配来捕捉。然后,在速度已知的情况下,我们开始通过随机百分比向局部和组内最佳位置更新当前网络。
阶段3:特征添加
如果硬件指标允许,可以添加更高级的DNN设计特征。例如,我们可以包括从低级特征到高级特征的旁路以及特征图重排序,以改善小目标检测。我们还可以用ReLU6替换ReLU,以增强硬件效率。更多讨论将在下一节中提供。
5 SkyNet
用于目标检测的SkyNet架构
按照提出的流程,最佳捆绑被选为3×3深度卷积层(DW-Conv3)、1×1点卷积层(PW-Conv1)、批量归一化层(BN)和ReLU6的组合。通过重复堆叠这个捆绑,我们为DAC-SDC中的目标检测生成了三个骨干网络,如表3所示。这些网络共享相同的链式结构,但具有不同的特征图旁路配置。对于模型A,没有旁路;而对于模型B和C,捆绑#3的输出特征图被馈送到捆绑#6。SkyNet还通过移除分类输出并使用两个锚点进行边界框回归来适应YOLO检测器头。
特征图旁路、重排序和ReLU6
通过检查DAC-SDC训练数据,我们记录了输出边界框与输入图像大小之间的比例,并在图6中展示了一个分布图。它清楚地显示,91%的目标检测对象小于原始输入图像大小的9%,其中31%的对象甚至小于输入图像大小的1%。这意味着该数据集中大多数对象是小对象,我们需要相应地提供额外的DNN特征。因此,我们添加了特征图旁路和重排序以增强小对象检测能力(模型B和C)。旁路通过添加低级高分辨率特征图,帮助在DNN的后期部分(更接近输出层)保持小对象特征。此外,在生成边界框之前拥有多个特征图(来自不同层)是有益的。由于旁路跨越一个池化层(在图4中突出显示),我们使用重排序(如图5所示)来对齐原始特征图(由捆绑#5生成)和低级特征图的大小,而不会丢失信息。提高硬件效率的另一个特征是ReLU6,它将输出范围剪裁为[0,6]。由于ReLU6生成的数据范围比原始ReLU([0,+∞))小得多,因此表示中间FM所需的位数更少。它还有助于更好地在嵌入式GPU中实现低精度浮点数和在嵌入式FPGA中实现定点数据格式。
6 DAC-SDC实验
DAC-SDC为嵌入式系统(包括NVIDIA TX2 GPU、Pynq-Z1和Ultra96 FPGA)提供了一个单目标检测挑战,功耗非常低。目标是考虑无人机应用的最合适需求,如实时处理能力、能效和检测精度。为了更好地反映现实挑战,数据集中的图像由无人机在真实环境中捕获。整个数据集分为两部分:包含100,000张图像的训练数据集,其中包含12个主要类别和95个子类别的感兴趣对象,以及包含50,000张图像的隐藏测试集,只有竞赛组织者可以访问。SkyNet生成的结果如图7所示。在DAC-SDC'19中,52个GPU团队和58个FPGA团队参与了全球范围内的激烈竞争。我们的SkyNet设计成功地为GPU和FPGA赛道提供了最佳推理精度和总分。
消融研究
我们在DAC-SDC数据集上进行了消融研究,以分析SkyNet的三种配置(表3中的模型A、B和C)。通过结合两种激活函数(ReLU和ReLU6),我们评估了六种SkyNet配置。我们使用多尺度训练从1e-4到1e-7的学习率对这些模型进行端到端训练。我们应用随机梯度下降(SGD)来更新参数。为了进一步丰富训练数据,我们使用数据增强来扭曲、抖动、裁剪和重缩放输入,大小为160×320。精度结果如表4所示,其中SkyNet C - ReLU6在验证集上达到了最高的IoU(0.741)。因此,我们将此模型作为后续实验的提议设计。
评估标准
DAC-SDC引入了全面的评估,涵盖检测精度(IoU)、吞吐量(FPS)和能耗。为了确定最佳设计,总分按照公式2到5计算。假设有I个注册团队和K张测试集中的图像,团队i的IoU分数(RIoUi)计算如下:
对于能耗,EI表示所有I个条目在测试数据集上执行DNN推理时的平均能耗(公式3)。团队i的能耗分数(ESi)然后通过公式4计算,与该团队的能耗与平均能耗的比率相关。x对于FPGA赛道设置为2,对于GPU赛道设置为10。最终,总分(TSi)在公式5中计算,包括推理精度(RIoUi)和能耗(ESi)。
GPU实现
对于TX2 GPU实现,我们保持所有网络参数使用Float32以保持最佳推理精度。由于大多数计算密集型的DNN推理部分由NVIDIA cuDNN处理,几乎没有空间进行定制改进,我们从系统级别开始优化我们的设计。
运行SkyNet的整个过程包含四个步骤:1)从闪存存储中以批处理单元获取输入;2)图像预处理,包括输入重缩放和归一化;3)DNN推理;4)后处理以生成边界框并将结果缓冲在DDR内存中。最直接的方法是串行执行这些步骤,但会导致资源利用率低和吞吐量性能差。在我们的设计中,我们首先将步骤1和2合并为预处理,并启用多线程技术以流水线方式执行这些步骤,如图10所示。我们使用NVIDIA系统分析器(L4T)捕获延迟结果。平均而言,所提出的系统级优化比原始串行设计实现了3.35倍的加速,并帮助我们的设计达到了最高的吞吐量性能,峰值为67.33 FPS。
FPGA实现
为了在FPGA上实现DNN,我们面临更紧张的资源预算,因为Ultra96 FPGA提供的理论峰值性能(144 GOPS @200MHz)远低于TX2 GPU(665 GFLOPS @1300MHz)。通过使用提出的自下而上设计流程,硬件限制已经通过捆绑设计和捆绑在FPGA上的实例化捕获。由于提出的网络由相同类型的捆绑构成,这个IP可以在不同层之间共享以应对资源约束。尽管如此,我们仍需要更多优化以进一步提高性能。
6.4.1 量化、批处理和分块
由于定点表示在FPGA设计中更有利,我们将FM和权重从Float32量化为定点,并在表7中探索不同的量化方案。量化后,SkyNet骨干网络在方案1到4中分别经历了1.4%到6.1%的精度下降。我们最终选择方案1,因为精度在总分计算中权重更高(公式5)。
由于网络参数无法容纳在FPGA片上内存(BRAM,仅有0.95 MB可用)中,我们必须将它们存储在外部内存(DRAM)中,这很容易成为内存访问带宽的瓶颈。为了缓解带宽需求,我们应用输入批处理以利用数据重用机会,其中一定数量的输入图像(等于批处理大小)在发送到FPGA进行DNN推理之前被组装,从而在从DRAM消耗相同数量的网络参数时增加任务大小(一次处理的图像数量)。
随着批处理大小的增加,网络推理过程需要更多的FPGA片上内存来缓冲中间FM。由于我们的实现基于IP共享结构,FPGA上实例化的缓冲区由不同层共享,这意味着缓冲区对于前几层的FM可能不够大,而对于后几层的FM可能太大,因为FM在池化后变小。为了解决这个问题,我们提出了如图9所示的输入分块和批处理方案。四个输入被拼接成一个更大的输入,可以作为一个整体处理。通过分块和批处理,可以在不同层之间使用一个共享缓冲区而不改变其大小。所提出的解决方案继承了批处理的优点,允许更好地重用DNN权重,并消除了可能的未使用缓冲区空间的浪费。
6.4.2 层融合、内存层次结构和任务划分
为了避免在BN层中处理浮点操作(如平方根倒数),我们使用层融合将Conv和其后续BN的参数在线下合并。因此,在DNN推理期间不需要分离的BN层或昂贵的浮点操作。
由于硬件资源由DNN层共享,中间结果需要在片上和外部内存之间交换。为了提高性能,我们在硬件上实例化了选定的捆绑,并实现了一个五阶段流水线,包括加载、EXE CONV3、EXE CONV1、EXE池化和写回阶段。通过在内存和计算单元之间使用乒乓缓冲区,数据传输(在加载和写回阶段)可以完全与计算延迟重叠。关于相邻执行阶段(带有“EXE”前缀)之间的数据传输,我们保持数据在片上而不经过外部内存。为了充分利用可用计算资源,我们还在Ultra96上实现了任务划分。整个设计如图10所示,与我们的GPU设计非常相似。工作负载分布在CPU和FPGA之间,并创建系统级流水线。通过所有三个任务(预处理、SkyNet推理和后处理)重叠,我们的FPGA设计可以达到25.05 FPS。
结果比较
在按照第6.3节和6.4节提到的策略在GPU和FPGA上实现提议的DNN后,我们的设计由DAC-SDC组织者使用隐藏测试集进行评估。如表5和6所示,我们展示了DAC-SDC'19和'18中前三名团队的比较结果。在我们的GPU设计中,SkyNet在精度(0.731)、吞吐量性能(67.33)和总分(1.504)方面优于所有其他竞争对手。在FPGA设计方面,SkyNet也达到了最佳精度并获得了最高总分。
7 SkyNet在GOT-10K上的扩展
由于SkyNet可以在嵌入式系统上实现实时目标检测,我们在GOT-10k基准测试上设置了实验,以展示其在目标跟踪方面的潜力。GOT-10k是一个大规模高多样性的通用对象跟踪数据库,具有丰富的运动轨迹和广泛的对象类别覆盖。模型在GOT-10k上使用两个指标进行评估:平均重叠(AO)和成功率(SR)。AO定义为预测边界框与真实边界框之间的IoU的平均值,而SR定义为IoU超过某个阈值的预测比例。在评估期间,Got-10K仅在第一帧提供真实边界框,并期望跟踪器在后续帧中通过预测边界框继续跟踪同一对象。预测结果将由Got-10K服务器进行评估。在本节中,我们将SkyNet骨干网络与两个最先进的目标跟踪器(SiamRPN++和SiamMask)集成,并评估其实时跟踪能力。
使用SiamRPN++进行评估
孪生网络是构建目标跟踪器最流行的网络结构之一。孪生跟踪器通过从示例图像和搜索图像中提取的特征之间的相关性来定位对象,其中基于DNN的特征提取起着重要作用。SiamRPN++是第一个被证明只要适当训练就可以从不同容量的DNN骨干网络中获益的孪生跟踪器。为了评估不同骨干网络的性能,我们在GOT-10k上使用AlexNet、ResNet-50和SkyNet骨干网络训练了三个SiamRPN++跟踪器。我们保持示例和搜索图像的大小分别为127×127和255×255(SkyNet为128×128和256×256以提高实现效率),并设置学习率从1e-3到1e-5。结果如表8所示,SkyNet在AO和SR方面几乎与ResNet-50骨干网络相同,但速度快了1.59倍。
使用SiamMask进行评估
SiamMask是另一个通过结合图像分割来超越SiamRPN++的孪生跟踪器。由于分割信息未提供,我们使用Youtube-VOS数据集进行训练,并在Got-10K上应用对象跟踪,以比较使用SiamMask结构的不同骨干网络的性能。我们保持与第7.1节相同的输入大小设置,并应用从1e-3到1e-4的学习率。如表9所示,所提出的SkyNet骨干网络在使用SiamMask跟踪器时在所有指标上均优于ResNet-50,具有更好的跟踪质量和1.73倍的加速。
8 结论
在本文中,我们提出了SkyNet,以及一种用于在嵌入式GPU和嵌入式FPGA上运行目标检测的硬件高效方法来生成紧凑的DNN。SkyNet设计方法是一种新颖的自下而上DNN设计流程,可以通过使用真实的硬件反馈来捕捉硬件限制,并提供在软件和硬件指标(如DNN推理精度和吞吐量性能)之间取得良好平衡的DNN。SkyNet在第56届IEEE/ACM DAC-SDC低功耗目标检测挑战中得到了展示,并在GPU和FPGA赛道上获得了第一名。我们还扩展了SkyNet以处理目标跟踪任务,并与使用ResNet-50骨干网络的最先进孪生跟踪器相比,在1080Ti GPU上运行时,速度分别提高了1.60倍和1.73倍,并且在参数大小上小了37.20倍,显著改善了内存和存储占用。