点击下方卡片,关注「集智书童」公众号
导读
作者引入了AnytimeYOLO,这是一系列YOLO架构的变体,它实现了任意时间检测。作者的AnytimeYoLO网络允许中断推理,即在任何时间点提供预测,这一特性对于安全关键型实时应用来说是非常有价值的。
作者提出了结构化的探索方法来修改YOLO架构,使其能够提前终止以获得中间结果。作者着重于通过提供高粒度的可用终止点来实现细粒度控制。首先,作者将Anytime模型正式化为一种提供任意时间预测的预测模型特殊类别。然后,作者讨论了YOLO架构的一种新颖的转置变体,该变体改变了架构以实现更好的早期预测和更大程度的处理阶段顺序自由度。最后,作者提出了两种优化算法,给定一个Anytime模型,可以使用这些算法来确定最优的退出执行顺序和最优的早期退出子集,以便在资源受限环境中部署。作者评估了Anytime性能和设计选择中的权衡,为此提出了一种新的Anytime质量指标。特别是,作者还讨论了目前使Anytime推理部署成本高昂的关键挑战。
1 引言
网络物理系统算法的核心挑战在于需要在性能、及时性和资源利用之间取得平衡。在许多应用中,做出决策所需的时间与决策的质量同样重要,有时延迟的结果甚至比错误的结果更糟糕。此外,从成本和可持续性的角度来看,系统资源应得到有效利用。
任何时间算法,可以在执行过程中随时中断并仍然提供有效结果,例如[28, 39],这类算法解决了这一挑战。与传统算法和机器学习模型必须在完成运行后才能提供结果不同,可中断的任何时间算法和模型允许在推理过程中停止执行,并为 cyber-physical systems 提供了更多灵活性。图1给出了任何时间目标检测的一个示例。对于两张图像,模型执行分别在3 ms、5 ms和完成时被中断。可以看到,模型运行时间越长,成功检测到的目标越多,用浅蓝色 Token 。另一种在质量和资源效率之间取得平衡的方法是使用合同算法,这些算法在执行前指定一个预算。如果合同算法在达到预算之前被中断,它可能无法提供有效结果,而任何时间算法在任何时间点都能提供有效结果。关于任何时间和合同算法的差异及其适用性的进一步讨论,请参阅[39]。
因此,对于资源受限的系统,例如,网络物理系统或嵌入式系统,对任何时间推理目标检测模型(例如,[12, 14, 20-22, 25, 26, 37])的兴趣日益增长。其中大多数采用早期退出的概念,通过在相应的神经网络中添加早期退出点来实现任何时间推理。它们提出了额外的机制来执行或使用神经网络,例如,通过设置某个关注区域来优先处理某些输入数据,根据预期的质量增益来调度执行,以及合并、缩小或减少输入图像。
据作者所知,在目标检测领域,尚无任何即时推理模型对神经网络内部如何添加早期退出进行了深入探讨。计算机视觉模型,尤其是YOLO网络,已被证明在作为网络物理系统视觉 Pipeline 的一部分时极为宝贵,其应用范围从体育中的羽毛球检测到自动驾驶汽车中的车辆和行人检测 [7]。
本文聚焦于如何通过研究在YOLO模型内部如何添加早期退出功能来为YOLO模型添加任何时间特征。作者的贡献如下:
- • 作者在第三部分提出了将任意时间算法的概念首次正式应用于任意时间模型,并从中推导出一个共同的评估指标。
- • 作者研究了YOLOv9 [30]模型,并在第4节中介绍了Anytime YOLO,这是一种具有早期退出机制的新型架构,用于任意时间推理,包括一个转置变体,通过以较小的精度损失为代价重新组织处理阶段来提升早期性能。
- • 作者在第5节中提出了适用于任意时间推理的优化算法:确定最优执行顺序和选择最优的退出子集,以降低内存和计算成本,同时保持性能。
- • 作者在第6节讨论了任何时间推理的部署考虑因素,包括带和不带宽限期的执行,以及由于框架支持有限而部署任何时间模型所面临的当前挑战。
- • 作者在MS COCO数据集[16]上评估AnytimeYOLO,并在第7节讨论设计选择的权衡。
- 相关工作
关于早期退出的研究文献丰富。最初由BranchyNet [27] 提出,早期退出通过向网络添加分支来实现提前终止。虽然最初作为正则化的一种形式引入,Stochastic Depth [13] 也可以用作早期退出,跳过层 [9]。另一个方向是基于路由的,例如SelectiveNet [11],其中一个小型网络决定采取哪个退出路径 [32, 34]。许多研究聚焦于如何训练早期退出网络 [15],包括渐进式缩小 [5] 等技术。
视觉Transformer [6, 8] 是视觉任务的卷积神经网络替代方案。由于计算成本较高,早期退出是一种有前景的方法,可以提高其效率 [1, 2, 35, 38]。Adadet [36] 是一种具有早期退出的目标检测网络,使用早期的检测输出来确定不确定性分数,以决定何时停止。它并不关注如何添加退出点。尽管其路由方法可以与作者的Anytime YOLO相结合,但其基础模型的表现并不与最近的YOLO版本相竞争,这使得直接比较变得困难。
DynamicDet [18] 是一种采用路由方法的目标检测模型,该模型包含两个 Backbone 网络(简单和困难),第二个 Backbone 网络接收图像和第一个 Backbone 网络的输出,并包含一个路由网络,该网络决定是否继续传递给困难 Backbone 网络。其中一个可能的 Backbone 网络是 YOLOv7。然而,它不适合任何时间推理,因为它只有两个出口,并且只关注大型变体。
然而,在实时系统背景下考虑任意目标检测时,本研究的重点在于使用具有早期退出的模型,开发分割输入、优先处理部分以及相应调度的启发式方法[12, 14, 20-22, 25, 26, 37]。作者对将早期退出添加到YOLO的结构化探索与这些方法正交,并且可以一般性地与这些方法结合使用。
一个相关但不同的概念是深度监督[24, 31],该技术仅在训练过程中添加分支以提高梯度 Stream 。YOLOv7[29]将深度监督引入YOLO,这是将早期退出添加到YOLO的第一步。
- 向任意时间模型迈进
非正式地,任何时间算法可以在任何时间停止,从而得到一个有效的结果,该结果随着运行时间的增加而改进。更正式地说,文献中为任何时间算法确定了几个关键属性[28]。作者强调其中最重要的四个:1)可中断性——算法可以在任何时间停止,并提供一个有效答案。2)单调性——答案应该随着时间的推移而变得更好。3)一致性和边际效益递减——改进随着时间的推移而减少,但对于相同输入的算法重复执行是相同的。4)可测量的质量——结果的质量可以精确确定。
作者将这些定义应用于作者的任何时间模型概念——即在执行过程中可以随时停止但仍能提供有效预测的模型。为此,作者考虑一个监督学习设置,其中观测值
和标签
来自联合分布
。此外,作者假设一个给定的质量函数
来评估预测与标签的匹配度。例如,在目标检测的情况下,这可能是指平均精度(mAP)。作者假设系统可以在任何时间中断模型执行(例如,在紧急情况下),并且模型可以立即给出预测(技术挑战将在第6.2节讨论)。类似于任何时间算法,作者的任何时间模型应能够在任何时间点提供有效预测而被中断,并且是单调的,随着时间的推移质量会提高。关于一致性和收益递减,大多数机器学习模型在部署时通常是确定性的,因为通常在训练后不涉及任何随机性。它们也会随着时间的推移收敛到一个固定的输出,该输出不再改进(例如,在完全执行后)。因此,作者将一致性和收益递减的概念结合为收益有界,即输出在足够的时间内收敛到一个稳定的预测。作者用以下定义来形式化这一点。
定义1.(任意时间模型)设
为一个联合分布,
为一个质量函数。若模型
满足以下性质,则称其为任意时间模型:
对
于
所
有
,
存
在
,
使
得
对
于
所
有
,
有
。
对
于
所
有
,
有
。
(
单
调
性
)
在传统的监督学习中,主要目标是找到函数
,以便在给定输入
的情况下进行高质量的预测。相比之下,任何时间函数
接收一个额外的输入
,在所有时间点提供预测。作者注意到,对于任何模型
,都存在一个简单的任何时间版本,即在
完成之前返回一个默认向量。设
为特定任务的默认向量(例如,
可以是零向量,或者
可以是基于训练数据的类别先验等),那么
的简单任何时间版本是。
虽然质量函数
可以直接给出常规模型的表现,但 anytime 模型的表现随着时间推移而更加复杂。例如,一个 anytime 模型可能很快就能达到可接受的表现,但在长期运行中可能被另一个模型超越。为了判断 anytime 模型的表现,作者现在定义其可测质量如下。
定义2.(任意时间模型的品质)设
为一个联合分布,设
为一个品质函数,
为一个加权函数。进一步,设
为一个任意时间模型,并令
,
:
f的输出不再变化的最早时间点为。此时,f的质量由以下公式给出:
首先,作者为某些时间点质量更重要的应用引入一个权重
。例如,如果已知中断的分布,作者可以适当地权衡模型的质量。如果不知道此类信息,可以使用均匀权重
。其次,在给定模型的情况下,作者对总运行时间直到稳定时间
的质量进行归一化。在比较多个模型时,为了公平比较,应选择相同的归一化因子
。
- 任意时YOLO
鉴于作者对 anytime 模型的定义,作者现在提出了一种新的 Anytime YOLO 版本,用于实时目标检测。如前所述,作者的研究基于 YOLOv9 架构[30]。具体来说,作者关注 YOLOv9 家族中最小的模型 GELAN-t 和中等变体 GELAN-m,因为 anytime 推理在资源受限的嵌入式系统中最为相关,尽管AnytimeYOLO适用于所有 YOLOv9 模型。
历史上,YOLOv7 [29] 在YOLO架构中加入了深度监督。深度监督涉及在网络的早期阶段添加另一个辅助检测Head,该头被纳入损失函数并与整个网络一起训练,旨在提高最终输出的性能。此外,为了进一步提高性能,YOLOv7 引入了一种在线蒸馏形式。在训练过程中,辅助头接收最终输出的预测作为指导,而最终输出则像往常一样接收常规标签。这种自我知识蒸馏形式通过使网络的早期阶段已经指导到可用于预测的有意义表示来提高性能。
尽管深度监督并非旨在实现任意时间推理(辅助头通常在部署时被移除),作者通过添加多个早期退出,使用相同的方案重新利用深度监督。
从根本上讲,作者的目标是确保在任何时候都能提供良好的性能,因此作者旨在尽可能多地添加早期退出,同时尽可能减少(整体)性能下降,以实现高粒度的任何时间推理。对于最近的YOLO架构来说,一个需要考虑的关键点是它们是多尺度目标检测网络。也就是说,它们使用不同分辨率的特征图进行目标检测,以便更容易地检测不同尺度的目标。作为其中的一部分,使用了几个特征金字塔,其中特征在逐渐变小的或变大的阶段中通过 [4, 17, 19]。这样的特征金字塔由两个基本元素组成:两个上/下采样块和三个GELAN块,这些块将输入分割,使用多个卷积进行处理,然后将它们连接起来,并使用1x1过渡卷积进行处理。详细信息可以在原始YOLOv9论文 [30] 中找到,作者也在补充材料(A节)中提供了概述。
在GELAN-tand GELAN-m的情况下,在初始 Backbone 网络之后,使用了三种不同的特征图分辨率。
图3a展示了三个具有残差连接的特征金字塔,分别在三个不同的分辨率下运行。使用所有三个分辨率的检测结果被组合起来形成最终的检测
。
其中,
和
分别是网络在小型、中型和大型分辨率下操作阶段输出的特征图,而
和
是检测函数。对于没有早期退出的 GELAN-t 和 GELAN-m,
和
是在小型、中型和大型分辨率下操作的最后阶段的预测。
因此,作者认为早期退出(early-exit)由作者所说的子退出(sub-exit)组成。子退出本身可以放置在每个阶段的末尾(例如每个GELAN块或任何由此派生出的块)或下/上采样块之后。也就是说,如图3a所示,在图中使用退出符号 Token ,最多有15个有意义的子退出。在训练过程中,这些子退出与具有相同特征金字塔的其他子退出相匹配(由退出符号的颜色指示),然而在推理过程中,可以自由地将子退出相互匹配。例如,如果处于最后一个特征金字塔的第一个阶段的末尾,可以使用使用先前特征金字塔的两个其他子退出的退出。对于任何时间推理方案,对每个尺度使用最后一个达到的子退出的想法。虽然可以有一个不使用所有尺度的早期退出,但这会导致性能急剧下降。作为作者评估的一部分,作者考虑了两种变体,即子退出放置在每个位置和仅放置在选定位置的情况。
4.1. 转置架构
在金字塔架构中,早期退出只能使用在 Backbone 网络第三阶段末尾的所有分辨率特征,即输入数据总是按顺序处理每个分辨率,在产生任何预测之前。这相当于在执行了大约三分之一的网络后进行早期退出。如果不使用所有分辨率,早期退出的质量相对较低。有趣的是,最大的质量提升并不是在由多个卷积组成的相对较慢的GELAN块之后,而是在快速下/上采样块之后,这些块除了下/上采样操作外,只包含一个平均池化层和一个单卷积。作者在补充材料中的B节简要给出了测量结果。
为了提升其任意时刻的能力,作者提出对网络整体架构进行改进:不是依次以三个不同的分辨率处理图像,而是旨在修改网络,使其分辨率基本成为并行分支。这一改变不仅允许在所有分辨率下更早地使用特征图,还提供了一定程度的自由度来选择处理分辨率的顺序。
为此,作者隐喻性地转换了阶段,使得阶段不再依赖于前一阶段完全处理过的特征图,而是仅依赖于阶段的开始部分。这种转换后的架构,作者称之为GELAN-
(对于小型变体)或GELAN-
(对于中型变体),如图3b所示。第一个出口,使用主干网络之后所有三个阶段的输出,然后只需要执行每个阶段的下采样部分。
4.2. 任意时间训练YOLO
作者修改了YOLOv9的基于蒸馏的损失函数和检测Head实现,以支持任意数量的早期退出。由于作者可以在执行一个块之后放置一个子退出,因此作者可以放置的最大子退出数量等于块的数目。如图3b所示,GELAN-t、GELAN-
GELAN-
和GELAN-
可以适应多达15个子退出。在早期退出之后,为了推导基于蒸馏的损失,必须考虑所有三个分辨率。因此,三个分辨率的子退出必须配对,导致子退出数量是最终分辨率数量的倍数,即GELAN-t和GELAN-m为三。由于图3b中的模型架构在每个分辨率上不具有相同的块数,即大、小、中分辨率(图3b中的红色、绿色和蓝色)分别为四个、五个和六个块,作者必须添加冗余的子退出(在最后的GELAN块中)以满足上述要求。因此,使用所有中等规模的子退出需要训练六个三子退出的对,即通过引入三个冗余子退出,总共18个子退出。
训练早期退出网络的两种最常见策略是联合优化,例如[15],和概率优化,例如[5],后者会采样退出。在联合优化中,每个训练步骤都会训练所有早期退出,损失是每个退出损失的加和,可能对每个退出损失进行不同的加权[15]。概率方法在每个训练步骤中采样一组早期退出[5],要么使用一组固定的早期退出,要么在训练过程中逐步采样更多退出。其中一种方法是渐进缩小[5],首先添加处理较大子网络的早期退出。
作者训练AnytimeYOLO的最后一个考虑因素是预训练。渐进式缩小[5]首先训练整个网络,然后添加早期退出。它重用了非Anytime网络训练,并减少了计算成本。然而,由于网络最初仅优化最终退出,Anytime版本可能会偏向于最终退出,导致当Anytime推理提前很多退出时,性能可能更差。
- 任意时间部署优化
早期退出(early-exits)由于额外的预测头,可能会增加网络在推理过程中的内存消耗和计算成本。而传统的深度学习架构按照优化速度的顺序执行所有层(例如,最小化内存访问),任何时间模型(anytime models)则需要谨慎执行层,因为早期退出可能依赖于特定的层。因此,早期退出选择和层调度对于任何时间模型的部署至关重要。层的非优化执行顺序可能会降低预测性能。
作者通过图论处理早期退出和调度,以优化由定义2给出的任何时间质量。作者将任何时间模型的执行建模为一个有向图
。给定一组网络层(或块)
,令
中的节点
代表1组已执行的层。空集
表示没有执行任何层,而全集
表示整个网络已被执行。令边集
由层的依赖关系确定,使得
中从
到
的路径等价于网络的有效执行顺序
,其中
。也就是说,如果一个执行顺序符合神经网络的执行依赖关系,并且当
时,
的层都在
中,则该执行顺序是有效的。作者的目标是 Token 边,使得从起点到终点的路径成本等价于任何时间质量。作者通过将积分拆分为每个元素的一个部分来实现这一点。给定按顺序
执行的任何时间模型
,定义2可以修改为定义依赖于顺序的任何时间质量
如下:
由于每个订单的执行时间
相同,作者省略了归一化因子
。现在,作者将积分分解为对订单
中元素的求和。设
为
中所有层平均执行时间的总和。因此,整体任意时间质量
可以表示为:
作者现在将图
的边 Token 为对应求和的部分。当
位于区间
内时,作者知道
与顺序
无关,并且仅由
决定,即执行
后到达的出口的期望质量,记为
。设图
中边
的权重
为:
因此,
中的一个有向路径对应于一个执行顺序
,其路径上边权的和等于其性能
。因此,寻找最优执行顺序的问题等价于寻找最长路径。作者考虑原始神经网络是一个有向无环图(DAG)。因此,每个层最多执行一次。作者的
构造过程确保它也是一个 DAG。DAG 的最长路径问题可以通过对边权取反,然后采用著名的 Bellman-Ford 算法 [3, 10] 来处理单源最短路径问题 [23]。
对于选择出口的问题,作者给定一个目标出口数量
(不包括起点)。作者只考虑之前定义的图中新出口所在的节点。为了获得最佳的
个出口,作者在进行
次迭代后提前终止算法,因为这会产生从起点到终点节点的最长路径,且路径长度为
条边。
如第4节所述,Anytime YOLO具有子退出的概念,其中每个退出由三个独立的退出组成。为了AnytimeYOLO能够选择子退出,作者需要进一步限制边的集合,使得一个节点只能从另一个节点通过只有一个子退出的差异来访问。因此,最长路径上的每条边对应于所选退出集合的单个子退出。
- 任意时间执行部署
在本节中,作者讨论了如何以任意时间的方式执行具有早期退出的模型。
6.1 软硬任意时推理
作者区分两种类型的即时推理,这取决于在发送终止信号后是否给予一个宽限期来完成计算(即软即时推理)或没有给予(即硬即时推理)。具体来说,区别在于是否允许在终止信号之后执行提前退出,这会导致一个等于其执行时间和将输出传输给用户所需时间的延迟。
硬实时推理更具挑战性,因为它需要中间输出立即可用。如果需要使用早期退出的结果,则必须在算法终止之前进行计算。这意味着一旦达到早期退出,就必须执行它们。随后,许多计算出的中间结果被丢弃,并被网络更深处的结果所取代。可以使用早期预测来增强后续预测,以集成风格或加速自回归 Transformer 中的计算[9, 33],但其适用性高度依赖于领域。因此,早期退出的数量与网络的计算成本之间存在权衡。随着退出数量的增加,这可能会产生显著的成本,甚至可能超过网络本身的成本。参见D节中的补充材料。
在软任意时序情况下,只有在发送终止信号后才会执行退出操作。因此,早期退出的数量对执行时间没有影响,但必须等待退出操作的执行时间,这可能非常长。
6.2 任意时间执行障碍
作者简要讨论了如何以任意时间方式执行具有早期退出的网络以及目前面临的挑战。任意时间推理需要能够在执行过程中中断并返回之前计算的结果。CPU推理相对简单,因为作者只需依次执行每一层,并将结果存储在预定义的内存块中,这样无论何时被中断,该内存块都包含最新的结果。
然而,目前在GPU上部署Anytime YOLO更具挑战性。CUDA Kernel 的设计是异步执行的。因此,除非CUDA本身提供支持,否则无法取消或中断已排队的层(即已排队的CUDA Kernel )。通常情况下,异步排队多个层会更有效率,这促使整个模型一次性进行异步执行。此外,大多数推理框架如ONNXRuntime、TensorRT或Tensorflow Lite通常对整个网络进行网络优化(例如层融合),并将整个模型作为一个整体执行。
实现任何时间支持的一种可能性是强制GPU Kernel 检查全局中断标志以不执行工作而返回。然而,这需要对采用的部署框架进行大量修改,并且可能存在错误风险。作者寻求一种系统性的方法,通过将网络分割成可以条件执行的块。尽管这仍然需要在主机上进行常规同步并产生不可忽视的开销,但不需要对采用的框架进行任何修改。
因此,在GPU上,如果完整模型被执行,作者的任意时间推理速度较慢。利用TensorRT和TorchScript进行任意时间推理的影响可以在作者的补充材料中D节找到。作者的任意时间推理提供了在任何时候中断推理的可能性,如果GPU厂商支持任何中断和取消功能,开销可以进一步优化。
作者注意到,这些障碍也适用于其他AI加速器,如神经处理单元(NPUs),因为它们同样异步执行操作,并且通常与优化整个网络作为一个单元的框架一起使用。
- 实验评估
作者使用标准的训练-测试划分,遵循YOLOv9的协议[30],评估了作者提出的AnytimeYOLO模型中等变体的性能,在MS COCO基准[16]上进行。补充部分B提供了对小型和中型变体的全面评估。
由于与早期退出的直接兼容性问题,作者省略了[30]中的PGI训练技术,导致作者的 Baseline GELAN-m性能略低于YOLOv9-m。作者使用单个NVIDIA A100 GPU,以32个批处理大小训练所有模型500个epoch,每次运行耗时7天,并使用与YOLOv9相同的超参数。
在评估过程中,作者关注以下指标:
- • 非任何时间质量:作者评估最终退出点的性能,即没有早期退出的网络性能。作者使用在IoU为0.5时的平均精度(mAP)作为评估指标,因为它在目标检测中是标准的,表示为
。
的评估提供在补充材料中,B节。
- • 任意时间质量:遵循定义2中的任意时间质量,作者使用达到的出口
作为质量函数,以
曲线的积分为主要指标
。对于时间,作者给予同等权重。为了更重视相对性能提升,作者还考虑达到的性能与非任意时间 Baseline 之间的平方误差作为次要评估指标 Q APsoSE。
- • 模型大小:作者报告模型大小(MSize),以展示权重的内存使用情况。
- • 任意时间粒度:作者报告了退出之间的最大时间步长,即最大
,以展示 Anytime YOLO 的推理粒度。对于所报告的时间,作者使用 A100,以批大小为 1 进行推理,并单独测量各层。
初步实验(详细内容见补充材料C节)为作者提供了以下关键发现,这些发现指导了作者的实验设计:1)没有明确的证据表明更多的子出口总是更好的,这促使作者探索选择
个子出口;2)在作者的初步实验中,应用400个epoch进行预训练导致的结果不如200个epoch,因此作者选择了不进行预训练或进行200个epoch的预训练;3)作者在第4.2节讨论了在训练中利用联合优化和出口采样的可能性,发现它们之间的差异可以忽略不计,因此作者只进行了出口采样。
作为 Baseline ,作者对GELAN-m和GELAN-
架构均训练了一个不带额外早期退出的变体。对于转置模型的任意时间性能评估,作者使用第5节中的最优路径方法。在评估任意时间性能时,作者采用软任意时间推理方案,排除未使用出口的检测Head成本。
在7.1节中的实验中,作者首先以结构化的方式探索可能的设计选项。然后,在7.2节的实验中,作者评估了所提出的路径选择算法的性能。
7.1 Anytime YOLO 的性能
不同任意时间模型的性能展示在表1中。为了完整性,作者还在表1的前三行包括了YOLOv9-m、GELAN-m和GELAN-
的非任意时间版本。
没有模型占据绝对优势。例如,如果目标是实现最大的任何时间质量,则第9行列出的变体GELAN-
,具有15个子出口且未进行预训练,表现最佳;而如果目标是实现最大的最终精度,则第7行列出的变体GELAN-m,具有15个子出口和200个epoch的预训练,表现最佳。
因此,权衡是必要的,最佳选择取决于目标。从表1中作者可以观察到几个趋势,这些趋势应指导模型的选择:与GELAN-m相比,作者提出的GELAN-∇·m^T在任意时刻的质量上表现更好,平方误差任意时刻质量显著提高,但牺牲了最终性能,在没有预训练的情况下表现最为明显。预训练提高了最终退出精度,但以15个子退出案例中的一些任意时刻质量为代价。在9个子退出案例中,通过预训练在一种情况下任意时刻质量仅略有增加。对于GELAN-∇·m^T,增加退出次数可以提高任意时刻质量,但会降低最终退出质量。对于GELAN-m,15个子退出案例在任意时刻和最终质量上都表现出优越性。退出之间的最大时间通过更高的退出次数得到了适度的减少。退出次数的数量是决定模型大小的主要因素。
两张任意时间质量曲线图展示了这些结果。第一张,图4,显示与未进行预训练的GELAN-m具有15个子出口相比,GELAN-
在早期具有显著更好的任意时间质量,但最终有所下降。图5比较了两种未进行预训练的GELAN-
变体和不同数量的出口。当有9个子出口时,出口质量略高,但粒度较低,导致任意时间性能略低。
一种简单的对任意时间模型的替代方案是依次运行多个不同大小的模型。为此,作者将作者的任意时间模型与依次运行YOLOv9-t、YOLOv9-s和YOLOv9-m进行了比较。作者使用了1、2、4、8、16、32、64和128的批量大小进行评估,详细内容见补充材料B节。任意时间版本并行处理一批图像,首先运行模型的第一块,然后是第二块,依此类推。在这里,作者报告使用128的批量大小来模拟一个更真实的场景,其中中等模型处理时间明显更长。结果如图6所示。任意时间模型证明更加高效,在半数的时间内达到相同性能,且具有更精细的粒度。
7.2 路径选择性能
第5节中描述的算法在给定假设下是最佳的。作者将它与两种基于贪婪方法的朴素启发式算法进行比较:贪婪时间,选择在最短时间内可到达的下一个出口;贪婪性能,选择具有最佳性能的下一个出口。
在比较GELAN
三种方法时,退出选择基本一致。对于九个子退出,没有差异。对于15个子退出,在没有预训练的情况下,比例增加到5%和8-9%。图7比较了无预训练变体的方法,显示贪婪性能启发式最初选择一个仅略好但耗时显著更长的退出。同样,贪婪时间选择一个略微更快但显著更差的退出。
使用Bellman-Ford算法,一旦评估了网络的所有出口,对于给定的模型大小,最优路径选择将在几秒钟内终止。因此,对于具有多条路径的模型,最优方法在低部署成本下相对于贪婪启发式方法提供了显著的性能提升,如图7所示。
- 结论
本文旨在介绍一种结构化的任意时间目标检测网络探索,重点关注流行的YOLO架构,并引入任意时间YOLO系列模型。作者提出了一种理论上的任意时间质量度量方法,用于评估所提出的任意时间YOLO模型的表现,使未来的工作能够比较任意时间模型。AnytimeYOLO在保持最终准确度适中的成本下实现了任意时间能力。作者强调了任意时间质量与最终输出质量之间的权衡,并指出不同因素。作者提出的GELAN-
架构在任意时间质量方面表现更优,尤其是在开始阶段,牺牲了结束时的质量。作者讨论了如何部署任意时间模型,区分了两种类型:软任意时间和硬任意推理。作者提出了选择具有多个执行顺序的网络最优顺序的方法,以及从任意时间模型中选择子集的方法。作者还展示了部署任意时间模型所面临的挑战,重点关注GPU,强调当前GPU框架对任意时间推理的支持不足。
未来工作中,作者计划探索除了早期退出之外更多特征,以实现更细粒度的控制。此外,作者将开发更多与现有推理框架兼容的高效机制,例如ONNXRuntime、TensorRT或Tensorflow Lite。
参考
[1]. You Only Look Once at Anytime (AnytimeYOLO): Analysis and Optimization of Early-Exits for Object-Detection
扫码加入👉「集智书童」交流群
(备注:方向+学校/公司+昵称)