> 运行示例前请先安装1.2.0或更高版本PaddleSlim
# 模型量化压缩教程
压缩结果:
序号 |
任务 |
模型 |
压缩策略 |
精度(自建中文数据集) |
耗时(ms) |
整体耗时(ms) |
加速比 |
整体模型大小(M) |
压缩比例 |
下载链接 |
0 |
检测 |
MobileNetV3_DB |
无 |
61.7 |
224 |
375 |
- |
8.6 |
- |
|
识别 |
MobileNetV3_CRNN |
无 |
62.0 |
9.52 |
|
1 |
检测 |
SlimTextDet |
PACT量化训练 |
62.1 |
195 |
348 |
8% |
2.8 |
67.82% |
|
识别 |
SlimTextRec |
PACT量化训练 |
61.48 |
8.6 |
|
2 |
检测 |
SlimTextDet_quat_pruning |
剪裁+PACT量化训练 |
60.86 |
142 |
288 |
30% |
2.8 |
67.82% |
|
识别 |
SlimTextRec |
PACT量化训练 |
61.48 |
8.6 |
|
3 |
检测 |
SlimTextDet_pruning |
剪裁 |
61.57 |
138 |
295 |
27% |
2.9 |
66.28% |
|
识别 |
SlimTextRec |
PACT量化训练 |
61.48 |
8.6 |
|
## 概述
复杂的模型有利于提高模型的性能,但也导致模型中存在一定冗余,模型量化将全精度缩减到定点数减少这种冗余,达到减少模型计算复杂度,提高模型推理性能的目的。
该示例使用PaddleSlim提供的[量化压缩API](https://paddlepaddle.github.io/PaddleSlim/api/quantization_api/)对OCR模型进行压缩。
在阅读该示例前,建议您先了解以下内容:
- [OCR模型的常规训练方法](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/detection.md)
- [PaddleSlim使用文档](https://paddleslim.readthedocs.io/zh_CN/latest/index.html)
## 安装PaddleSlim
```bash
git clone https://github.com/PaddlePaddle/PaddleSlim.git
cd Paddleslim
python setup.py install
```
## 获取预训练模型
[识别预训练模型下载地址]()
[检测预训练模型下载地址]()
## 量化训练
加载预训练模型后,在定义好量化策略后即可对模型进行量化。量化相关功能的使用具体细节见:[模型量化](https://paddleslim.readthedocs.io/zh_CN/latest/api_cn/quantization_api.html)
进入PaddleOCR根目录,通过以下命令对模型进行量化:
```bash
python deploy/slim/quantization/quant.py -c configs/det/det_mv3_db.yml -o Global.pretrain_weights=det_mv3_db/best_accuracy Global.save_model_dir=./output/quant_model
```
## 导出模型
在得到量化训练保存的模型后,我们可以将其导出为inference_model,用于预测部署:
```bash
python deploy/slim/quantization/export_model.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=output/quant_model/best_accuracy Global.save_model_dir=./output/quant_inference_model
```