『paddle』paddleseg 学习笔记:模型导出


本教程提供了一个将训练好的动态图模型转化为静态图模型并进行部署的例子

一、获取预训练模型

注意:下述例子为 Linux 或者 Mac 上执行的例子,windows 请自行在浏览器下载 参数 并存放到所创建的目录

mkdir bisenet && cd bisenet
wget https://paddleseg.bj.bcebos.com/dygraph/cityscapes/bisenet_cityscapes_1024x1024_160k/model.pdparams
cd ..

二、将模型导出为静态图模型

请确保完成了 PaddleSeg 的安装工作,并且位于 PaddleSeg 目录下,执行以下脚本:

export CUDA_VISIBLE_DEVICES=0 	# 设置1张可用的卡
# set CUDA_VISIBLE_DEVICES=0	# windows下请执行此命令
python export.py \
       --config configs/bisenet/bisenet_cityscapes_1024x1024_160k.yml \
       --model_path bisenet/model.pdparams

导出脚本参数解释

参数名用途是否必选项默认值
config配置文件-
save_dir模型和 visualdl 日志文件的保存根路径output
model_path预训练模型参数的路径配置文件中指定值
with_softmax在网络末端添加 softmax 算子。由于 PaddleSeg 组网默认返回 logits,如果想要部署模型获取概率值,可以置为 TrueFalse
without_argmax是否不在网络末端添加 argmax 算子。由于 PaddleSeg 组网默认返回 logits,为部署模型可以直接获取预测结果,我们默认在网络末端添加 argmax 算子False

三、结果文件

output
  ├── deploy.yaml            # 部署相关的配置文件
  ├── model.pdiparams        # 静态图模型参数
  ├── model.pdiparams.info   # 参数额外信息,一般无需关注
  └── model.pdmodel          # 静态图模型文件
PaddleSeg 中计算模型推理速度时,需要使用推理模型。因为训练模型通常包含了大量的 Dropout、BN 等操作以及梯度计算等过程,会导致模型计算速度变慢。而推理模型则去掉了这些训练过程中的操作,只保留了前向计算部分,因此推理模型的计算速度更快,更适用于模型推理。 在 PaddleSeg 中,可以通过在训练过程中设置 `save_dir` 参数,保存训练过程中的模型参数,然后使用 `paddle.jit.to_static()` 函数将动态模型转换为静态模型,并生成推理模型。具体操作步骤如下: 1. 在训练过程中设置 `save_dir` 参数,保存模型参数。 2. 使用 `paddle.jit.to_static()` 函数将动态模型转换为静态模型,并生成推理模型。 3. 使用生成的推理模型进行模型推理,并计算模型的推理速度。 示例代码如下: ```python import paddle import paddleseg # 训练模型 model = paddleseg.models.UNet("resnet50") model.train(...) paddle.save(model.state_dict(), "unet_resnet50") # 转换为推理模型 model.eval() input_spec = paddle.static.InputSpec(shape=[None, 3, 256, 256], dtype='float32', name='image') model = paddle.jit.to_static(model, input_spec=input_spec) paddle.jit.save(model, "unet_resnet50_inference") # 使用推理模型进行模型推理,并计算模型的推理速度 config = paddle.inference.Config("unet_resnet50_inference") predictor = paddle.inference.create_predictor(config) ... ``` 需要注意的是,生成的推理模型可以使用 `paddle.jit.save()` 函数保存到本地,然后在模型推理时加载使用。同时,生成的推理模型也可以使用 Paddle Serving 进行部署,提供在线推理服务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

libo-coder

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

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

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

打赏作者

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

抵扣说明:

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

余额充值