OpenPPL / ppq

PPL Quantization Tool (PPQ) is a powerful offline neural network quantization tool.
Apache License 2.0
1.57k stars 236 forks source link

关于量化感知训练的问题 #495

Open zhaojinkui opened 1 year ago

zhaojinkui commented 1 year ago

很棒的工具,感谢开发者,我在做量化感知训练,有些问题想请教。 我仿照QAT中的imagenet重写了trainer等函数,用来对yolov7-tiny做qat。在调通训练后,碰到了如下现象:

  1. 指标会在起初的震荡提升后迅速下降:

企业微信截图_1690539947658 起初我直接在coco的11万张数据上训练,一个epoch下来map直接接近0。我选用其中的1万张,便碰到这种先升后降的情况。

  1. 由于是单分类,在float32上训练时ap05:95能达0.53,但我在完成量化后,注释掉trainer.epoch()(训练流程),直接trainer.eval(), map只有0.32,我比较奇怪掉点会有这么高么,仓库中展示的样例只是从0.46掉到0.41,会不会是我量化时哪里做的有问题。
ZhangZhiPku commented 1 year ago

是的,我们训练时也会遇到这个问题 我一般认为这是由于模型的batchnorm被移除了,所以训练不稳定导致的。(我并不确定是否真的是这样,这是一个有意思的问题,您可以更深入地进行研究)

BaofengZan commented 1 year ago

现在官方还不支持 yolo的QAT吗? 需要手动实现trainer吗

lucienne999 commented 1 year ago

感觉因为数据分布变化,导致BN数据统计不准了。 有开sync BN吗?

1095353358 commented 1 year ago

如果可以的话,能否分享以下重写后的trainer文件,我在重写这份文件时遇到了一些困难

Pedestrian-Z commented 1 year ago

很棒的工具,感谢开发者,我在做量化感知训练,有些问题想请教。 我仿照QAT中的imagenet重写了trainer等函数,用来对yolov7-tiny做qat。在调通训练后,碰到了如下现象:

  1. 指标会在起初的震荡提升后迅速下降:

企业微信截图_1690539947658 起初我直接在coco的11万张数据上训练,一个epoch下来map直接接近0。我选用其中的1万张,便碰到这种先升后降的情况。

  1. 由于是单分类,在float32上训练时ap05:95能达0.53,但我在完成量化后,注释掉trainer.epoch()(训练流程),直接trainer.eval(), map只有0.32,我比较奇怪掉点会有这么高么,仓库中展示的样例只是从0.46掉到0.41,会不会是我量化时哪里做的有问题。

您好,如果您方便的话可否可以将您写的YOLO中QAT的train.py文件分享一下,我也在写这份文件的时候遇到了些问题。(pedestrian_z@163.com)

InverseFunction commented 1 year ago

很棒的工具,感谢开发者,我在做量化感知训练,有些问题想请教。 我仿照QAT中的imagenet重写了trainer等函数,用来对yolov7-tiny做qat。在调通训练后,碰到了如下现象:

1. 指标会在起初的震荡提升后迅速下降:

企业微信截图_1690539947658 起初我直接在coco的11万张数据上训练,一个epoch下来map直接接近0。我选用其中的1万张,便碰到这种先升后降的情况。

2. 由于是单分类,在float32上训练时ap05:95能达0.53,但我在完成量化后,注释掉trainer.epoch()(训练流程),直接trainer.eval(), map只有0.32,我比较奇怪掉点会有这么高么,仓库中展示的样例只是从0.46掉到0.41,会不会是我量化时哪里做的有问题。

您好,我在使用qat量化yolo时出现了很多问题,冒昧的请问您是否可以分享您重写的QAT项目文件,谢谢(2905470357@qq.com)

KuaiQuXueX1 commented 1 year ago

很棒的工具,感谢开发者,我在做量化感知训练,有些问题想请教。 我仿照QAT中的imagenet重写了trainer等函数,用来对yolov7-tiny做qat。在调通训练后,碰到了如下现象:

  1. 指标会在起初的震荡提升后迅速下降:

企业微信截图_1690539947658 起初我直接在coco的11万张数据上训练,一个epoch下来map直接接近0。我选用其中的1万张,便碰到这种先升后降的情况。

  1. 由于是单分类,在float32上训练时ap05:95能达0.53,但我在完成量化后,注释掉trainer.epoch()(训练流程),直接trainer.eval(), map只有0.32,我比较奇怪掉点会有这么高么,仓库中展示的样例只是从0.46掉到0.41,会不会是我量化时哪里做的有问题。

您好,我在使用qat量化yolov5时出现了很多问题,训练时梯度不下降,看您的v7可以量化,想必yolov5也可以进行量化,因此也冒昧的请问您是否可以分享您重写的QAT项目文件,谢谢,若不方便的话想请教您几个问题,希望可以联系我:yangzhao3@foxmail.com