尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

PaddleSeg 本地推理部署实战:基于 Paddle Inference Python 接口的服务端分割模型部署指南

发布时间:2026/9/26 10:28:42

资讯中心
01
ARTICLE

PaddleSeg 本地推理部署实战:基于 Paddle Inference Python 接口的服务端分割模型部署指南

PaddleSeg 本地推理部署实战:基于 Paddle Inference Python 接口的服务端分割模型部署指南
人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载本篇技术指南围绕 PaddleSeg 的本地推理Inference部署方案展开讲解如何使用飞桨推理的 Python 接口在服务器端Nvidia GPU 或 X86 CPU完成分割模型的加载、推理与结果保存。读者将掌握从导出预测模型、准备部署环境到运行deploy/python/infer.py并理解其全部关键参数的完整链路同时了解 TensorRT 加速、动态 Shape 自动调优等进阶用法可直接将分割能力集成进自己的服务。1. 部署方案说明PaddleSeg 训练得到的模型默认输出的是 logits形状为N*C*H*W要将其用于线上服务通常需要先导出为预测模型再借助飞桨的推理库在服务器端执行推理。本文介绍的方案使用的是飞桨推理Paddle Inference的 Python 接口其核心优势在于该接口集成在 PaddlePaddle 安装包中安装 PaddlePaddle 即可获得无需额外引入推理库通过少量配置与代码即可把模型集成到自己的服务中完成图像分割任务支持 X86 CPU 与 Nvidia GPU 两种服务器端部署形态GPU 端还支持 TensorRT 加速。Paddle Inference 官方文档系统性地介绍了部署步骤、多种 API 接口与示例本文聚焦于 PaddleSeg 仓库内实际配套的 Python 推理脚本 deploy/python/infer.py 及其完整用法。2. 前置准备导出预测模型与准备测试数据2.1 导出预测模型部署前必须先将训练好的模型导出为预测模型。请使用 PaddleSeg 的模型导出工具 tools/export.py 导出您的模型或者直接下载官方提供的样例预测模型bisenet 演示模型用于测试。python tools/export.py \ --config configs/pp_liteseg/pp_liteseg_stdc1_cityscapes_1024x512_scale0.5_160k.yml \ --model_path model.pdparams \ --save_dir output/inference_model导出脚本的核心参数如下详见 docs/model_export_cn.md| 参数名 | 用途 | 是否必选项 | 默认值 | |-|-|-|-| | config | 训练配置文件的路径 | 是 | - | | model_path | 模型权重.pdparams路径 | 否 | - | | save_dir | 预测模型保存目录 | 否 |./output/inference_model| | input_shape | 固定模型输入 ShapeN*C*H*W如--input_shape 1 3 1024 1024不设置时默认导出输入为[-1, 3, -1, -1]| 否 | None | | output_op | 模型末端附加的输出算子可选argmax、softmax、none| 否 | argmax | | for_fd | 是否导出为 FastDeploy 兼容格式 | 否 | False |从源码看导出时会在网络末端追加输出算子paddleseg/deploy/export.py 中的WrappedModel对模型输出执行paddle.argmax(out, axis1, dtypeint32)argmax模式输出每像素类别维度N*H*W、类型 int32或softmax输出每像素各类别概率维度N*C*H*W、类型 float32。默认argmax意味着预测模型直接产出分割类别图。注意如果导出时指定了input_shape那么后续传给推理脚本的图片尺寸或经过 deploy.yaml 中预处理变换后的尺寸必须与input_shape保持一致否则会出现 shape 相关的报错。2.2 准备测试图片导出或下载预测模型后还需要准备一张测试图片。官方提供 cityscapes 验证集中的一张演示图片如果您的模型是使用其他数据集训练的请自行准备测试图片。# 在 PaddleSeg 根目录下 wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png3. 部署环境准备Paddle Inference 的 Python 接口集成在 PaddlePaddle 中因此只需要安装对应版本的 PaddlePaddle 即可。PaddleSeg 的其他依赖库请参考 docs/install_cn.md 安装。3.1 X86 CPU 部署环境在 X86 CPU 上部署时安装 CPU 版本的 PaddlePaddle推荐版本 ≥ 2.1。需根据 X86 CPU 机器是否支持 AVX 指令选择安装正确版本的安装包。3.2 Nvidia GPU 部署环境GPU 端支持两种计算方式Naive 方式常规 GPU 推理准备 CUDA 环境并安装 GPU 版本的 PaddlePaddle推荐版本 ≥ 2.1例如# CUDA10.1 对应的 PaddlePaddle python -m pip install paddlepaddle-gpu2.1.2.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.htmlTensorRT 方式需要准备 CUDA、cuDNN 与 TensorRT 环境例如 CUDA10.1cudnn7trt6、CUDA10.2cudnn8.1trt7、CUDA11.1cudnn8.1trt7、CUDA11.2cudnn8.2trt8 等组合并将 TensorRT 库路径加入LD_LIBRARY_PATHexport LD_LIBRARY_PATH/download/TensorRT-7.1.3.4/lib:${LD_LIBRARY_PATH}然后安装联编 TensorRT 的 GPU 版本 PaddlePaddle需按照 whl 包文件命名选择对应版本。TensorRT 方式支持 fp32、fp16、int8 多种计算精度通常比 Naive 方式计算速度更快。4. 预测模型文件与部署配置导出的预测模型格式如下其中model.pdmodel可通过 Netron 打开进行模型可视化借此查看输入输出的个数与数据类型这些信息在调用 Paddle Inference 预测 API 时需要用到output/inference_model ├── deploy.yaml # 部署相关的配置文件主要说明数据预处理方式等信息 ├── model.pdmodel # 预测模型的拓扑结构文件 ├── model.pdiparams # 预测模型的权重文件 └── model.pdiparams.info # 参数额外信息一般无需关注deploy.yaml是部署的关键文件它声明了模型文件名、权重文件名与推理时的数据预处理方式。推理脚本通过 paddleseg/deploy/infer.py 中的DeployConfig解析该文件model与params字段给出相对于 deploy.yaml 所在目录的模型与权重文件名transforms字段则通过manager.TRANSFORMS注册表逐条实例化预处理算子如Normalize并组合为T.Compose流水线。仓库中一份真实的部署配置示例如下deploy.yaml 示例Deploy: input_shape: - -1 - 3 - -1 - -1 model: model.pdmodel output_dtype: int32 output_op: argmax params: model.pdiparams transforms: - type: Normalize5. 执行预测在 PaddleSeg 根目录下执行以下命令进行预测python deploy/python/infer.py \ --config ./pp_liteseg_infer_model/deploy.yaml \ --image_path ./cityscapes_demo.png其中--config必须指向导出模型时生成的 deploy.yaml而非configs/目录下的训练配置文件。预测结果默认保存在output/目录下与输入图片同名、扩展名为.png。5.1 完整参数说明以下参数表与 deploy/python/infer.py 中parse_args的实现一一对应| 参数名 | 用途 | 是否必选项 | 默认值 | |-|-|-|-| | config |导出模型时生成的配置文件deploy.yaml而非 configs 目录下的配置文件 | 是 | - | | image_path | 预测图片的路径、目录或者图片文件列表 | 是 | - | | batch_size | 单卡 batch size | 否 | 1 | | save_dir | 保存预测结果的目录 | 否 |./output| | device | 预测执行设备可选cpu、gpu、xpu、npu、mlu| 否 |gpu| | use_trt | 是否开启 TensorRT 加速仅当 devicegpu 时生效 | 否 | False | | precision | TensorRT 数值精度可选fp32、fp16、int8仅当 devicegpu 且 use_trtTrue 时生效 | 否 |fp32| | min_subgraph_size | TensorRT 子图最小节点个数仅当 devicegpu 且 use_trtTrue 时生效 | 否 | 3 | | enable_auto_tune | 开启 Auto Tune使用部分测试数据离线收集动态 Shape 用于 TRT 部署需 devicegpu、use_trtTrue且 paddle 版本 ≥ 2.2 | 否 | False | | auto_tuned_shape_file | Auto Tune 产出的动态 Shape 临时文件 | 否 |auto_tune_tmp.pbtxt| | cpu_threads | CPU 推理线程数仅当 devicecpu 时生效 | 否 | 10 | | enable_mkldnn | 是否使用 MKL-DNN 加速 CPU 推理仅当 devicecpu 时生效 | 否 | False | | benchmark | 是否产出包含环境、模型、配置、性能信息的日志 | 否 | False | | model_name | 开启 benchmark 时显示的模型名称 | 否 | | | with_argmax | 对预测结果执行 argmax 操作 | 否 | False | | print_detail | 是否打印 Paddle Inference 的 GLOG 信息 | 否 | True |说明早期版本文档中使用的use_cpu、use_int8、use_mkldnn等布尔开关在当前版本中已演进为device、precision、enable_mkldnn等参数请以当前 deploy/python/infer.py 的 argparse 定义为准。5.2 输入图片的三种形态--image_path支持三种输入形态由 paddleseg/utils/utils.py 中的get_image_list统一处理单张图片路径支持.jpg、.jpeg、.bmp、.png后缀一个目录递归收集目录下所有合法后缀的图片一个文本文件列表每行一条图片路径若一行含多个字段取第一个字段作为路径。5.3 预测结果示例使用官方样例模型对 cityscapes 验证集图片进行预测的效果如下左侧为原始街景输入右侧为模型输出的语义分割可视化结果不同颜色代表不同类别区域道路、车辆、植被、建筑等。6. 部署场景与参数组合根据硬件与加速诉求推荐以下参数组合X86 CPU 部署必须设置--device cpu可搭配--cpu_threads调节线程数默认 10以及--enable_mkldnn开启 MKL-DNN 加速。Nvidia GPU Naive 方式设置--device gpu默认即为 gpu。Nvidia GPU TensorRT 方式设置--device gpu --use_trt True并按需指定--precision加载常规预测模型 --precision fp32执行 fp32 数值精度加载常规预测模型 --precision fp16执行 fp16 数值精度可加快推理速度加载量化预测模型 --precision int8执行 int8 数值精度可加快推理速度。从源码 deploy/python/infer.py 的_init_gpu_config可以看到开启 TensorRT 时脚本通过enable_tensorrt_engine配置workspace_size130、max_batch_size1并将precision映射为PrecisionType.Half / Float32 / Int8同时会设置手动动态 Shape 范围min_input_shape{x: [1, 3, 100, 100]}、max_input_shape{x: [1, 3, 2000, 3000]}、opt_input_shape{x: [1, 3, 512, 1024]}。当显式设置这些范围无法满足实际输入尺寸时可改用 Auto Tune 自动收集动态 Shape。6.1 动态 Shape 与 Auto Tune使用 TensorRT 部署时若出现如下错误(InvalidArgument) some trt inputs dynamic shape info not set说明手动设置的动态 Shape 范围未覆盖实际输入此时可以设置--enable_auto_tune True。其原理见 deploy/python/infer.py 的auto_tune函数读取DeployConfig并基于模型构建PredictConfig启用 GPU 与collect_shape_range_info从输入图片中取前 10 张tune_img_nums 10经预处理后逐张送入 predictor 运行离线收集 TRT 子图的动态 Shape 范围写入auto_tuned_shape_file默认auto_tune_tmp.pbtxt正式推理时若检测到该文件存在则通过enable_tuned_tensorrt_dynamic_shape加载已调优的动态 Shapeallow_build_at_runtimeTrue否则退回手动设置动态 Shape 的分支。需注意Auto Tune 依赖PredictConfig提供collect_shape_range_info与enable_tuned_tensorrt_dynamic_shape两个接口即 paddle 版本 ≥ 2.2且仅在devicegpu use_trtTrue enable_auto_tuneTrue时生效少数模型暂不支持在 Nvidia GPU 上使用 TensorRT 方式部署。6.2 基准测试Benchmark设置--benchmark True会输出包含环境、模型、配置、性能信息的日志用于评估推理耗时。脚本会按preprocess_time、inference_time、postprocess_time三个时间键统计并在正式推理前做 5 次预热见 deploy/python/infer.py。开启 benchmark 需要安装auto_log依赖。7. 注意事项量化模型加速的前提使用量化模型预测时需要同时开启 TensorRT 预测和 int8 精度--use_trt True --precision int8才会有加速效果。TensorRT 依赖的 Paddle 版本使用 TensorRT 需要安装支持 TRT 功能的 Paddle 库联编 TensorRT 的 GPU 版本安装包或从源码自行编译普通 GPU 版本无法开启 TRT。shape 一致性导出模型时若指定了input_shape推理时传入图片经过 deploy.yaml 预处理后的尺寸必须与该值一致。结果格式默认导出模型自带argmax输出时输出为N*H*W的 int32 类别图若在推理脚本侧再叠加--with_argmax则会对预测结果再次执行 argmax。更多预测相关信息可继续阅读 docs/deployment/inference/python_inference_cn.md或直接研读 deploy/python/infer.py 脚本若需 C 端部署可参考同目录下的 cpp_inference_cn.md。赞分享人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载相关推荐PaddleSeg 服务端 Python 部署指南基于 Paddle Inference 的 GPU/CPU 分割模型推理实战PaddleSeg 服务端 Python 部署指南基于 Paddle Inference 的 GPU/CPU 分割模型推理实战 PaddleSeg 训练完成的人工智能计算机视觉预训练PaddleSeg Linux C 部署实战基于 Paddle Inference 的分割模型推理全流程指南PaddleSeg Linux C 部署实战基于 Paddle Inference 的分割模型推理全流程指南 本篇技术指南以 PaddleSeg 仓库中的人工智能计算机视觉预训练PaddleSeg MedicalSeg 三维医学影像分割模型 Paddle Inference Python 服务端部署实战指南PaddleSeg MedicalSeg 三维医学影像分割模型 Paddle Inference Python 服务端部署实战指南 导读 本文基于 Paddle人工智能计算机视觉预训练上一篇给 SRS 流媒体服务免费配好 HTTPS3 步一键拿下 Lets Encrypt 证书下一篇Navicat 试用期重置完整指南Mac 上免费延长试用期的三种实操路线创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。