专栏首页GiantPandaCVINT4量化用于目标检测

INT4量化用于目标检测

Int 4量化用于目标检测

【GiantPandaCV】文章2019 CVPR,讲的是Int 4量化用于目标检测,主要是工程化的一些trick。

文章介绍:文章是2019 CVPR 《Fully Quantized Network for Object Detection》,没有开源代码。感受:这篇文章主要是做了实践工作,可以看作是低bit量化(Int 4)用于目标检测的一些trick。

《Quantization and training of neural networks for efficient integer-arithmetic-only inference》简称IAO

量化用于目标检测有以下困难:

1、Hardware-friendly end-to-end quantization现有的一些量化算法(Dorefa-net、《Quantized neural networks:Training neural networks with low precision weights andactivations》)只是在部分操作做量化,比如卷积操作和矩阵乘法,还有些操作是全精度的。

这个会带来两个问题:(1)、一些操作在训练中没办法进行量化,比如batch normalization(Dorefa-net),这会造成训练和验证之间的不匹配(mismatch)和难以收敛;(2)、在推理时候,还是有浮点数操作,这让数据在int arithmetic和float arithmetic之间转化,影响推理速度。

2、Low bitwidth quantization on complex tasks超低bit的量化如binary NN和Ternary NN精度上难以满足,8-bit的量化算法比较成熟,再低bit的Int算法即Int-4。在IAO中,低于8-bit的quantization-aware finetune会不稳定且难以收敛。

作者发现,糟糕的精度和收敛是量化模型的一些敏感操作的不稳定造成的。1、在batch normalization中,非常小的batch在做finetune时候,会导致统计量的估算值不准。2、bn之后的activation会包含离群值,这个也会导致精度的损失。3、不同通道的模型的权值会有不同的值域,因此直接layer-wise的bn会不准确。

针对上述的问题,采用下面的trick来提升quantization-aware finetune:1、在做quantization-aware finetune时候,固定bn层的参数;然后归一化activation,归一化的参数是模型训练完的时候的均值和方差。2、用小的训练数据集去调整(activation)激活函数的阈值(要clip的阈值),用百分比的方法丢弃离群值和截断量化的激活函数值和梯度。3、对所有的参数,采用channel-wise的量化。

量化神经网络的过程:1、全精度训练 2、quantization-aware finetune(只在前向传播) 3、fully-quantized inference,这里要fold BN,激活函数和模型参数都要量化到低bit,且没有浮点数的操作

一些细节:1、mapping scheme采用均匀分布的量化策略,且是非对称量化,就是有zero-point。2、weight quantization:采用channel-wise的方式 3、激活函数值的量化:量化所有的activation,从input,到送进anchor回归和NMS的最后的activation都进行量化。激活函数截断的阈值采用EMA,与IAO文章中的方法一样。为了让4-bit更加稳定,首先从训练集中随机采样n个batches数据做校准(calibration),在这个采样的数据中做验证(跑一次训练中的evaluation),记录下每层的activation,并且让activation在[,] (0 < < 1) 内,文章设置n=20,=0.999. 4、折叠bn。在quantization-aware finetune中,固定bn的参数,不更新bn的均值和方差。5、对齐zero-point:zero-point主要用于zero-padding 6、上采样和element-wise的操作(针对FPN):上采样都采用最近插值( nearest interpolation); element-wise的加法跟IAO的一样,就是为了能有bit-shit的优化

下面是一些实验数据和表格:

Int4量化与全精度对比

消融实验

FreezeBN与不同bit的对比

截断激活函数阈值的百分比

与其他量化方法的对比图

本文分享自微信公众号 - GiantPandaCV(BBuf233),作者:LoBob

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-03-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度学习算法优化系列三 | Google CVPR2018 int8量化算法

    这是Google在CVPR 2018上发表的一篇int8量化的论文,题目为《Quantization and Training of Neural Networ...

    BBuf
  • 深入了解NNIE量化技术

    【GiantPandaCV导语】这篇文章对量化技术做了概要的介绍,由原理推导,验证实现了海思NNIE的量化算法。最后,作者还尝试了使用Pytorch对训练感知量...

    BBuf
  • MXNet实现卷积神经网络训练量化

    深度学习在移动端的应用是越来越广泛,由于移动端的运算力与服务器相比还是有差距,所以在移动端部署深度学习模型的难点就在于如何保证模型效果的同时,运行效率也有保证。

    BBuf
  • 卷积神经网络训练模拟量化实践

    深度学习在移动端的应用是越来越广泛,由于移动端的运算力与服务器相比还是有差距,

    Ldpe2G
  • 深入了解NNIE量化技术

    【GiantPandaCV导语】这篇文章对量化技术做了概要的介绍,由原理推导,验证实现了海思NNIE的量化算法。最后,作者还尝试了使用Pytorch对训练感知量...

    BBuf
  • 深度学习算法优化系列三 | Google CVPR2018 int8量化算法

    这是Google在CVPR 2018上发表的一篇int8量化的论文,题目为《Quantization and Training of Neural Networ...

    BBuf
  • 量化、数据类型、上溢和下溢

    数字信号处理中的量化指将输入信号从一个大的集合映射到一个的小集合的过程。可以简单的、狭义的理解为将一个连续的量映射到离散的集合上的过程。如下图所示,红色...

    sea-wind
  • 啥是佩琪?恕我直言,搞量化这样配齐!

    近期,有很多读者从知乎、微信后台留言,问我们从事量化行业,应该掌握哪些技能,有哪些要求,我们综合公众号这几年的推文和行业调研,给大家做一个简单回答。

    量化投资与机器学习微信公众号
  • 送书 | 别泡枸杞,别晒步数!7招搞懂健康数据,有型有颜等TA来撩

    导读:你的日常活动正在产生大量数据!但其中很多数据也正在被你浪费。你以为数据与健康的关系,就是在朋友圈里晒晒步数?其实,并不需要复杂的技术,这些数据就可以帮你完...

    华章科技
  • 金融数据挖掘之决策树(ID3)

    数说工作室提供策略编写、数据分析服务和量化支持。

    数说君

扫码关注云+社区

领取腾讯云代金券