论文地址:https://arxiv.org/pdf/2109.04186.pdf

开源代码:https://github.com/zysxmu/fdda

摘要

训练后量化由于避免了对原始完整训练数据集的访问而受到广泛的欢迎,但由于图像稀少,其性能也很差。为了克服这一缺陷,本文将零射量化引入的合成数据与校准数据集相结合,提出了一种细粒度数据分布对准(FDDA)方法来提高训练后量化的性能。该方法基于在训练网络深层观察到的批归一化统计量(BNS)的两个重要性质,即类间分离和类内不凝聚。为了保持这种细粒度分布信息:1)计算标定数据集的每类BNS作为每类的BNS中心,并提出BNS集中损失,迫使不同类的合成数据分布接近各自的中心。2)在图像中心加入高斯噪声来模拟图像中心的不凝聚性,并提出了一个BNS失真损失来迫使同一类的合成数据分布接近失真中心,利用这两个细粒度损失,我们的方法在ImageNet上表现出了最先进的性能,尤其是当第一层和最后一层都量化到低位时。

主要贡献

我们的贡献有三个方面:

  • 据我们所知,我们首次探索了将校正数据集和合成数据结合起来进行训练后量化,为训练后量化提供了一个新的视角。
  • 我们观察了深BNS中类间分离和类内不凝聚的性质。此外,我们设计了一个BNS集中损失和一个BNS畸变损失来保持合成数据的这两个性质。
  • 大量的实验表明,我们的FDDA可以很好地改善ImageNet上的性能。例如,当MobileNet-V1的所有层都量化到4位时,我们的FDDA在top-1精度上比当前的SOTA BRECQ[19]高6.64%。

实验

我们选择量化ResNet-18[11],MobileNetV1[13],MobileNetV2[32]和RegNet-600MF[29]。所有实验都是在具有挑战性的ImageNet上进行的,有120万个训练图像和来自1,000个类的50,000个验证图像[31]。校准数据集由1000幅图像组成,每类图像一幅。我们报告了top-1的准确性,代码是使用Pytorch[28]实现的。

为了便于实现,我们直接从GDFQ[34]中导入生成器来生成合成图像。生成器和量化网络的初始学习速率分别设置为10-3和10-6。对于生成器,优化器为Adam[16],动量为0.9,学习速率每100个历元乘以0.1。对于量化网络,优化器采用Nesterov的SGD算法[27],权值衰减为10-4,采用余弦退火算法[23]调整学习速率。在正式训练之前,我们设置了一个50个Epochs的generator的热身更新。然后,总共使用350个历元更新生成器G和量化模型Q。

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