paddlex使用全流程
安装模型库
!pip install paddlex==2.0rc
数据准备
VOC数据集目录如下
dataset/
├── annotations/
├── images/
训练集测试集划分
!paddlex --split_dataset --format VOC --dataset_dir MyDataset --val_value 0.2 --test_value 0.1
模型训练
1.数据集与验证集的转换
2.定义训练和验证所用的数据集
train_dataset = pdx.datasets.VOCDetection(
data_dir='MyDataset',
file_list='MyDataset/train_list.txt',
label_list='MyDataset/labels.txt',
transforms=train_transforms,
shuffle=True)
3.选择训练模型
pdx.models.FasterRCNN
pdx.models.YOLOv3
3.模型初始化、模型训练
model = pdx.models.YOLOv3(num_classes=num_classes, backbone='MobileNetV3_ssld')
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/release/2.0-rc/paddlex/cv/models/detector.py#L155
# 各参数介绍与调整说明:https://paddlex.readthedocs.io/zh_CN/develop/appendix/parameters.html
model.train(
num_epochs=270,
train_dataset=train_dataset,
train_batch_size=2,
eval_dataset=eval_dataset,
learning_rate=0.001 / 8,
warmup_steps=1000,
warmup_start_lr=0.0,
save_interval_epochs=1,
lr_decay_epochs=[216, 243],
save_dir='output/yolov3_mobilenet')
模型预测
加载模型
model = pdx.load_model('output/yolov3_mobilenet/best_model')
result = model.predict(img)
模型裁剪
模型裁剪可以更好地满足在端侧、移动端上部署场景下的性能需求,可以有效得降低模型的体积,以及计算量,加速预测性能。
1.分析模型各层参数在不同的剪裁比例下的敏感度
2.根据选择的FLOPs减小比例对模型进行剪裁
3.对剪裁后的模型重新训练
paddlex部署
paddlex C++部署
!git clone https://gitee.com/paddlepaddle/PaddleX.git
%cd /home/aistudio/PaddleX/dygraph/deploy/cpp
下载PaddlePaddle C++ 预测库
CPU/GPU版本的预测库
!wget https://paddle-inference-lib.bj.bcebos.com/2.1.0-cpu-avx-mkl/paddle_inference.tgz
修改编译参数
修改PaddleX/dygraph/deploy/cpp/script/build.sh脚本中的参数
WITH_GPU
PADDLE_DIR
CUDA_LIB
CUDNN_LIB
修改yaml依赖包路径并编译
到终端中修改PaddleX/dygraph/deploy/cpp/cmake/yaml-cpp.cmake文件,将URL https://bj.bcebos.com/paddlex/deploy/deps/yaml-cpp.zip中网址替换为下载好的路径
!sh scripts/build.sh
动态模型转静态模型
!paddlex --export_inference --model_dir=./yolov3_mobilenet --save_dir=./
加载导出的模型并使用GPU预测
!PaddleX/dygraph/deploy/cpp/build/demo/model_infer --use_gpu=1
--model_filename=inference_model/model.pdmodel
--params_filename=inference_model/model.pdiparams
--cfg_file=inference_model/model.yml
--image=/home/aistudio/helmet.jpg
--model_type=det
C++预测结果与Python预测结果进行对比
EasyEdge部署
直接上传模型选择部署平台生成部署程序