1- # 目标检测模型自动压缩
1+ # 目标检测模型自动压缩示例
22
3- 本示例将介绍如何使用PaddleDetection中Inference部署模型进行自动压缩。
3+ 目录:
4+ - [ 1.简介] ( #1简介 )
5+ - [ 2.Benchmark] ( #2Benchmark )
6+ - [ 3.开始自动压缩] ( #自动压缩流程 )
7+ - [ 3.1 环境准备] ( #31-准备环境 )
8+ - [ 3.2 准备数据集] ( #32-准备数据集 )
9+ - [ 3.3 准备预测模型] ( #33-准备预测模型 )
10+ - [ 3.4 测试模型精度] ( #34-测试模型精度 )
11+ - [ 3.5 自动压缩并产出模型] ( #35-自动压缩并产出模型 )
12+ - [ 4.预测部署] ( #4预测部署 )
13+ - [ 5.FAQ] ( 5FAQ )
414
5- ## Benchmark
15+ ## 1. 简介
16+ 本示例将以目标检测模型PP-YOLOE-l为例,介绍如何使用PaddleDetection中Inference部署模型进行自动压缩。本示例使用的自动压缩策略为量化蒸馏。
617
7- - PP-YOLOE模型:
18+
19+ ## 2.Benchmark
20+
21+ - PP-YOLOE模型
822
923| 模型 | 策略 | 输入尺寸 | mAP<sup >val<br >0.5:0.95 | 预测时延<sup ><small >FP32</small ><sup ><br ><sup >(ms) | 预测时延<sup ><small >FP32</small ><sup ><br ><sup >(ms) | 预测时延<sup ><small >INT8</small ><sup ><br ><sup >(ms) | 配置文件 | Inference模型 |
1024| :-------- | :-------- | :--------: | :---------------------: | :----------------: | :----------------: | :---------------: | :-----------------------------: | :-----------------------------: |
1125| PP-YOLOE-l | Base模型 | 640* 640 | 50.9 | 11.2 | 7.7ms | - | [ config] ( https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml ) | [ Model] ( https://bj.bcebos.com/v1/paddle-slim-models/detection/ppyoloe_crn_l_300e_coco.tar ) |
12- | PP-YOLOE-l | 量化+蒸馏 | 640* 640 | 49.5 | - | - | 6.7ms | [ config] ( https://github.com/PaddlePaddle/PaddleSlim/tree/develop/demo/auto_compression/detection/configs/ppyoloe_l_qat_dist.yaml ) | [ Model] ( https://bj.bcebos.com/v1/paddle-slim-models/detection /ppyoloe_crn_l_300e_coco_quant.tar ) |
26+ | PP-YOLOE-l | 量化+蒸馏 | 640* 640 | 50.6 | - | - | 6.7ms | [ config] ( https://github.com/PaddlePaddle/PaddleSlim/tree/develop/demo/auto_compression/detection/configs/ppyoloe_l_qat_dist.yaml ) | [ Model] ( https://bj.bcebos.com/v1/paddle-slim-models/act /ppyoloe_crn_l_300e_coco_quant.tar ) |
1327
1428- mAP的指标均在COCO val2017数据集中评测得到。
1529- PP-YOLOE模型在Tesla V100的GPU环境下测试,测试脚本是[ benchmark demo] ( https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.4/deploy/python )
1630
17- ## 环境准备
18-
19- ### 1. 准备数据
31+ ## 3. 自动压缩流程
2032
21- 本案例默认以COCO数据进行自动压缩实验,如果自定义COCO数据,或者其他格式数据,请参考[ PaddleDetection数据准备文档] ( https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.4/docs/tutorials/PrepareDataSet.md ) 来准备数据。
22-
23- 如果数据集为非COCO格式数据,请修改[ configs] ( ./configs ) 中reader配置文件中的Dataset字段。
33+ #### 3.1 准备环境
34+ - PaddlePaddle >= 2.2 (可从[ Paddle官网] ( https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/pip/linux-pip.html ) 下载安装)
35+ - PaddleSlim >= 2.3 或者适当develop版本
36+ - PaddleDet >= 2.4
2437
25- ### 2. 准备需要量化的环境
38+ 安装paddlepaddle:
39+ ``` shell
40+ # CPU
41+ pip install paddlepaddle
42+ # GPU
43+ pip install paddlepaddle-gpu
44+ ```
2645
27- - PaddlePaddle >= 2.2
28- - PaddleDet >= 2.4
46+ 安装paddleslim:
47+ ``` shell
48+ pip install paddleslim
49+ ```
2950
51+ 安装paddledet:
3052``` shell
3153pip install paddledet
3254```
3355
3456注:安装PaddleDet的目的是为了直接使用PaddleDetection中的Dataloader组件。
3557
36- ### 3. 准备待量化的部署模型
3758
38- 如果已经准备好部署的` model.pdmodel ` 和` model.pdiparams ` 部署模型,跳过此步。
59+ #### 3.2 准备数据集
60+
61+ 本案例默认以COCO数据进行自动压缩实验,如果自定义COCO数据,或者其他格式数据,请参考[ PaddleDetection数据准备文档] ( https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.4/docs/tutorials/PrepareDataSet.md ) 来准备数据。
62+
63+ 如果数据集为非COCO格式数据,请修改[ configs] ( ./configs ) 中reader配置文件中的Dataset字段。
64+
65+ #### 3.3 准备预测模型
66+
67+ 预测模型的格式为:` model.pdmodel ` 和 ` model.pdiparams ` 两个,带` pdmodel ` 的是模型文件,带` pdiparams ` 后缀的是权重文件。
68+
69+ 注:其他像` __model__ ` 和` __params__ ` 分别对应` model.pdmodel ` 和 ` model.pdiparams ` 文件。
70+
3971
4072根据[ PaddleDetection文档] ( https://github.com/PaddlePaddle/PaddleDetection/blob/develop/docs/tutorials/GETTING_STARTED_cn.md#8-%E6%A8%A1%E5%9E%8B%E5%AF%BC%E5%87%BA ) 导出Inference模型,具体可参考下方PP-YOLOE模型的导出示例:
4173- 下载代码
@@ -59,27 +91,28 @@ wget https://bj.bcebos.com/v1/paddle-slim-models/detection/ppyoloe_crn_l_300e_co
5991tar -xf ppyoloe_crn_l_300e_coco.tar
6092```
6193
62- ### 4. 测试模型精度
94+ #### 3. 4. 测试模型精度
6395
64- 使用 [ run.py ] ( run.py ) 脚本得到模型的mAP :
96+ 使用run.py脚本得到模型的mAP :
6597```
6698python run.py --config_path=./configs/ppyoloe_l_qat_dist.yaml --eval=True
6799```
68100
69101** 注意** :TinyPose模型暂不支持精度测试。
70102
71- ## 开始自动压缩
103+ #### 3.5 自动压缩并产出模型
72104
73- ### 进行量化蒸馏自动压缩
74- 蒸馏量化自动压缩示例通过[ run.py] ( run.py ) 脚本启动,会使用接口`` paddleslim.auto_compression.AutoCompression `` 对模型进行量化训练。具体运行命令为:
105+ 蒸馏量化自动压缩示例通过run.py脚本启动,会使用接口``` paddleslim.auto_compression.AutoCompression ``` 对模型进行自动压缩。配置config文件中模型路径、蒸馏、量化、和训练等部分的参数,配置完成后便可对模型进行量化和蒸馏。具体运行命令为:
75106```
76- python run.py --config_path=./configs/ppyoloe_l_qat_dist.yaml --save_dir='./output/' --devices='gpu'
107+ python run.py --config_path=./configs/ppyoloe_l_qat_dist.yaml --save_dir='./output/'
77108```
78109
79110
80- ## 部署
111+ ## 4.预测部署
81112
82113可以参考[ PaddleDetection部署教程] ( https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.4/deploy ) :
83114- GPU上量化模型开启TensorRT并设置trt_int8模式进行部署;
84115- CPU上可参考[ X86 CPU部署量化模型教程] ( https://github.com/PaddlePaddle/Paddle-Inference-Demo/blob/master/docs/optimize/paddle_x86_cpu_int8.md ) ;
85116- 移动端请直接使用[ Paddle Lite Demo] ( https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.4/deploy/lite ) 部署。
117+
118+ ## 5.FAQ
0 commit comments