『paddle』paddleclas 学习笔记:模型推理

本文详细介绍了如何将训练好的PaddleClas模型转换为inference模型,包括特征提取和分类模型的转换步骤。接着,展示了主体检测、特征提取模型的推理过程,并提供了图像识别体验。此外,还讲解了模型串联推理的环境配置和图像分类的推理方法,为实际部署提供指导。
摘要由CSDN通过智能技术生成


inference 模型paddle.jit.save保存的模型)

一般是模型训练,把模型结构和模型参数保存在文件中的固化模型,多用于预测部署场景。
训练过程中保存的模型是 checkpoints 模型,保存的只有模型的参数,多用于恢复训练等。
checkpoints 模型相比,inference 模型会额外保存模型的结构信息,在预测部署、加速推理上性能优越,灵活方便,适合于实际系统集成。

接下来首先介绍如何将训练的模型转换成 inference 模型,然后依次介绍主体检测模型、特征提取模型在 CPU、GPU 上的预测方法;之后介绍主体检测、特征提取、特征检索串联的预测方法;最后介绍图像分类的预测方法。

一、训练模型转 inference 模型

1.1 特征提取模型转 inference 模型

以下命令请在 PaddleClas 的根目录执行。以商品识别特征提取模型模型为例,首先下载预训练模型:

wget -P ./product_pretrain/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/pretrain/product_ResNet50_vd_Aliproduct_v1.0_pretrained.pdparams

上述模型是 ResNet50_vd 在 AliProduct 上训练的模型,训练使用的配置文件为ppcls/configs/Products/ResNet50_vd_Aliproduct.yaml
将训练好的模型转换成 inference 模型只需要运行如下命令:

# -c 后面设置训练算法的 yml 配置文件
# -o 配置可选参数
# Global.pretrained_model 参数设置待转换的训练模型地址,不用添加文件后缀 .pdmodel,.pdopt 或 .pdparams。
# Global.save_inference_dir 参数设置转换的模型将保存的地址。
python3.7 tools/export_model.py -c ppcls/configs/Products/ResNet50_vd_Aliproduct.yaml -o Global.pretrained_model=./product_pretrain/product_ResNet50_vd_Aliproduct_v1.0_pretrained -o Global.save_inference_dir=./deploy/models/product_ResNet50_vd_aliproduct_v1.0_infer

这里也可以使用自己训练的模型。转 inference 模型时,使用的配置文件和训练时使用的配置文件相同。另外,还需要设置配置文件中的 Global.pretrained_model 参数,其指向训练中保存的模型参数文件。

转换成功后,在模型保存目录下有三个文件:

├── product_ResNet50_vd_aliproduct_v1.0_infer
│   ├── inference.pdiparams         # 识别 inference 模型的参数文件
│   ├── inference.pdiparams.info    # 识别 inference 模型的参数信息,可忽略
│   └── inference.pdmodel           # 识别 inference 模型的 program 文件

1.2 分类模型转 inference 模型

下载预训练模型:

wget -P ./cls_pretrain/ https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/ResNet50_vd_pretrained.pdparams

上述模型是使用 ResNet50_vd 在 ImageNet 上训练的模型,使用的配置文件为ppcls/configs/ImageNet/ResNet/ResNet50_vd.yaml

转 inference 模型与特征提取模型的方式相同,如下:

# -c 后面设置训练算法的yml配置文件
# -o 配置可选参数
# Global.pretrained_model 参数设置待转换的训练模型地址,不用添加文件后缀 .pdmodel,.pdopt或.pdparams。
# Global.save_inference_dir 参数设置转换的模型将保存的地址。
python3.7 tools/export_model.py -c ppcls/configs/ImageNet/ResNet/ResNet50_vd.yaml -o Global.pretrained_model=./cls_pretrain/ResNet50_vd_pretrained -o Global.save_inference_dir=./deploy/models/class_ResNet50_vd_ImageNet_infer

转换成功后,在目录下有三个文件:

├── class_ResNet50_vd_ImageNet_infer
│   ├── inference.pdiparams         # 识别 inference 模型的参数文件
│   ├── inference.pdiparams.info    # 识别 inference 模型的参数信息,可忽略
│   └── inference.pdmodel           # 识别 inference 模型的 program 文件

二、主体检测模型推理

下面介绍主体检测模型推理,以下命令请进入 PaddleClas 的 deploy 目录执行:

cd deploy

使用 PaddleClas 提供的主体检测 inference 模型进行推理,可以执行:

mkdir -p models
cd models
# 下载通用检测inference模型并解压
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/ppyolov2_r50vd_dcn_mainbody_v1.0_infer.tar && tar -xf ppyolov2_r50vd_dcn_mainbody_v1.0_infer.tar
cd ..

# 用下载的inference模型进行预测
python3.7 python/predict_det.py -c configs/inference_det.yaml

输入的图像如下所示。

最终输出结果如下:

[{'class_id': 0, 'score': 0.4762245, 'bbox': array([305.55115, 226.05322, 776.61084, 930.42395], dtype=float32), 'label_name': 'foreground'}]

检测的可视化结果如下:

如果想要修改图像,可以在 configs/inference_det.yaml 中,修改 infer_imgs 的值,或使用 -o Global.infer_imgs 修改,例如,要使用 images/anmuxi.jpg 可以运行:

python3.7 python/predict_det.py -c configs/inference_det.yaml -o Global.infer_imgs=images/anmuxi.jpg

如果想使用 CPU 进行预测,可以将配置文件中 use_gpu 选项设置为 False,或者执行命令:

python3.7 python/predict_det.py -c configs/inference_det.yaml  -o Global.use_gpu=False

三、特征提取模型推理

下面以商品特征提取为例,介绍特征提取模型推理。以下命令请进入 PaddleClas 的 deploy 目录执行:

cd deploy

使用 PaddleClas 提供的商品特征提取 inference 模型进行推理,可以执行:

mkdir -p models
cd models
# 下载商品特征提取 inference 模型并解压
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/product_ResNet50_vd_aliproduct_v1.0_infer.tar && tar -xf product_ResNet50_vd_aliproduct_v1.0_infer.tar
cd ..

# 用下载的 inference 模型进行预测
python3.7 python/predict_rec.py -c configs/inference_rec.yaml

预测可以得到一个 512 特征向量,直接在命令行输出显示。

如果想要修改图像,可以在 configs/inference_det.yaml 中,修改 infer_imgs 的值,或使用 -o Global.infer_imgs 修改,例如,要使用 images/anmuxi.jpg 可以运行:

python3.7 python/predict_rec.py -c configs/inference_rec.yaml -o Global.infer_imgs=images/anmuxi.jpg

如果想使用 CPU 进行预测,可以将配置文件中 use_gpu 选项设置为 False,或者执行命令:

python3.7 python/predict_rec.py -c configs/inference_rec.yaml  -o Global.use_gpu=False

四、主体检测、特征提取和向量检索串联

4.1 环境配置

  • 安装:请先参考 快速安装 配置PaddleClas运行环境。(这一部分单独会写一章节进行环境准备)

  • 进入 deploy 运行目录。本部分所有内容与命令均需要在 deploy 目录下运行,可以通过下面的命令进入 deploy 目录。

    cd deploy
    

4.2 图像识别体验

这一部分直接参照另一部分内容即可:paddleclas 学习笔记:图像识别

五、图像分类模型推理

下面介绍图像分类模型推理,以下命令请进入 PaddleClas 的 deploy 目录执行:

cd deploy

使用 PaddleClas 提供的商品特征提取 inference 模型进行推理,首先请下载预训练模型并导出 inference 模型,具体参见上面 1.2 分类模型转 inference 模型

导出 inference 模型后,可以使用下面的命令预测:

python3.7 python/predict_cls.py -c configs/inference_cls.yaml

如果想要修改图像,可以在 configs/inference_det.yaml 中,修改 infer_imgs 的值,或使用 -o Global.infer_imgs 修改,例如,要使用 images/ILSVRC2012_val_00010010.jpeg 可以运行:

python3.7 python/predict_cls.py -c configs/inference_cls.yaml -o Global.infer_imgs=images/ILSVRC2012_val_00010010.jpeg

如果想使用 CPU 进行预测,可以将配置文件中 use_gpu 选项设置为 False,或者执行命令:

python3.7 python/predict_cls.py -c configs/inference_cls.yaml  -o Global.use_gpu=False
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

libo-coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值