Make RepVGG Greater Again | 中文翻译

news/2025/2/14 1:54:08/

性能和推理速度之间的权衡对于实际应用至关重要。而重参化可以让模型获得了更好的性能平衡,这也促使它正在成为现代卷积神经网络中越来越流行的架构。尽管如此,当需要INT8推断时,其量化性能通常太差,无法部署(例如ImageNet上的前1精度下降超过20%)。
在本文中深入探讨了这种失败的潜在机制,其中原始设计不可避免地扩大了量化误差。作者提出了一种简单、鲁棒和有效的量化友好型结构作为补救方法,该结构也享有重参化的好处,大大弥补了RepVGG的INT8和FP32精度之间的差距。没有任何花里胡哨的Trick,通过标准的训练后进行量化,便可以将在ImageNet上的Top-1精度下降控制在了2%以内。


1、简介

尽管深度神经网络在视觉、语言和语音方面取得了巨大成功,但模型压缩已变得非常必要,特别是考虑到数据中心功耗的巨大增长,以及全球范围内资源受限的边缘设备的大量分布。网络量化作为最成熟的方法之一,它具有较低的内存成本和固有的整数计算优势,因此研究模型的量化性能也是必不可少的操作。

然而,神经架构设计中的量化意识并不是优先考虑的问题,因此在很大程度上被忽视了。然而,如果量化是最终部署的强制操作,则可能会变得有害。例如,许多众所周知的体系结构都存在量化崩溃问题,如MobileNet和EfficientNet,这需要补救设计或高级量化方案。

最近,神经架构设计中最有影响力的方向之一是重参化。其中,RepVGG在训练期间将标准的Conv-BN-ReLU改造为其相同的多分支对应,这带来了强大的性能改进,同时不会增加额外的推理成本。由于其简单性和推理优势,它受到最近许多视觉任务的青睐。然而,基于重参化的模型面临众所周知的量化困难,这是阻碍行业应用的内在缺陷。事实证明,使这种结构顺利地量化是非常重要的。标准的训练后量化方案极大地降低了RepVGG-A0的精度,从72.4%降至52.2%。同时,应用量化感知训练并不简单。

这里,特别关注RepVGG的量化难度。为了解决这个问题,作者深入分析了基于重参化的典型架构的基本量化原则。也就是说,为了使网络具有更好的量化性能,权重的分布以及任意分布的处理数据应该是量化友好的。两者对于确保更好的量化性能至关重要。更重要的是,这些原则将我们引向一种全新的设计,作者称之为QARepVGG(Quantization Aware RepVGG),它不会遭受实质性的量化崩溃,其构建块如图1所示,其量化性能得到了很大改善。

本文的贡献有3点:

  1. 揭示了基于重参化的架构(如RepVGG)量化中性能崩溃的根本原因。

  2. 设计了RepVGG的量化友好模块(即QARepVGG),该模块在权重和激活分布方面保持基本差异,同时保持突出速度和性能权衡的优势。

  3. 本文提出的方法在不同的模型尺度和不同的视觉任务上得到了很好的推广,实现了可以部署的出色的后量化性能。此外,提出的模型在FP32精度方面与RepVGG相当。

2、相关方法

2.1、Reparameterization Architecture Design

RepVGG在训练阶段以多个分支的形式进行的,并在推理过程中将多个分支融合成一个分支,这个融合的过程被称为重参化。后续的工作DBBNet和MobileOne通过引入多样化的组合来扩展了这种设计,增强了性能和延迟之间的权衡。这种重参化的趋势也适用于最近的目标检测方法,如PPYOLO-E、YOLOv6和YOLOv7。

2.2、Quantization

量化是一种有效的模型压缩方法,它将网络权重和输入数据映射到较低精度(通常为8位)以进行快速计算,这大大降低了模型大小和计算成本。在不影响性能的情况下,在部署之前,大多采用量化来提高速度,这是工业生产中的事实标准。

训练后量化(PTQ)是最常见的方案,因为它只需要几批图像来校准量化参数,并且不需要额外的训练。还提出了量化感知训练(QAT)方法来提高量化精度,例如仅整数算术量化、无数据量化、硬件感知量化、混合精度量化以及零样本量化。由于QAT通常涉及到对训练代码的开发,并且需要额外的成本,因此仅当训练代码在手边并且PTQ不能产生令人满意的结果时才使用QAT。为了最好地展示所提出的量化感知架构,作者主要使用PTQ评估量化精度。同时,还通过实验证明了它对QAT也是有益的。

2.3、Quantization-aware architecture design

在《A quantization-friendly separable convolution for mobilenets》中提出了一种量化友好的可分离卷积替换方法,其中定义了一种称为信噪比(SQNR)的度量来诊断网络各组成部分的量化损失。它还认为,权重应服从均匀分布,以促进量化。

众所周知,Swish-like激活会带来量化崩溃,这要么是需要一个精细的可学习的量化方案来恢复,要么是被RELU-6取代,就像EffificientNet-Lite一样。

BatchQuant利用一次性神经结构搜索鲁棒混合精度模型,无需再训练。

2.4、Quantization for Reparameterization Network

基于重参化的架构由于其固有的多分支设计而增加了动态数值范围,因此存在量化困难。通过PTQ使重参化模型的精度下降是不可接受的。由于部署模式下的重参化网络缺乏BN层,因此使用QAT难以提高量化精度。

据作者描述,RepOpt-VGG是唯一一个通过构建一个两阶段的优化管道来努力解决这个量化问题的相关工作。RepOpt-VGG认为量化困难是由于fused kernels的量化参数分布造成的。

本文作者重新研究了这个问题,发现它要复杂得多,而且巨大的量化误差是权重和激活的协同效应的结果。

3、本文方法

一些源可能会在标准量化管道QAT中引入误差。作者选择均方误差(MSE)作为Hptq之后的度量来度量一个张量的量化误差,
MSE⁡(Q(w,t,nb),w)=1n∑i(Q(wi,t,nb)−w)2\operatorname{MSE}\left(Q\left(\mathbf{w}, t, n_{b}\right), \mathbf{w}\right)=\frac{1}{n} \sum_{i}\left(Q\left(\mathbf{w}_{i}, t, n_{b}\right)-\mathbf{w}\right)^{2} MSE(Q(w,t,nb),w)=n1i(Q(wi,t,nb)w)2
其中Q为量化过程,w∈Rnw\in R^nwRn为n个通道的权值,一个阶段阈值tttnbn_bnb为位宽。具体的量化误差由张量分布的几个因素决定,包括最大值和最小值、标准偏差、阶段阈值等。不幸的是,作者也不能给出一个具体的解,因为不能假设网络中张量的任何分布。在实践中认为一个量化友好的分布是一个具有相对较小的数值范围和一个较小的标准偏差的分布。

对于基于重参化的体系结构,有两个主要组件,权重和激活,它们需要量化,并可能导致精度下降。激活也可以作为下一层的输入,误差会逐步增加累积。因此,神经网络良好的量化性能主要需要两个基本条件:

  • C1:权重分布有利于量化

  • C2:激活分布(即模型如何响应输入特征)易于量化

根据经验,违反其中任何一种都会导致较低的量化性能。以RepVGG-A0为例,研究了为什么基于重参化的结构的量化是困难的。

3.1、深入探讨重参化结构的量化失效问题

作者首先用RepOpt的代码再现了RepVGG-A0的性能,如表1所示。在此基础上可以进一步控制实验设置。作者用PTQ的标准设置对RepVGG-A0进行量化,并评估INT8的准确性,从72.2%下降到了50.3%。

请注意,在融合多分支后使用已部署的模型,因为未融合的模型会导致额外的量化误差。这个Trick在流行的量化框架中被广泛使用。

在图2和图14a(附录)中说明了RepVGG-A0的权重分布。观察到权值在0附近分布得很好,并且不存在特定的离群值,因此它满足C1。这导致我们验证c2,如果它是激活,极大地恶化了量化。

不幸的是,激活是输入依赖的,并通过卷积与学习到的权值相结合。从理论上讲,通过假设输入和权重的任何分布来得出一些结论是很重要的。相反,可以相对地分析每个分支的标准差。

为了更好地理解,作者保持了与RepVGG相同的命名。具体来说,使用W(k)∈RC2×C1×k×kW_{(k)}\in R^{C_2×C_1×k×k}W(k)RC2×C1×k×k来表示k×kk×kk×k卷积的kernel,其中C1C_1C1C2C_2C2分别是输入和输出通道的数量。注意,k∈{1,3}k\in\{1,3\}k{1,3}为RepVGG的配置。对于k×kk×kk×k卷积后的批归一化(BN)层,使用μ(k)∈RC2\mu_{(k)}\in R^{C_2}μ(k)RC2σ(k)∈RC2\sigma_{(k)}\in R^{C_2}σ(k)RC2γ(k)∈RC2\gamma_{(k)}\in R^{C_2}γ(k)RC2β(k)∈RC2\beta_{(k)}\in R^{C_2}β(k)RC2作为平均值、标准差、比例因子和偏差。对于恒分式分支中的BN,使用μ(0)\mu_{(0)}μ(0)σ(0)\sigma_{(0)}σ(0)γ(0)\gamma_{(0)}γ(0)β(0)\beta_{(0)}β(0)

M(1)∈RN×C1×H1×W1M_{(1)}\in R^{N×C_1×H_1×W_1}M(1)RN×C1×H1×W1M(2)∈RN×C2×H2×W2M_{(2)}\in R^{N×C_2×H_2×W_2}M(2)RN×C2×H2×W2分别为输入和输出,“∗”为卷积运算符。设Y(0)Y_{(0)}Y(0)Y(1)Y_{(1)}Y(1)Y(3)Y_{(3)}Y(3)为Idnetity、1×1和3×3分支的输出。不失一般性,假设C1=C2C_1 = C_2C1=C2H1=H2H_1 = H_2H1=H2W1=W2W_1 = W_2W1=W2。然后可以将输出值M(2)M_{(2)}M(2)写成:
M(2)=Y(3)+Y(1)+Y(0)=BN(M(1)∗W(3),μ(3),σ(3),γ(3),β(3))+BN(M(1)∗W(1),μ(1),σ(1),γ(1),β(1))+BN⁡(M(1),μ(0),σ(0),γ(0),β(0))\begin{aligned} \mathrm{M}_{(2)}= & \mathrm{Y}_{(3)}+\mathrm{Y}_{(1)}+\mathrm{Y}_{(0)} \\ = & \mathrm{BN}\left(\mathrm{M}_{(1)} * \mathrm{~W}_{(3)}, \boldsymbol{\mu}_{(3)}, \boldsymbol{\sigma}_{(3)}, \boldsymbol{\gamma}_{(3)}, \boldsymbol{\beta}_{(3)}\right) \\ & +\mathrm{BN}\left(\mathrm{M}_{(1)} * \mathrm{~W}_{(1)}, \boldsymbol{\mu}_{(1)}, \boldsymbol{\sigma}_{(1)}, \boldsymbol{\gamma}_{(1)}, \boldsymbol{\beta}_{(1)}\right) \\ & +\operatorname{BN}\left(\mathrm{M}_{(1)}, \boldsymbol{\mu}_{(0)}, \boldsymbol{\sigma}_{(0)}, \boldsymbol{\gamma}_{(0)}, \boldsymbol{\beta}_{(0)}\right) \end{aligned} M(2)==Y(3)+Y(1)+Y(0)BN(M(1) W(3),μ(3),σ(3),γ(3),β(3))+BN(M(1) W(1),μ(1),σ(1),γ(1),β(1))+BN(M(1),μ(0),σ(0),γ(0),β(0))
3×3分支的批处理规范化操作可以写为:
Y(3)=γ(3)⊙M(1)∗W(3)−μ(3)ϵ+σ(3)⊙σ(3)+β(3),\mathrm{Y}_{(3)}=\gamma_{(3)} \odot \frac{\mathrm{M}_{(1)} * \mathrm{~W}_{(3)}-\boldsymbol{\mu}_{(3)}}{\sqrt{\epsilon+\boldsymbol{\sigma}_{(3)} \odot \boldsymbol{\sigma}_{(3)}}}+\boldsymbol{\beta}_{(3)}, Y(3)=γ(3)ϵ+σ(3)σ(3)M(1) W(3)μ(3)+β(3),
其中⊙\odot是元素级乘法,是一个小数值(默认为10−510^{−5}105),以获得数值稳定性。这意味着BN发挥了改变其输入的统计量(平均值和方差)w(w)w_{(w)}w(w)的作用。请注意,μ\muμ的变化并不一定会影响量化误差,因为它会将平均值推至零。然而,方差的变化直接影响了量化的精度。从概率的角度来看,给定一个随机变量X和一个标量λ\lambdaλD(λX)D(\lambda X)D(λX)的方差等于λ2D(X)\lambda ^2D(X)λ2D(X)。设X(3)=M(1)W(3)X_{(3)}= M^{(1)}W_{(3)}X(3)=M(1)W(3),那么就有:
D(Y(3))=γ(3)⊙γ(3)ϵ+σ(3)⊙σ(3)⊙D(X(3))D\left(\mathrm{Y}_{(3)}\right)=\frac{\boldsymbol{\gamma}_{(3)} \odot \boldsymbol{\gamma}_{(3)}}{\epsilon+\boldsymbol{\sigma}_{(3)} \odot \boldsymbol{\sigma}_{(3)}} \odot D\left(X_{(3)}\right) D(Y(3))=ϵ+σ(3)σ(3)γ(3)γ(3)D(X(3))

γ(3)⊙γ(3)ϵ+σ(3)⊙γ(3)⊙D(X(3))\frac{\gamma_{(3)}\odot \gamma_{(3)}}{\epsilon + \sigma_{(3)} \odot \gamma_{(3)}}\odot D(X_{(3)})ϵ+σ(3)γ(3)γ(3)γ(3)D(X(3))的值控制了X(3)X_{(3)}X(3)方差的缩小或扩大,进而导致量化性能的好或差。对于1个1×1分支和Idnetity分支,可以得出类似的结论。

基于上述分析,深入研究了RepVGG的细节。有一个关键但很容易被忽视的组件,它是一种特殊的权重衰减设计,称为customL2custom\ L_2custom L2。结果表明,该组件提高了精度,便于量化。具体的实现情况见算法1。

这种特殊的设计正则化多分支权值,就好像它正则化其等效融合kernel一样。很可能使融合权重具有量化友好的分布,可通过图14a进行验证。这个l2_loss_eq_kernell2\_loss\_ eq\_kernell2_loss_eq_kernel是,
L2custom =∣Weq∣22∣γ(3)ϵ+σ(3)⊙σ(3)∣22+∣γ(1)ϵ+σ(1)⊙σ(1)∣22.L_{2_{\text {custom }}}=\frac{\left|\mathrm{W}_{e q}\right|_{2}^{2}}{\left|\frac{\gamma_{(3)}}{\sqrt{\epsilon+\sigma_{(3)} \odot \sigma_{(3)}}}\right|_{2}^{2}+\left|\frac{\gamma_{(1)}}{\sqrt{\epsilon+\sigma_{(1)} \odot \boldsymbol{\sigma}_{(1)}}}\right|_{2}^{2}} . L2custom =ϵ+σ(3)σ(3)γ(3)22+ϵ+σ(1)σ(1)γ(1)22Weq22.

值得注意的是,优化器被鼓励扩大分母,以最小化这种损失,从而放大了激活的方差,并带来了量化困难。

除了理论分析,作者提供了一个简单的消融,通过去除Eq 5中的分母,
L2custom ′=∣Weq ∣22L_{2_{\text {custom }}}^{\prime}=\left|\mathrm{W}_{\text {eq }}\right|_{2}^{2} L2custom =Weq 22
在表2中报告了结果。在没有分母项时,FP32的准确率为71.5%,比基线值低0.7%。然而,令人惊讶的是,量化性能大大提高到61.2%。虽然在实践中仍然不可接受,但本实验表明自定义权重衰减策略L2L_2L2有助于建立一个更强的FP32模型,具有良好的权重分布,但同时扩大了激活的方差,产生量化崩溃。这促使作者放弃这个设计,继续改进。

3.2、量化友好的重参化

在这里,作者回顾了多个设置(S1-S4),以逐步解决量化崩溃。

1、S1——Normal L2L_2L2

基于以上的讨论放弃了customL2custom\ L_2custom L2策略,代之以标准的权重衰减策略。作者称这个设置为S1。仅通过此修改,将在表3中显示结果。虽然FP32的准确率比基线低0.5%,但其INT8的准确率比基线高11.3%。

但是,此设计也不满足应用程序的要求。由于没有显式的正则化器来扩大激活方差,因此可以直接检查权值的分布,如图3和图13所示。第5层和第6层的融合权值分布具有较大的标准方差(分别为2.4和5.1),比其他层大约两个数量级。

具体来说,来自第5层和第6层的融合权值的最大值分别为692.1107和1477.3740。这就解释了为什么量化性能不好。由于权重的量化过程与输入或激活无关,违反C1会导致不可修复的误差。作者重复实验了三次,这种现象均出现。

考虑到每个分支的卷积都施加了正常的L2L_2L2权值衰减,为什么一些融合的核权值有如此大的离群值呢?根据方程2和公式3,将这些方程改写为:
M(2)=M(1)∗[∑k∈{0,1,3}Reshape⁡(γ(k)ϵ+σ(k)⊙σ(k))⊙W(k)]+∑k∈{0,1,3}[β(k)−γ(k)⊙μ(k)ϵ+σ(k)⊙σ(k)]\begin{aligned} \mathrm{M}_{(2)}= & \mathrm{M}_{(1)} *\left[\sum_{k \in\{0,1,3\}} \operatorname{Reshape}\left(\frac{\gamma_{(k)}}{\sqrt{\epsilon+\boldsymbol{\sigma}_{(k)} \odot \boldsymbol{\sigma}_{(k)}}}\right)\right. \\ & \left.\odot \mathrm{W}_{(k)}\right]+\sum_{k \in\{0,1,3\}}\left[\boldsymbol{\beta}_{(k)}-\frac{\gamma_{(k)} \odot \boldsymbol{\mu}_{(\mathrm{k})}}{\sqrt{\epsilon+\boldsymbol{\sigma}_{(k)} \odot \boldsymbol{\sigma}_{(k)}}}\right] \end{aligned} M(2)=M(1)k{0,1,3}Reshape(ϵ+σ(k)σ(k)γ(k))W(k)]+k{0,1,3}[β(k)ϵ+σ(k)σ(k)γ(k)μ(k)]
其中,调整Reshape()Reshape()Reshape()用于匹配计算维度。W0W_0W0是Identity分支中的一个单位矩阵,在训练过程中是固定的,不衰减。BN的可学习参数(β,γ)(\beta,\gamma)(β,γ)通常被排除在衰减。因此,当从W0W_0W0乘以1.0时,如果γϵ+σ2\frac{\gamma}{\sqrt{\epsilon+\sigma^2}}ϵ+σ2γ本身很大,则γϵ+σ2\frac{\gamma}{\sqrt{\epsilon+\sigma^2}}ϵ+σ2γ的值将对融合后的等效kernel贡献一个较大的值。

为了验证这一点,在图4中说明了3个分支的γϵ+σ2\frac{\gamma}{\sqrt{\epsilon+\sigma^2}}ϵ+σ2γ。来自第5层和第6层Identity分支的γϵ+σ2\frac{\gamma}{\sqrt{\epsilon+\sigma^2}}ϵ+σ2γ的最大值分别为692.1107和1477.3732。有趣的是,来自第4层的3×3和1×1分支的权值也有一些较大的值,但它们的融合权值不再包含这些值。

2、S2(无BN)

解决S1满足C1问题的一个简单方法是从Identity分支1中删除BN分支。作者将此设置命名为S2,并在表3中显示了结果。

对权重量化的误差分析(见图9)表明,该设计确实符合C1的要求。该模型的FP32的精度为70.7%,INT8的精度为62.5%,这仍然是不可行的。这促使作者去验证它是否违反了C2。

由于权值是通过最小化整个训练集的损失函数来获得的,因此合理地推导出它们对偏差的贡献是很重要的。把3个分支的统计数据的期望写成,
E(Y(3))=β(3),E(Y(1))=β(1)\mathrm{E}\left(\mathbf{Y}_{(3)}\right)=\boldsymbol{\beta}_{(3)}, \mathrm{E}\left(\mathbf{Y}_{(1)}\right)=\boldsymbol{\beta}_{(1)} E(Y(3))=β(3),E(Y(1))=β(1)
如果β(3)=β(1)=β\beta_{(3)} = \beta_{(1)} = \betaβ(3)=β(1)=β,则这两个输出可以很好地对齐,它们的求和有机会扩大方差。

β\betaβ远离Y(0)Y_{(0)}Y(0)时,方差增大的概率就越高。接下来,证明β(3)=β(1)\beta_{(3)} = \beta_{(1)}β(3)=β(1)<如引理3.1。

引理3.1。使用损失函数l(W,γ,β)l(W,\gamma,\beta)l(W,γ,β)在n次迭代中使用设置S2来训练一个神经网络,对于任何给定的层,β(3)n=β(1)nβ_{(3)}^n = β_{(1)}^nβ(3)n=β(1)n

证明:

ReLU 是RepVGG中的激活函数。一方面,如果大多数输入低于零(dead ReLU),它是有害的。另一方面,如果由于失去非线性,所有的输入都高于零,它也不受青睐。根据经验,许多具有BN的现代高性能CNN模型在ReLU之前的均值通常为零。如果采用这个假设,将让E(M(2))=E(Y(1)+Y(3)+Y(0))=0E(M_{(2)})= E(Y_{(1)} + Y_{(3)} + Y_{(0)})=0E(M(2))=E(Y(1)+Y(3)+Y(0))=0。基于引理3.1,得到了β(3)=β(1)=−E(Y(0))2\beta_{(3)} = \beta_{(1)}=-\frac{E(Y_{(0)})}{2}β(3)=β(1)=2E(Y(0))

E(Y(0))≥0E(Y_{(0)})≥0E(Y(0))0,增加3个分支通常会增大方差(图5)。

S3(No BN for Identity and 1×1)

如果3×3和1×1具有相同的平均值,则它们的求和容易扩大方差。为了更好地控制方差,作者进一步删除了1×1分支中的BN。将此设置命名为S3,并在表3中显示了结果。

该设计在ImageNet上实现了70.1%的top-1 FP32精度和69.5%的INT 8精度,大大提高了量化性能。然而,FP32的精度仍然很低。

S4(Post BN on S3)

由于3个分支的添加引入了协变量移位问题,在添加3个分支后添加了额外的BN以稳定训练过程,并将此设置命名为S4(下图)。

Post BN不会影响用于部署的等效kernel融合。这进一步提高了A0模型的FP32精度,从在ImageNet上的70.1%提高到72.2%。此外,其INT8的准确率提高到70.4%。到目前为止,已经大大解决了量化失败的问题,并将S4下的网络称为QARepVGG。

4、实验

4.1、消融实验

1、变体结构设计

作者研究了不同设计的量化性能,并将结果显示在表5中。注意,当完全去除BN时,模型无法收敛。尽管后置BN的设置仅具有71.1%的INT8 top 1精度,但其FP32精度也比较低。量化间隙随着模型容量的增长(从A0到B0)而增大。

2、与RepOpt-VGG比较

RepOpt-VGG采用了梯度重参的方法,它包括两个阶段:搜索量化表和使用所获得的量化表进行训练。RepOpt的量化精度取决于Scale的搜索质量。

由于只发布了少数预训练的模型,按照RepOpt重新训练RepOpt-VGG-A0/B0模型。也就是说,在CIFAR-100上运行了240个Epoch的超参数搜索,并在ImageNet上运行完整的120个Epoch。可以用正式发布的量化表来复制RepOpt-VGG-B1的结果。然而,很难找到A0/B0具有可比性能的良好scale。

如表6所示,RepOpt-VGG-A0在ImageNet上达到了70.3%,比RepVGG低2.1%。虽然比RepVGG好得多,但它们的PTQ精度仍然太低。相比之下,本文的方法在明显的边缘上优于RepOpt。此外,本文方法没有敏感的超参数或额外的训练成本。

3、 误差分析

为了了解量化误差是如何传播的,作者对图6中的RepVGG-A0和QARepVGG-A0进行了每层MSE分析。RepVGGA0对量化更为敏感,随着累积误差变得无法忍受,就会出现崩溃。

考虑到RepVGG-A0满足C1,作者对一批图像进行采样,以描述图7中两者对C2的差异。本文的方法产生了更小的标准方差和最小/最大值的更好的激活分布,从而确保了更好的量化性能。

4、QARepVGG的QAT

量化感知训练通常用于进一步提高量化性能。然而,将QAT应用于RepVGG并不简单。相比之下,在QARepVGG上应用它很简单,因为它的后BN可以保留以方便训练。表7中所示的所有模型都训练了10个阶段(前三个阶段用于预热),初始学习率为0.01。QARepVGG的量化差距在0.3%以内。

4.2、目标检测

为了进一步验证QARepVGG的通用性,在YOLOv6等目标检测器上测试了本文方法。尽管YOLOv6通过使用RepOpt VGG缓解了这个问题,但该方法是不稳定的,需要仔细的超参数调整。

作者将“tiny”和“small”模型变量作为比较基准。在COCO 2017数据集上训练和评估QARepVGG型YOLOv6,并严格遵循其官方设置。结果如表8所示。RepVGG和QARepVGG版本在8个Tesla-V100 GPU上训练了300个Epoch。RepOpt需要额外的300个Epoch来搜索Scale。

值得注意的是,YOLOv6s RepVGG通过PTQ出现了约7.4%mAP的巨大量化退化。YOLOv6t RepVGG稍好一些,但在实际部署中,3%mAP的减少再次是不可接受的。

相反,YOLOv6s/t-QARepVGG的FP32精度与RepVGG相似,而INT8精度下降限制在1.3%mAP以内。YOLOv6 RepOpt VGG也可以提供比YOLOv6 RepVGG更好的PTQ精度。然而,这需要双倍的成本。

作者还发现,RepOpt VGG的最终精度对搜索到的超参数非常敏感,这些超参数无法鲁棒地获得。

5、总结

通过理论和定量分析,作者分析了著名的基于重参化的结构RepVGG的量化问题。它的结构缺陷不可避免地放大了量化误差,并累积产生了较差的结果。作者将其设计重构为QARepVGG,它可以生成出有利于量化的权重和激活分布。QARepVGG大大简化了最终部署的量化过程。作者强调,架构设计中的量化感知应引起更多的重视。


http://www.ppmy.cn/news/10666.html

相关文章

数字IC设计学习比较实用的资料推荐

!!!!!!!!!!!!!!!!!!!!!! 审核麻烦看一下,无下载,只是推荐书单。谢谢 !!!!!!!!!!!!!!!!!!!!!! 0 引言 数字IC设计或者FPGA在笔试、或者面试中的基础知识提问环节,考察的知识点范围还是比较广的,个人整理主要包括: 基本的V…

酷开系统——家庭场景下的智能营销系统!

随着人们生活方式的改变&#xff0c;以往传统的营销资源和渠道正在慢慢陷入一个“无用”的尴尬境地&#xff0c;而作为家庭娱乐中心的智能大屏&#xff0c;近两年所表现出来的数据和效果却逐渐备受企业和品牌方关注&#xff0c;有数据显示&#xff0c;智能大屏的家庭覆盖规模正…

vue基础

Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0…

QT 学习笔记(十六)

文章目录一、TCP 传文件流程图1. 服务器端流程2. 客户端流程二、TCP 传文件操作实现1. 服务器端2. 客户端3. TCP 传文件实现现象三、服务器端和客户端实现代码1. 主函数 main.c2. 服务器端头文件 serverwidget.h3. 服务器端源文件 serverwidget.cpp4. 客户端头文件 clientwidge…

如何用智能地教狗狗上厕所

背景 22年养了一只很可爱的小狗狗&#xff0c;我其实就一个问题&#xff1a;为啥这么可爱的狗狗会拉屎撒尿呀&#xff1f; 自从崽崽来了我们家之后&#xff0c;最让我们头疼的就是它乱拉、乱尿的问题了&#xff0c;以前会在家里到处乱来&#xff0c;最近一段时间好了很多&…

自动化测试Seleniums~1

一.什么是自动化测试 1.自动化测试介绍 自动化测试指软件测试的自动化&#xff0c;在预设状态下运行应用程序或者系统&#xff0c;预设条件包括正常和异常&#xff0c;最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 将测试人员双手解放&#xff0c;将部分测…

【博客579】netfilter network flow 和 routing decision的网络流处理交互关系

netfilter网络流转&#xff08;network flow&#xff09;与路由决策&#xff08;routing decision&#xff09;的网络流处理交互关系 1、场景&#xff1a; 我们可以通过iptables来基于netfilter机制下发我们的hook处理函数&#xff0c;那么我们平时iptables的四表五链与报文的…

yarn包管理器

快速、可靠、安全的依赖管理工具。和 npm 类似, 都是包管理工具, 可以用于下载包, 就是比npm快 中文官网地址: Yarn 中文文档 1、下载yarn 使用node下载 npm install --global yarn 官方推荐下载&#xff1a;地址 2、使用yarn 与npm类似, 可以试试, 新建一个空白文件夹, …