Beihangs neue Arbeit | Q-YOLO: Zielerkennung und -quantifizierung basierend auf TensorRT und OpenVIVO

Führung

TL;DR : Heute stelle ich Ihnen eine Low-Bit-Quantisierungstechnik für einstufige Objektdetektoren vor – Q-YOLO. Der Kern von Q-YOLO besteht darin, einen vollständigen End-to-End- PTQProzess einzuführen, ein auf einem einseitigen Histogramm (UH) basierendes Aktivierungsquantisierungsschema zu übernehmen und dann den maximalen Grenzwert durch Minimierung des Quantisierungsfehlers des mittleren quadratischen Fehlers (MSE) zu bestimmen.

Die obige Abbildung zeigt das Histogramm der Aktivierungswertverteilung der Ebene model.21.conv in YOLOv5s (mit 2048 Bins). Es ist zu erkennen, dass die meisten Werte im Intervall von 0 bis -0,2785 verteilt sind, während die Häufigkeit von Werten über Null deutlich abnimmt [Grundbedienung]. In:

  • min stellt einen festen Mindestgrenzwert dar und max stellt einen maximalen Grenzwert dar, der dem Min-Max-Prinzip folgt.
  • Max Q-YOLO(8) bezieht sich auf den maximalen Cutoff-Wert bei Verwendung des Q-YOLO-Quantisierungsmodells bei 8-Bit.
  • Max Q-YOLO(4) gibt den maximalen Cutoff-Wert an, wenn das Q-YOLO-Quantisierungsmodell bei 4 Bit angewendet wird.

Umfangreiche Experimente mit verschiedenen Objektdetektoren zeigen, dass Q-YOLO die grundlegenden Post-Training-Quantisierungsmodelle deutlich übertrifft. Durch die Anwendung des 8-Bit-Q-YOLO-Modells auf YOLOv7 wird eine dreifache Geschwindigkeit erreicht und gleichzeitig eine vergleichbare Leistung wie das Vollpräzisionsmodell im COCO-Datensatz beibehalten, was seine potenzielle Lösung als quantisierten Echtzeit-Objektdetektor hervorhebt.

Motivation

Es ist bekannt, dass die Echtzeit-Objekterkennung auf Edge-Geräten mit begrenzten Ressourcen immer noch mit Rechenkosten verbunden ist, was ihre praktischen Anwendungen einschränkt. Um eine effiziente Online-Argumentation zu erreichen, sind in den letzten Jahren auch viele Arbeiten zur Netzwerkkomprimierung entstanden, darunter:

  1. Verbesserungen im Netzwerkdesign;
  2. Neural Network Search-NAS;
  3. Netzwerkbereinigung;
  4. Modellquantifizierung;
  5. ...

其中,量化是用的比较多且成熟的技术。而在量化方法中,有两种常见的方法,分别是量化感知训练QAT)和训练后量化PTQ)。虽然 QAT 通常比 PTQ 获得更好的结果,但在量化过程中需要对所有模型参数进行训练和优化,因此需要预训练数据和显著的 GPU 资源,使得 QAT 的执行变得具有挑战性【其实就是繁琐】。相反,PTQ 是一种更高效的实现实时目标检测器量化的方法。因此 Q-YOLO 便后量化操作的。

为了研究实时目标检测的低比特量化,本文首先使用 YOLOv5 作为基准模型进行了后训练量化的实验。通过对 COCO 2017 数据集的实证分析,可以观察到量化后的性能下降显著。作者发现,量化后的 YOLO 模型性能下降的原因是激活分布不平衡【找到病因了】。

为了解决这个问题,Q-YOLO 尝试对 YOLO 模型的骨干网络、neck 和 head 均进行量化,同时采用标准的最小最大值量化方法来处理权重。为了解决激活分布不平衡的问题,同时引入一种称为单边直方图(UH)的激活量化方法。UH 通过直方图分析迭代地确定最大截断值,以最小化量化误差。

这种技术显著减少了校准时间,并有效解决了量化引起的差异,优化了量化过程,保持了稳定的激活量化。通过减少激活量化中的信息损失,该方法确保了准确的目标检测结果,从而实现了精确可靠的低位实时目标检测性能。

方法

PTQ

首先我们先回顾向下训练后量化(PTQ)过程的主要步骤和细节。

  1. 使用全精度和浮点算术对网络模型进行权重和激活的训练;
  2. 适当地对权重和激活的数值表示进行转换以进行量化;
  3. 完全量化的网络部署在整数算术硬件上或在GPU上进行模拟,以在减少内存存储和计算需求的同时保持合理的准确性水平进行高效的推理。

这里便涉及到一个均匀量化(Uniform Quantization)的概念。假设量化位宽为 b,量化器 Q(x|b) 的作用是将浮点数 x 映射到最近的量化区间。均匀量化顾名思义就是基于均匀分布的量化器,它在大多数硬件平台上得到了良好的支持。均匀量化的无符号量化器定义如下:

这上面涉及到一些量化参数我们就不展开了,有兴趣的可以自行查阅相关资料。既然有了量化,必然就有反量化操作:

具体实施

当进行模型量化时,主要的目标是将浮点数的权重和激活值转换为整数表示,以减少计算和存储的需求。由于量化更多属于工程方面的东西,我们也不过多介绍复杂的公式,大家可以亲自实战下,这里仅提一些要点帮助大家理解。

需要注意的是,量化范围设置是该方案中的关键步骤之一。它的目标是确定量化格点的上界和下界,即截断阈值,以平衡截断误差和舍入误差。截断误差发生在将数据截断以适应预定义的格点范围内时,会导致信息丢失和量化表示的精度降低。舍入误差是由舍入操作引入的不准确性造成的,这会累积并对量化表示的整体准确性产生影响。

这里介绍两种量化范围设置方法:

MinMax

这种方法针对权重量化。它将截断阈值设置为权重的最小值和最大值,以避免截断误差。然而,它对异常值非常敏感,因为波动大的异常值可能导致过多的舍入误差。

均方误差(MSE)

为了缓解异常值的影响,可以使用基于均方误差的方法进行范围设置。该方法通过寻找最小化原始张量和量化张量之间均方误差的截断阈值来确定范围。这个优化问题通常使用网格搜索、黄金分割法或解析逼近方法来解决。

此外,对于激活值量化,Q-YOLO 的核心就是提出一种称为单边直方图(UH)激活量化的方法。在该方法中,首先通过对校准数据集进行前向传播得到激活值的经验研究。根据观察到的激活值分布情况,使用UH方法来确定最大截断值,同时将最小截断值固定为一个经验值。这个方法通过迭代寻找最小化量化误差的最佳截断范围,从而减少了校准时间,并提高了激活量化的稳定性和准确性。

通过这些量化范围设置方法,Q-YOLO 能够有效地将模型的权重和激活值进行量化,从而在保持合理准确性的同时,显著减少计算和存储需求,实现在资源有限的边缘设备上进行实时目标检测的高效部署。

实验

:::block-1

简单来说,在权重量化方面,本文使用了对称的通道量化方法。而在激活值量化方面,则使用了非对称的层量化方法。这样的选择是为了在权衡准确性和计算效率时达到最佳结果。此外,为了公平比较,权重量化方面始终采用了 MinMax 方法。这种策略的目的是保持模型整体性能的同时,尽可能减少对输入和输出层的准确性影响。 :::

:::block-1

上表对比了几种量化方法和检测方法在计算复杂度和存储成本方面的差异。Q-YOLO 极大地加速了计算过程,并降低了各种 YOLO 检测器的存储需求。在检测准确性方面,使用 Q-YOLO 将 YOLOv5 系列模型量化为 8 位时,与全精度模型相比,几乎没有平均精度(AP)值下降。随着模型参数数量的急剧增加,将 YOLOv7 系列模型量化为8位会导致准确性微弱下降。当将模型量化为4位时,由于4位整数表示的表达能力减少,准确性会显著降低。特别是在使用 MinMax 量化方法时,模型准确性完全丧失;而 Percentile 方法只截断了99.99%的极端值,并未带来显著改进。相反,Q-YOLO成功地确定了更适合量化的比例,相对于传统的后训练量化(PTQ)方法,取得了显著的改进。 :::

:::block-1

最后,让我们一起看看 GPU 和 CPU 平台推理速度的测试。在部署工具方面,这里选择了TensorRT和OpenVINO。整个过程涉及将权重从torch框架转换为带有QDQ节点的ONNX模型,然后将其部署到特定的推理框架上。推理模式设置为单图像串行推理,图像尺寸为640x640。由于当前大多数推理框架只支持对称量化和8位量化,作者不得不选择对称的8位量化方案,与非对称方案相比,准确性的下降非常小。

可以看出,加速效果非常显著,特别是对于较大的YOLOv7模型,在使用GPU时,速度提升比超过了3倍,与全精度模型相比。这表明在实时检测器中应用量化可以带来显著的加速效果。 :::

总结

本文介绍了Q-YOLO,一种高效的一阶段目标检测器,采用低比特量化方法解决传统量化 YOLO 模型中激活分布不平衡引起的性能下降问题。Q-YOLO 采用全面的后训练量化(PTQ)流程,结合了经过精心设计的基于单边直方图(UH)的激活量化方案。在COCO数据集上进行的广泛实验证明了 Q-YOLO 的有效性。它在准确性和计算成本之间取得了更好的平衡,优于其他后训练量化方法。这项研究显著推进了在资源有限的边缘设备上高效部署目标检测模型,实现了减少计算和内存需求的实时检测。

Supongo que te gusta

Origin juejin.im/post/7258483700816281660
Recomendado
Clasificación