点击下方卡片,关注「集智书童」公众号

点击加入👉「集智书童」交流群

实时目标检测在各种计算机视觉应用中起着至关重要的作用。然而,由于高计算和内存需求,在资源受限的平台上部署实时目标检测器带来了挑战。

本文描述了一种低bit量化方法来构建高效的单阶段检测器,称为Q-YOLO,它可以有效地解决传统量化YOLO模型中由激活分布不平衡引起的性能下降问题。Q-YOLO引入了一种完全端到端的训练后量化(PTQ)流水线,该流水线具有精心设计的基于单边直方图(UH)的激活量化方案,该方案通过最小化均方误差(MSE)量化误差来通过直方图分析确定最大截断值。

在COCO数据集上的大量实验证明了Q-YOLO的有效性,优于其他PTQ方法,同时在精度和计算成本之间实现了更有利的平衡。这项研究有助于推动在资源有限的边缘设备上高效部署目标检测模型,实现实时检测,同时减少计算和内存开销。

1、简介

实时目标检测是各种计算机视觉应用中的关键组成部分,如多目标跟踪、自动驾驶和机器人。实时目标检测器的发展,特别是基于YOLO的检测器,在精度和速度方面取得了显著的性能。例如,YOLOv7-E6目标检测器在COCO 2017上实现了55.9%的mAP,在速度和精度方面均优于基于Transformer的检测器SWin-L Cascade-Mask R-CNN和基于卷积的检测器ConvNeXt XL Cascade-Mask R-CNN。

尽管它们取得了成功,但对于资源有限的边缘设备(如移动CPU或GPU)上的实时目标检测器来说,推理过程中的计算成本仍然是一个挑战,限制了它们的实际使用。在网络压缩方面已经做出了大量努力来实现高效的在线推理。方法包括增强网络设计、进行网络搜索、网络修剪和网络量化。

尤其是量化,通过使用低bit格式表示网络,在人工智能芯片上的部署变得非常流行。有两种主流的量化方法,量化感知训练(QAT)和训练后量化(PTQ)。尽管QAT通常比PTQ获得更好的结果,但它需要在量化过程中对所有模型参数进行训练和优化。对预训练数据和大量GPU资源的需求使得QAT的执行具有挑战性。另一方面,PTQ是用于量化实时目标检测器的更有效的方法。

为了检查实时目标检测的低-bits量化,首先使用最先进的目标检测器YOLOv5建立PTQ Baseline。通过对COCO 2017数据集的实证分析,作者观察到量化后的性能显著下降。例如,采用Percentile的4-bits量化YOLOv5s仅实现7.0%mAP,与原始Float模型相比,导致30.4%的性能差距。作者发现量化YOLO的性能下降可归因于激活分布的不平衡。

如图1所示,作者观察到接近下限的值的高浓度,并且在零以上出现的次数显著减少。当使用诸如MinMax之类的固定截断值时,以极低的概率表示激活值将在有限的整数-bits宽内消耗相当多的bit,从而导致信息的进一步丢失。

鉴于上述问题,作者引入了Q-YOLO,这是一种用于实时目标检测的完全端到端的PTQ量化架构,如图2所示。QYOLO量化YOLO模型的Backbone、Neck和Head模块,同时对权重采用标准的MinMax量化。

为了解决激活分布不平衡的问题,作者引入了一种新的方法,称为基于单边直方图的(UH)激活量化。UH通过直方图迭代地确定使量化误差最小化的最大截断值。该技术显著减少了校准时间,并有效地解决了量化引起的差异,优化了量化过程以保持稳定的激活量化。

通过减少激活量化中的信息损失,作者的方法确保了准确的目标检测结果,从而实现了精确可靠的低bit实时目标检测性能。

作者的贡献总结如下:

  1. 作者介绍了一种专门为实时目标检测设计的全端到端PTQ量化架构,称为Q-YOLO。
  2. 提出了一种基于单边直方图的激活量化方法,利用直方图分析来寻找最大截断值,可以有效地最小化MSE量化误差。
  3. 通过在各种目标检测器上的大量实验,作者证明Q-YOLO显著优于 Baseline PTQ模型。YOLOv7上应用的8-bits Q-YOLO模型实现了3倍的加速,同时保持了与COCO上的全精度模型相当的性能,突出了其作为量化实时目标检测器的通用解决方案的潜力。

2、相关方法

2.1、量化方法

量化神经网络基于低-bits权重和激活,以加速模型推理并节省内存。常用的模型量化方法包括量化感知训练(QAT)和训练后量化(PTQ)。在QAT中,张等人在反向传播过程中基于投影函数和新的更新规则构建了二值化卷积神经网络。李等人提出了一种信息校正模块和分布引导蒸馏,以推动量化视觉Transformer中的位宽。TTQ使用两个Float缩放系数将权重量化为三值。Zhuang等人提出了一种低bit(2-4bit)量化方案,使用两阶段方法交替量化权重和激活,在内存、效率和性能之间提供最佳折衷。

在[Learning to quantize deep networks by optimizing quantization intervals with task loss]中,量化区间被参数化,并且通过直接最小化网络的任务损失来获得最优值。ZeroQ通过优化提取的数据集来支持均匀和混合精度量化,该数据集被设计为匹配不同网络层之间的批量归一化统计数据。[Post-training piecewise linear quantization for deep neural networks] 能够对具有长尾分布的张量值进行精确近似,并通过最小化量化误差找到整个范围。而QAT通常需要高级专家知识和巨大的GPU资源来进行训练或微调,尤其是大规模预训练模型。

为了降低上述量化成本,免训练的PTQ得到了更广泛的关注,并出现了许多优秀的作品。MinMax、EMA方法通常用于压缩或减少PTQ模型的权重。MinMax将模型中的权重和偏差值归一化到预定义的范围,例如[-1,1],以减少存储空间并提高推理速度。MSE量化涉及评估和调整量化的激活值,以最小化量化对模型性能的影响。

2.2、实时目标检测方法

基于深度学习的目标检测器通常可以分为两类:两阶段和单阶段目标检测器。两级检测器,如Faster R-CNN、RPN和Cascade R-CNN,首先生成区域建议,然后在第二阶段对其进行细化。另一方面,单阶段目标检测器由于其效率和有效性在实时目标检测中获得了显著的普及。这些检测器的目的是在神经网络的一次通过中预测目标边界框和类标签,从而消除了耗时的区域建议生成的需要。

YOLO是开创性的单次检测器之一,它将输入图像划分为网格,并将边界框和类概率分配给预定义的Anchor框。随后的YOLOv2和YOLOv3在网络架构和特征提取方面进行了改进,在不影响实时性能的情况下实现了更好的准确性。另一个有影响力的单阶段检测器是SSD,它采用一系列不同尺度的卷积层来检测各种大小的目标。通过使用多分辨率的特征图,SSD在保持实时性能的同时实现了高精度。SSD的变体,如MobileNet SSD和Pelee,进一步优化了架构,以在资源受限的设备上实现更快的推理。

效率是实时目标检测的一个关键方面,尤其是在计算有限的平台上部署时。MobileNet及其后续变体,如MobileNetV2和MobileNetV3,因其轻量级架构而受到极大关注。这些网络利用深度可分离卷积和其他技术来减少参数和操作的数量,而不会显著降低精度。ShuffleNet引入了通道Shuffle操作来利用组卷积,从而实现了模型大小和计算成本之间的权衡。ShuffleNetV2通过引入更高效的块设计和探索不同的网络规模,进一步提高了效率。

3、本文方法

3.1、准备工作

1、网络量化过程

作者首先回顾了训练后量化(PTQ)过程的主要步骤,并提供了详细信息。首先,使用全精度和浮点算法对权重和激活进行训练或将网络提供为预训练模型。随后,权重和激活的数值表示被适当地变换用于量化。最后,将完全量化的网络部署在整数运算硬件上或在GPU上进行模拟,从而在保持合理精度水平的同时,能够在减少内存存储和计算需求的情况下进行高效推理。

2、均匀量化

假设量化-bits宽为b,量化器可以公式化为将浮点数映射到最近的量化bin的函数:

存在各种量化器,其中通常使用uniform。统一量化在大多数硬件平台上都得到了很好的支持。其无符号量化器可以定义为:

其中(标度)和(零点)是量化参数。在等式4中,定义了量化网格极限。

反量化过程可以公式化为:

3.2、量化范围设置

量化范围设置是建立量化网格的上限和下限限幅阈值的过程,分别表示为。范围设置中的关键权衡在于两种类型的误差之间的平衡:截断误差和舍入误差。

如等式4所述,当数据被截断以适应预定义的网格限制时,会出现截断错误。这样的截断导致信息损失和所得到的量化表示的精度降低。另一方面,由于舍入操作过程中引入的不精确性,会出现舍入误差,如等式3所述。这种误差可能随着层数的增加而累积,并对量化表示的总体精度产生影响。以下方法在两个量之间提供了不同的权衡。

1、MinMax

在实验中,作者使用MinMax方法进行权重量化,其中 阈值 公式化为:

这样就不会产生截断错误。然而,这种方法对异常值很敏感,因为强异常值可能会导致过多的舍入误差。

2、Mean Squared Error (MSE)

缓解大异常值问题的一种方法是采用基于MSE的范围设置。在该方法中,作者确定使原始张量和量化张量之间的均方误差(MSE)最小化的

其中x表示原始张量, 表示使用所确定的 阈值 产生的量化张量。优化问题通常使用网格搜索、黄金分割法或具有闭合形式解的分析近似来解决。

3.3、基于单侧直方图(UH)的激活量化

为了解决激活值不平衡的问题,作者提出了一种新的方法,称为基于单边直方图的(UH)激活量化。作者首先通过校准数据集对正向传播后的激活值进行了实证研究。如图1所示,作者在下界附近观察到值的集中分布,同时在零以上出现的次数明显减少。

对激活值的进一步分析表明,-0.2785的经验值作为下限。这种现象可归因于YOLO系列中频繁使用Swish(SILU)激活函数。

基于经验证据,作者引入了一种非对称量化方法,称为基于单边直方图的(UH)激活量化。在UH中,作者迭代地确定使量化误差最小化的最大截断值,同时将最小截断值固定在-0.2785,如下所示:

为了评估搜索最大截断值期间的量化误差,作者使用从收集的2048个二进制的中心值导出的fp32浮点数,如算法1中所述。

考虑到所考虑的当前最大截断值,这些数字被连续量化。通过这个迭代过程,作者确定了最佳截断范围。UH激活量化方法提供了两个关键优势。

首先,它显著减少了校准时间。其次,它通过允许更大的整数集来表示0和-0.2785之间频繁出现的激活值,从而提高量化精度,从而确保稳定的激活量化。

4、实验

4.1、主要结果

作者将提出的Q-YOLO应用于量化参数数量不断增加的YOLOv5s、YOLOv5m、YOLOv7和YOLOv7x。表1中给出了全精度模型以及使用MinMax、Percentile和Q-YOLO方法的8-bits和4-bits量化模型的结果。

表1列出了几种量化方法和检测方法在计算复杂度、存储成本方面的比较。Q-YOLO大大加速了各种YOLO检测器的计算并降低了存储需求。类似地,在检测精度方面,当使用Q-YOLO将YOLOv5系列模型量化为8bit时,与全精度模型相比,平均精度(AP)值实际上没有下降。

随着模型参数的数量急剧增加,将YOLOv7系列模型量化为8-bits会导致精度极为轻微的下降。当将模型量化为4bit时,由于4bit整数表示的表达性降低,精度经历了显著的损失。

特别地,当使用MinMax量化方法时,模型失去了所有的准确性;而百分位数方法,大致截断了99.99%的极值,未能带来显著的改进。不同的是,Q-YOLO成功地确定了更合适的量化scale,与传统的训练后量化(PTQ)方法相比,得到了相当大的提升。

4.2、消融实验

1、激活量化中的对称性

如今,量化方案经常受到硬件限制;例如,NVIDIA只支持对称量化,因为它对推理速度更友好。因此,讨论激活值量化中的对称性是有意义的。

表2给出了对对称和非对称量化使用Q-YOLO的结果的比较,后者表现出更高的精度。负激活值的范围在0到-0.2785之间,而正激活值的幅度超过负激活值。如果作者在正侧和负侧强制整数表达式bit位数相等,则精度自然会降低。此外,随着量化bit位数的减少,这种下降变得更加明显。

2、Quantization Type

在表3中,作者分析了不同量化类型对YOLOv5s和YOLOv5m模型性能的影响,考虑了3种情况:

  • 仅量化权重(仅权重)

  • 仅量化激活值(仅激活)

  • 同时量化权重和激活值(权重+激活)

结果表明,与量化激活值相比,量化权重始终会导致更大的性能退化。此外,bit越低,量化引起的损失就越大。在YOLO中,神经网络学习的权重本质上代表了网络获取的知识,这使得权重的精度对模型性能至关重要。相反,激活值充当通过网络传播的输入数据的中间表示,并且可以在一定程度上容忍一定程度的量化误差。

4.3、推理速度

为了实际验证量化方案带来的加速效益,作者在GPU和CPU平台上进行了推理速度测试。对于GPU,作者选择了常用的NVIDIA RTX 4090和Tesla T4,它们通常用于计算中心的推理任务。由于作者的CPU资源有限,作者只测试了i7-12700H和i9-10900,这两款产品都具有x86架构。

对于部署工具,作者选择了TensorRT和OpenVINO。整个过程包括将torch框架中的权重转换为具有QDQ节点的ONNX模型,然后将它们部署到特定的推理框架中。推理模式设置为单图像串行推理,图像大小为640x640。

由于目前大多数推理框架只支持对称量化和8-bits量化,作者不得不选择对称的8-bits量化方案,这导致与非对称方案相比,精度下降幅度极小。

如表4所示,加速度非常显著,尤其是对于较大的YOLOv7模型,其中与全精度模型相比,使用GPU时的加速比甚至超过了3倍。这表明在实时检测器中应用量化可以带来显著的加速。

5、参考

[1].Q-YOLO:Efficient Inference for Real-time Object Detection⋆.

6、推荐阅读

TurboViT出世 | 比MobileViT小3倍,速度精度同时完成超车!!!


DETR忆往昔 | 全面回顾DETR目标检测的预训练方法,让DETR训练起来更加丝滑


训练Backbone你还用EMA?ViT训练的大杀器EWA升级来袭


扫码加入👉「集智书童」交流群

(备注:方向+学校/公司+昵称


想要了解更多:

前沿AI视觉感知全栈知识👉「分类、检测、分割、关键点、车道线检测、3D视觉(分割、检测)、多模态、目标跟踪、NerF

行业技术方案👉AI安防、AI医疗、AI自动驾驶
AI模型部署落地实战👉CUDA、TensorRT、NCNN、OpenVINO、MNN、ONNXRuntime以及地平线框架」

欢迎扫描上方二维码,加入集智书童-知识星球,日常分享论文、学习笔记、问题解决方案、部署方案以及全栈式答疑,期待交流!


免责声明
凡本公众号注明“来源:XXX(非集智书童)”的作品,均转载自其它媒体,版权归原作者所有,如有侵权请联系我们删除,谢谢。

点击下方“阅读原文”,
了解更多AI学习路上的「武功秘籍」

内容中包含的图片若涉及版权问题,请及时与我们联系删除