目录:
飞桨模型转换工具X2Paddle支持将Caffe/TensorFlow/ONNX/PyTorch
的模型一键转为飞桨(PaddlePaddle)的预测模型。借助X2Paddle的能力,PaddleSlim的自动压缩功能可方便地用于各种框架的推理模型。
本示例将以TensorFlow框架的MobileNetV1模型为例,介绍如何自动压缩其他框架中的图像分类模型。本示例会利用TensorFlow开源models库,将TensorFlow框架模型转换为Paddle框架模型,再使用ACT自动压缩功能进行自动压缩。本示例使用的自动压缩策略为量化训练。
模型 | 策略 | Top-1 Acc | 耗时(ms) threads=1 | Inference模型 |
---|---|---|---|---|
MobileNetV1 | Base模型 | 71.0 | 30.45 | Model |
MobileNetV1 | 量化+蒸馏 | 70.22 | 15.86 | Model |
- 测试环境:
骁龙865 4*A77 4*A55
说明:
- MobileNetV1模型源自tensorflow/models
(1)安装paddlepaddle:
# CPU
pip install paddlepaddle==2.4.1
# GPU 以Ubuntu、CUDA 11.2为例
python -m pip install paddlepaddle-gpu==2.4.1.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
(2)安装paddleslim:
pip install paddleslim
(3)安装TensorFlow:
pip install tensorflow == 1.14
(3)安装X2Paddle的1.3.6以上版本:
pip install x2paddle
本案例默认以ImageNet1k数据进行自动压缩实验。
(1)转换模型
x2paddle --framework=tensorflow --model=tf_model.pb --save_dir=pd_model
即可得到MobileNetV1模型的预测模型(model.pdmodel
和 model.pdiparams
)。如想快速体验,可直接下载上方表格中MobileNetV1的Base模型。
预测模型的格式为:model.pdmodel
和 model.pdiparams
两个,带pdmodel
的是模型文件,带pdiparams
后缀的是权重文件。
蒸馏量化自动压缩示例通过run.py脚本启动,会使用接口paddleslim.auto_compression.AutoCompression
对模型进行自动压缩。配置config文件中模型路径、蒸馏、量化、和训练等部分的参数,配置完成后便可对模型进行量化和蒸馏。具体运行命令为:
# 单卡
export CUDA_VISIBLE_DEVICES=0
python run.py --config_path=./configs/mbv1_qat_dis.yaml --save_dir='./output/'
使用eval.py脚本得到模型的mAP:
export CUDA_VISIBLE_DEVICES=0
python eval.py --config_path=./configs/mbv1_qat_dis.yaml
PaddleLite端侧部署可参考: