1、使用pytorch_quantization对yolov8进行量化,ptq、敏感层分析、qat。参考里
《集智书童》的yolov5量化。
pip install ultralytics
注释ultralytics源码ops.py:262一下内容,避免推理超时break,导致验证值存在波动、不准确问题。
if (time.time() - t) > time_limit:
LOGGER.warning(f'WARNING ⚠️ NMS time limit {time_limit:.3f}s exceeded')
break # time limit exceeded
自行修改ptq、qat、敏感层分析配置参数后直接运行。
python yolov8_ptq_int8.py
Class Images Instances Box(P R mAP50 mAP50-95
未量化 all 128 929 0.64 0.537 0.605 0.446
ptq all 128 929 0.721 0.487 0.596 0.432
跳过铭感层 all 128 929 0.676 0.51 0.606 0.435
1、增加每一层输出的相似度。
2、敏感层分析更加细化,当前仅对 yolo.model.model[i]进行分析。
1、使用relu不仅更利于模块之间的融合,多余Q/DQ量化也更加友好,掉点较少可以忽略不计。