PaddleSeg之语义分割模型部署

模型训练完后,往往在实际应用过程中对实时性都有一定的要求,而python运行效率比较慢,所以需要采用其他加速的部署方案,这里主要介绍下PaddleSeg的C++部署方案。

1.模型导出

python export.py --config ./configs/deeplabv3p/deeplabv3p_resnet101_os8_cityscapes_769x769_80k.yml --model_path ./model/resnet101_vd_ssld/model.pdparams --save_dir model

导出后保存在model目录下,下图是导出的主要文件。
在这里插入图片描述
模型的可视化,可以通过visualdl进行查看。

visualdl --logdir ./log

选择网络结构-静态,然后上传模型,选择model.pdmodel。
在这里插入图片描述
在这里插入图片描述

2.部署

PaddleSeg提供的部署Demo代码在PaddleSeg/deploy/cpp目录下。
在这里插入图片描述
里面包括了cpu、gpu、gpu+tensorrt和gpu+tensorrt+dynamic shape四种运行方式,可以根据自己的硬件环境选择采用哪种方式。
这里介绍稍微难一点的方式gpu+tensorrt+dynamic shape。环境还是采用Docker的方式进行部署。

2.1环境安装

  1. 系统环境
    ubuntu1804,cuda11.1,nvidia-470, Docker-19.03.0

  2. tensorrt安装
    在docker镜像中安装TensorRT-7.2.1.6,这个需要自己去官网下载,这里不详细介绍了。

  3. paddle-inference安装
    进入paddlepaddle的官网进行下载:https://www.paddlepaddle.org.cn/inference/user_guides/download_lib.html
    在这里插入图片描述
    根据自己的系统环境进行下载,下载完paddle_inference.tgz文件后,将其解压就可以了,不需要编译安装,里面是编译好的lib库。

2.2编译运行

  1. 编译
    首先需要修改编译脚本run_seg_gpu_trt_dynamic_shape.sh
    里面的tensorrt和paddle_inference的路径。
    在这里插入图片描述
    还有需要去掉文件中的编译选项–dynamic_shape_path,这个没有用到,也没有这个文件,不去掉会编译报下面的错。
    在这里插入图片描述
    在编译的过程中可能还会有一些错误,可参考下面文章里面讲的比较清楚。https://gitee.com/paddlepaddle/Serving/blob/develop/doc/FAQ_CN.md

  2. Dynamic Shape
    测试代码中的dynamic shape只是给了一个样例,如果要用dynamic shape运行deeplabv3模型是会报错的,会显示有些层dynamic shape没有设置。
    在这里插入图片描述
    需要对代码进行修改,对报错的层进行形状设置,这里以hardnet模型为例修改如下:
    在这里插入图片描述

  3. 运行推理

bash run_seg_gpu_trt_dynamic_shape.sh

在这里插入图片描述

相关资源下载

paddleSeg-Demo(适配了deeplabv3、hardnet和pp_liteseg模型)

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黑马水牛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值