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:
yunyaoXYY
2022-10-08 15:45:28 +08:00
committed by GitHub
parent 8d47637541
commit 1efc0fa6b0
13 changed files with 736 additions and 0 deletions

View File

@@ -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

View File

@@ -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

View 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

View 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

View 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

View 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
```