666DZY666 / micronet

micronet, a model compression and deploy lib. compression: 1、quantization: quantization-aware-training(QAT), High-Bit(>2b)(DoReFa/Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference)、Low-Bit(≤2b)/Ternary and Binary(TWN/BNN/XNOR-Net); post-training-quantization(PTQ), 8-bit(tensorrt); 2、 pruning: normal、regular and group convolutional channel pruning; 3、 group convolution structure; 4、batch-normalization fuse for quantization. deploy: tensorrt, fp32/fp16/int8(ptq-calibration)、op-adapt(upsample)、dynamic_shape
MIT License
2.22k stars 478 forks source link

yolov5量化实验 #100

Open Joejwu opened 2 years ago

Joejwu commented 2 years ago

感谢大佬的开源工作!我用的IAO下面的量化方法,在coco128的实验结果是map=0.65(因为coco128的数据集很小,所以前期在该数据集上验证以下),但是在用IAO中的量化算子替换掉原模型中的相应算子之后(参考大佬的代码,我把v5中的所有concat层以及add层都给量化了),有以下几个问题: 1、速度变慢(这个可以理解,因为原模型中是混合精度训练,我给全部改成了fp32的),但是主要是NMS处理的时间不知道为什么变得很长,很容易出发NMS模块中的超时设置,进而导致break; 2、精度下降很大,即便我用了原模型的预训练权值,但是大部分时间会在0.4左右就上下波动,而且这种波动非常剧烈,峰值在0.5,最低值可能会降到0.2;不知道这种下降幅度正不正常?

666DZY666 commented 2 years ago

1、量化训练会变慢的,2~3倍挺正常,NMS不清楚; 2、加载浮点模型,多开几个实验试试:相比浮点初始学习率X0.1,X0.01,X0.001,让波动小一点,但还是会比浮点大,正常; 3、先用默认的量化配置且head不要量化试试,看看掉多少。