
NNCF提供了一系列的训练时量化与训练后量化神经网络的接口支持,支持ONNX、OpenVINO、Pytorch等多种模型格式的压缩与量化。同时NNCF不光支持CNN系列模型的压缩与量化,还支持大模型(包含LLM与VLM)压缩与量化转换。
训练后压缩量化支持以下算法:

从中可以看出,先把模型转换为OpenVINO的IR格式以后会比直接用ONNX格式模型获取更多压缩算法支持,比如:权重压缩支持。
训练时压缩与量化支持算法:

推荐版本第三方依赖版本:
pytorch2.6
openvino2025.1
opencv-python4.10安装NNCF
pip install nncf模型量化与压缩
训练后量化(PTQ)YOLO系列INT8
这里以YOLO11为例,实现自定义YOLO11对象检测模型的训练后量化,通过PTQ在维持精度的同时大幅提升推理速度。PTQ 是最简洁的INT8量化方法,只需要模型和一个小的 (~300 个样本) 校准数据集即可实现对模型的INT8量化。对训练后的模型转为IR格式以后用,OpenVINO的NNCF框架把模型量化为INT8模式。PTQ的量化代码如下:

运行结果:

这样就实现了PTQ量化,得到模型会比原来的FP32推理速度快1.2~1.5倍左右。
模型权重压缩
OpenVINO、Pytorch格式支持直接读取然后转换为INT8权重压缩格式实现模型量化,从而加速推理性能,权重压缩量化支持对称与非对称模式,支持INT8与INT4模式。还是以YOLO11为例,
权重压缩INT8对称模式:

权重压缩INT8非对称模式

运行对比
CPU 酷睿i7 11th直接同步推理模式下:

使用FP32的流水线异步推理

使用INT8量化版本的YOLO11流水线异步推理

这波OpenVINO又能打了,事实证明 部署YOLO系列的模型只用CPU足够了!
玩转YOLOv8通杀YOLO系列所有模型!