mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-12-24 13:28:13 +08:00
Add Quantization Function. (#256)
* Add PaddleOCR Support * Add PaddleOCR Support * Add PaddleOCRv3 Support * Add PaddleOCRv3 Support * Update README.md * Update README.md * Update README.md * Update README.md * Add PaddleOCRv3 Support * Add PaddleOCRv3 Supports * Add PaddleOCRv3 Suport * Fix Rec diff * Remove useless functions * Remove useless comments * Add PaddleOCRv2 Support * Add PaddleOCRv3 & PaddleOCRv2 Support * remove useless parameters * Add utils of sorting det boxes * Fix code naming convention * Fix code naming convention * Fix code naming convention * Fix bug in the Classify process * Imporve OCR Readme * Fix diff in Cls model * Update Model Download Link in Readme * Fix diff in PPOCRv2 * Improve OCR readme * Imporve OCR readme * Improve OCR readme * Improve OCR readme * Imporve OCR readme * Improve OCR readme * Fix conflict * Add readme for OCRResult * Improve OCR readme * Add OCRResult readme * Improve OCR readme * Improve OCR readme * Add Model Quantization Demo * Fix Model Quantization Readme * Fix Model Quantization Readme * Add the function to do PTQ quantization * Improve quant tools readme * Improve quant tool readme * Improve quant tool readme * Add PaddleInference-GPU for OCR Rec model * Add QAT method to fastdeploy-quantization tool * Remove examples/slim for now * Move configs folder * Add Quantization Support for Classification Model * Imporve ways of importing preprocess * Upload YOLO Benchmark on readme * Upload YOLO Benchmark on readme * Upload YOLO Benchmark on readme * Improve Quantization configs and readme * Add support for multi-inputs model
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
Global:
|
||||
model_dir: ./MobileNetV1_ssld_infer/
|
||||
format: 'paddle'
|
||||
model_filename: inference.pdmodel
|
||||
params_filename: inference.pdiparams
|
||||
image_path: ./ImageNet_val_640
|
||||
arch: MobileNetV1
|
||||
input_list: ['input']
|
||||
preprocess: cls_image_preprocess
|
||||
|
||||
|
||||
Distillation:
|
||||
alpha: 1.0
|
||||
loss: l2
|
||||
node:
|
||||
- softmax_0.tmp_0
|
||||
|
||||
|
||||
Quantization:
|
||||
use_pact: true
|
||||
activation_bits: 8
|
||||
is_full_quantize: false
|
||||
onnx_format: True
|
||||
activation_quantize_type: moving_average_abs_max
|
||||
weight_quantize_type: channel_wise_abs_max
|
||||
not_quant_pattern:
|
||||
- skip_quant
|
||||
quantize_op_types:
|
||||
- conv2d
|
||||
- depthwise_conv2d
|
||||
weight_bits: 8
|
||||
|
||||
|
||||
TrainConfig:
|
||||
train_iter: 5000
|
||||
learning_rate:
|
||||
type: CosineAnnealingDecay
|
||||
learning_rate: 0.015
|
||||
T_max: 8000
|
||||
optimizer_builder:
|
||||
optimizer:
|
||||
type: Momentum
|
||||
weight_decay: 0.00002
|
||||
origin_metric: 0.70898
|
||||
|
||||
|
||||
PTQ:
|
||||
calibration_method: 'avg' # option: avg, abs_max, hist, KL, mse
|
||||
skip_tensor_list: None
|
||||
@@ -0,0 +1,47 @@
|
||||
Global:
|
||||
model_dir: ./ResNet50_vd_infer/
|
||||
format: 'paddle'
|
||||
model_filename: inference.pdmodel
|
||||
params_filename: inference.pdiparams
|
||||
image_path: ./ImageNet_val_640
|
||||
arch: ResNet50
|
||||
input_list: ['input']
|
||||
preprocess: cls_image_preprocess
|
||||
|
||||
|
||||
Distillation:
|
||||
alpha: 1.0
|
||||
loss: l2
|
||||
node:
|
||||
- softmax_0.tmp_0
|
||||
|
||||
Quantization:
|
||||
use_pact: true
|
||||
activation_bits: 8
|
||||
is_full_quantize: false
|
||||
onnx_format: True
|
||||
activation_quantize_type: moving_average_abs_max
|
||||
weight_quantize_type: channel_wise_abs_max
|
||||
not_quant_pattern:
|
||||
- skip_quant
|
||||
quantize_op_types:
|
||||
- conv2d
|
||||
- depthwise_conv2d
|
||||
weight_bits: 8
|
||||
|
||||
TrainConfig:
|
||||
train_iter: 5000
|
||||
learning_rate:
|
||||
type: CosineAnnealingDecay
|
||||
learning_rate: 0.015
|
||||
T_max: 8000
|
||||
optimizer_builder:
|
||||
optimizer:
|
||||
type: Momentum
|
||||
weight_decay: 0.00002
|
||||
origin_metric: 0.7912
|
||||
|
||||
|
||||
PTQ:
|
||||
calibration_method: 'avg' # option: avg, abs_max, hist, KL, mse
|
||||
skip_tensor_list: None
|
||||
35
tools/quantization/configs/detection/yolov5s_quant.yaml
Normal file
35
tools/quantization/configs/detection/yolov5s_quant.yaml
Normal file
@@ -0,0 +1,35 @@
|
||||
Global:
|
||||
model_dir: ./yolov5s.onnx
|
||||
format: 'onnx'
|
||||
model_filename: model.pdmodel
|
||||
params_filename: model.pdiparams
|
||||
image_path: ./COCO_val_320
|
||||
arch: YOLOv5
|
||||
input_list: ['x2paddle_images']
|
||||
preprocess: yolo_image_preprocess
|
||||
|
||||
Distillation:
|
||||
alpha: 1.0
|
||||
loss: soft_label
|
||||
|
||||
Quantization:
|
||||
onnx_format: true
|
||||
use_pact: true
|
||||
activation_quantize_type: 'moving_average_abs_max'
|
||||
quantize_op_types:
|
||||
- conv2d
|
||||
- depthwise_conv2d
|
||||
|
||||
|
||||
PTQ:
|
||||
calibration_method: 'avg' # option: avg, abs_max, hist, KL, mse
|
||||
skip_tensor_list: None
|
||||
|
||||
TrainConfig:
|
||||
train_iter: 3000
|
||||
learning_rate: 0.00001
|
||||
optimizer_builder:
|
||||
optimizer:
|
||||
type: SGD
|
||||
weight_decay: 4.0e-05
|
||||
target_metric: 0.365
|
||||
35
tools/quantization/configs/detection/yolov6s_quant.yaml
Normal file
35
tools/quantization/configs/detection/yolov6s_quant.yaml
Normal file
@@ -0,0 +1,35 @@
|
||||
Global:
|
||||
model_dir: ./yolov6s.onnx
|
||||
format: 'onnx'
|
||||
model_filename: model.pdmodel
|
||||
params_filename: model.pdiparams
|
||||
image_path: ./COCO_val_320
|
||||
arch: YOLOv6
|
||||
input_list: ['x2paddle_image_arrays']
|
||||
|
||||
Distillation:
|
||||
alpha: 1.0
|
||||
loss: soft_label
|
||||
|
||||
Quantization:
|
||||
onnx_format: true
|
||||
activation_quantize_type: 'moving_average_abs_max'
|
||||
quantize_op_types:
|
||||
- conv2d
|
||||
- depthwise_conv2d
|
||||
|
||||
|
||||
PTQ:
|
||||
calibration_method: 'avg' # option: avg, abs_max, hist, KL, mse
|
||||
skip_tensor_list: ['conv2d_2.w_0', 'conv2d_15.w_0', 'conv2d_46.w_0', 'conv2d_11.w_0', 'conv2d_49.w_0']
|
||||
|
||||
TrainConfig:
|
||||
train_iter: 8000
|
||||
learning_rate:
|
||||
type: CosineAnnealingDecay
|
||||
learning_rate: 0.00003
|
||||
T_max: 8000
|
||||
optimizer_builder:
|
||||
optimizer:
|
||||
type: SGD
|
||||
weight_decay: 0.00004
|
||||
34
tools/quantization/configs/detection/yolov7_quant.yaml
Normal file
34
tools/quantization/configs/detection/yolov7_quant.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
Global:
|
||||
model_dir: ./yolov7.onnx
|
||||
format: 'onnx'
|
||||
model_filename: model.pdmodel
|
||||
params_filename: model.pdiparams
|
||||
image_path: ./COCO_val_320
|
||||
arch: YOLOv7
|
||||
input_list: ['x2paddle_images']
|
||||
|
||||
Distillation:
|
||||
alpha: 1.0
|
||||
loss: soft_label
|
||||
|
||||
Quantization:
|
||||
onnx_format: true
|
||||
activation_quantize_type: 'moving_average_abs_max'
|
||||
quantize_op_types:
|
||||
- conv2d
|
||||
- depthwise_conv2d
|
||||
|
||||
PTQ:
|
||||
calibration_method: 'avg' # option: avg, abs_max, hist, KL, mse
|
||||
skip_tensor_list: None
|
||||
|
||||
TrainConfig:
|
||||
train_iter: 3000
|
||||
learning_rate:
|
||||
type: CosineAnnealingDecay
|
||||
learning_rate: 0.00003
|
||||
T_max: 8000
|
||||
optimizer_builder:
|
||||
optimizer:
|
||||
type: SGD
|
||||
weight_decay: 0.00004
|
||||
48
tools/quantization/configs/readme.md
Normal file
48
tools/quantization/configs/readme.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# FastDeploy 量化配置文件说明
|
||||
FastDeploy 量化配置文件中,包含了全局配置,量化蒸馏训练配置,离线量化配置和训练配置.
|
||||
用户除了直接使用FastDeploy提供在本目录的配置文件外,可以按需求自行修改相关配置文件
|
||||
|
||||
## 实例解读
|
||||
|
||||
```
|
||||
#全局信息
|
||||
Global:
|
||||
model_dir: ./yolov7-tiny.onnx #输入模型路径
|
||||
format: 'onnx' #输入模型格式,选项为 onnx 或者 paddle
|
||||
model_filename: model.pdmodel #paddle模型的模型文件名
|
||||
params_filename: model.pdiparams #paddle模型的参数文件名
|
||||
image_path: ./COCO_val_320 #PTQ所有的Calibration数据集或者量化训练所用的训练集
|
||||
arch: YOLOv7 #模型系列
|
||||
|
||||
#量化蒸馏训练中的蒸馏参数设置
|
||||
Distillation:
|
||||
alpha: 1.0
|
||||
loss: soft_label
|
||||
|
||||
#量化蒸馏训练中的量化参数设置
|
||||
Quantization:
|
||||
onnx_format: true
|
||||
activation_quantize_type: 'moving_average_abs_max'
|
||||
quantize_op_types:
|
||||
- conv2d
|
||||
- depthwise_conv2d
|
||||
|
||||
#离线量化参数配置
|
||||
PTQ:
|
||||
calibration_method: 'avg' #Calibraion算法,可选为 avg, abs_max, hist, KL, mse
|
||||
skip_tensor_list: None #不进行离线量化的tensor
|
||||
|
||||
|
||||
#训练参数
|
||||
TrainConfig:
|
||||
train_iter: 3000
|
||||
learning_rate:
|
||||
type: CosineAnnealingDecay
|
||||
learning_rate: 0.00003
|
||||
T_max: 8000
|
||||
optimizer_builder:
|
||||
optimizer:
|
||||
type: SGD
|
||||
weight_decay: 0.00004
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user