新闻详情

新闻详情

首页 / 资讯中心 / 详情

PaddleSeg 语义分割模型 FastDeploy 部署实战:CPU/GPU 推理与 Paddle-TensorRT 加速

发布时间:2026/9/25 1:37:19来源:尧图网络
PaddleSeg 语义分割模型 FastDeploy 部署实战:CPU/GPU 推理与 Paddle-TensorRT 加速
人工智能计算机视觉预训练【免费下载链接】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 仓库中deploy/fastdeploy/semantic_segmentation/cpu-gpu/目录的官方部署文档系统讲解如何利用 FastDeploy 将 PaddleSeg 语义分割模型部署到 X86 CPU、NVIDIA GPU、飞腾 CPU、ARM CPU 及 Intel GPU独立/集成显卡等硬件上。读完后你将能够选择或自行导出适合部署的分割模型区分with-argmax/without-argmax两种形态、在 Python 和 C 两种环境下完成 CPU/GPU 推理并在 GPU 上启用 Paddle-TensorRT 动态 shape 加速。一、方案概览FastDeploy 全场景部署 PaddleSeg 模型FastDeploy是一款面向云、边、端的全场景 AI 推理部署工具。在 PaddleSeg 中它被用作语义分割模型的高性能部署方案可覆盖多种硬件平台与推理后端如 Paddle Inference、Paddle Lite、TensorRT、OpenVINO、ONNXRuntime 等。cpu-gpu 部署文档覆盖以下硬件硬件类型是否支持Python 示例C 示例X86 CPU✅✅✅NVIDIA GPU✅✅✅飞腾 CPU✅✅✅ARM CPU✅✅✅Intel GPU独立/集成显卡✅✅✅除本文聚焦的 CPU/GPU 场景外FastDeploy 语义分割部署总览还提供了昆仑 XPU、昇腾 Ascend、瑞芯微、晶晨、算能等更多硬件的部署文档以及 Android、Serving 服务化、Web 部署和模型自动化压缩工具quantize等入口可按需跳转。二、使用预导出的部署模型部署文档内置了一份预导出模型列表每个模型均提供两种形态可依据部署需求选择模型参数文件大小输入 ShapemIoUmIoU (flip)mIoU (msflip)Unet-cityscapes52MB1024x51265.00%66.02%66.89%PP-LiteSeg-B (STDC2) -cityscapes31MB1024x51279.04%79.52%79.85%PP-HumanSegV1-Lite通用人像分割543KB192x19286.2%--PP-HumanSegV2-Lite通用人像分割12MB192x19292.52%--PP-HumanSegV2-Mobile通用人像分割29MB192x19293.13%--PP-HumanSegV1-Server通用人像分割103MB512x51296.47%--Portrait-PP-HumanSegV2-Lite肖像分割3.6MB256x14496.63%--FCN-HRNet-W18-cityscapes暂不支持 ONNXRuntime GPU 推理37MB1024x51278.97%79.49%79.74%DeepLabv3-ResNet101-OS8-cityscapes150MB1024x51279.90%80.22%80.47%SegFormer_B0-cityscapes15MB1024x102476.73%77.16%-注上表为整理自 cpu-gpu 部署文档 的模型清单各模型的with-argmax与without-argmax两种文件的具体下载地址以该文档内嵌链接为准。2.1 with-argmax 与 without-argmax 的区别文档对两种命名给出了明确的导出方式约定without-argmax导出时不指定--input_shape指定--output_op none模型末端输出原始 logitsN*C*H*W。适合需要自行后处理如多尺度翻转推理、自定义 softmax 阈值处理的场景。with-argmax导出时不指定--input_shape指定--output_op argmax模型末端直接输出每个像素的分割类别N*H*Wint32。适合追求开箱即用、拿到即可视化的场景。这一约定与 PaddleSeg 模型导出工具的output_op参数完全对应详见 模型导出文档。2.2 选型建议通用场景分割优先 PP-LiteSeg-BSTDC231MBmIoU 79.04%在精度与体积间平衡较好追求精度可选 DeepLabv3-ResNet101-OS8150MBmIoU 79.90%轻量 Transformer 可选 SegFormer_B015MB。人像/肖像分割PP-HumanSeg 系列体积从 543KB 到 103MB 梯度完整mIoU 从 86.2% 到 96.63%可按算力预算选择。mIoU (flip) / mIoU (msflip)列展示了结合翻转推理、多尺度翻转推理后的精度增益使用without-argmax模型时可在后处理阶段自行实现这类增强。三、自行导出 PaddleSeg 部署模型3.1 支持的模型范围文档明确支持PaddleSeg 2.6 以上版本的 Segmentation 模型。若你要部署的是PP-Matting、PP-HumanMatting 或 ModNet等抠图模型请参考 Matting 模型部署文档不要走语义分割通道。经 FastDeploy 验证可成功部署的模型家族包括对应配置文件位于仓库configs/下U-Net 系列PP-LiteSeg 系列PP-HumanSeg 系列FCN 系列DeepLabV3 系列SegFormer 系列3.2 模型导出步骤导出流程与 模型导出文档 一致在 PaddleSeg 根目录下执行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导出脚本关键参数参数名用途是否必选默认值config配置文件的路径是-model_path模型权重的路径否-save_dir预测模型保存的目录否./output/inference_modelinput_shape模型输入 shapeN*C*H*W不设置时默认导出为[-1, 3, -1, -1]的动态输入。预测 shape 固定时建议显式指定否Noneoutput_op网络末端添加的输出算子支持argmax、softmax、none。argmax得到每像素类别N*H*Wint32softmax得到每类概率N*C*H*Wfloat32none输出 logits否argmaxwith_softmax即将废弃建议使用--output_op替代否Falsewithout_argmax即将废弃建议使用--output_op替代否False经验提示若部署模型时出现与 shape 相关的问题优先尝试显式指定input_shape。3.3 部署模型的三个文件导出后得到如下文件结构其中前三个文件是 FastDeploy 部署的必要输入output/inference_model ├── deploy.yaml # 部署相关的配置文件主要说明数据预处理方式等信息 ├── model.pdmodel # 预测模型的拓扑结构文件 ├── model.pdiparams # 预测模型的权重文件 └── model.pdiparams.info # 参数额外信息一般无需关注文档特别强调FastDeploy 会从deploy.yaml中获取模型推理时需要的预处理信息归一化均值、方差、resize 尺寸等因此导出目录必须完整保留该文件推理代码也正是按此三件套加载模型的见下文 Python/C 示例源码。四、Python 部署示例CPU / GPU / Paddle-TensorRTPython 示例位于 cpu-gpu/python 目录核心是 infer.py 一个脚本。4.1 环境与运行步骤# 安装 FastDeploy python 包find-links 源地址以 FastDeploy 官方安装文档为准 pip install fastdeploy-gpu-python -f FastDeploy 官方预编译包源 conda config --add channels conda-forge conda install cudatoolkit11.2 cudnn8.2 # 获取示例代码注意若当前分支找不到 fastdeploy 测试代码请切换到 develop 分支 cd PaddleSeg/deploy/fastdeploy/semantic_segmentation/cpu-gpu/python # 下载预导出模型压缩包并解压tgz 名称与下载链接见 cpu-gpu 部署文档的模型列表 # 例如 PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz # 同时下载一张 cityscapes 测试图片 # CPU 推理 python infer.py --model PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer --image cityscapes_demo.png --device cpu # GPU 推理 python infer.py --model PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer --image cityscapes_demo.png --device gpu # GPU 上使用 Paddle-TensorRT 推理 # 注意Paddle-TensorRT 首次运行有序列化模型的操作耗时较长需耐心等待 python infer.py --model PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer --image cityscapes_demo.png --device gpu --use_trt True命令行参数说明与infer.py中 argparse 定义一一对应参数含义默认值--model模型文件夹所在的路径内含model.pdmodel、model.pdiparams、deploy.yamlNone必填--image测试图片所在的路径None必填--device硬件类型支持cpu、gpucpu可运行在 x86 CPU / ARM CPU 等cpu--use_trt是否使用 TensorRT仅在device为gpu时有效False4.2 infer.py 源码解析从 infer.py 的源码结构看整个推理链路分为三步1构建运行时选项build_optionoption fd.RuntimeOption() if args.device.lower() gpu: option.use_gpu() if args.use_trt: option.use_trt_backend() # 若使用原生 TensorRT 而非 Paddle-TensorRT注释掉下面两行 option.enable_paddle_to_trt() option.enable_paddle_trt_collect_shape() option.set_trt_input_shape(x, [1, 3, 256, 256], [1, 3, 1024, 1024], [1, 3, 2048, 2048])use_gpu()切换到 GPU 设备use_trt_backend()启用 TRT 后端enable_paddle_to_trt()enable_paddle_trt_collect_shape()是Paddle-TensorRT模式的关键开关它允许动态收集输入 shape 并自动生成对应的 TRT engine若你想用原生 TensorRT需预先转换 ONNX/TRT 模型按注释说明注释掉这两行即可set_trt_input_shape(x, min, opt, max)为输入张量x声明了动态 shape 区间最小[1,3,256,256]、最优[1,3,1024,1024]、最大[1,3,2048,2048]TRT 将在该范围内构建引擎。2加载模型并推理model_file os.path.join(args.model, model.pdmodel) params_file os.path.join(args.model, model.pdiparams) config_file os.path.join(args.model, deploy.yaml) model fd.vision.segmentation.PaddleSegModel( model_file, params_file, config_file, runtime_optionruntime_option) im cv2.imread(args.image) result model.predict(im)可以看到 Python 侧严格对应三件套加载方式PaddleSegModel构造时同时传入拓扑、权重与deploy.yaml预处理配置预处理resize/归一化由 FastDeploy 依据 yaml 自动完成用户代码无需手写。3可视化fd.vision.vis_segmentation(im, result, weight0.5)将分割结果与原图以 0.5 的权重叠加保存为vis_img.png。五、C 部署示例C 示例位于 cpu-gpu/cpp 目录以 Linux 为例完整演示下载 SDK → 编译 → 推理流程支持此模型的 FastDeploy 版本需 1.0.0# 下载 FastDeploy C 预编译库版本 x.x.x 请自行替换为实际版本号 wget fastdeploy-linux-x64-x.x.x.tgz 下载地址见 FastDeploy 官方安装文档 tar xvf fastdeploy-linux-x64-x.x.x.tgz # 获取示例代码 cd PaddleSeg/deploy/fastdeploy/semantic_segmentation/cpu-gpu/cpp # 编译部署示例 mkdir build cd build cmake .. -DFASTDEPLOY_INSTALL_DIR${PWD}/fastdeploy-linux-x64-x.x.x make -j # 下载 PP-LiteSeg 模型与测试图片同 Python 章节 # CPU 推理 ./infer_demo PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer cityscapes_demo.png 0 # GPU 推理 ./infer_demo PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer cityscapes_demo.png 1 # GPU 上 Paddle-TensorRT 推理 ./infer_demo PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer cityscapes_demo.png 2infer_demo 模型目录 图片路径 run_option中第三个参数的取值见 infer.cc 的用法提示0 CPU1 GPU2 GPU TensorRT 后端。5.1 CMake 构建方式CMakeLists.txt 极简核心就是借助 FastDeploy SDK 自带的FastDeploy.cmakeoption(FASTDEPLOY_INSTALL_DIR Path of downloaded fastdeploy sdk.) include(${FASTDEPLOY_INSTALL_DIR}/FastDeploy.cmake) include_directories(${FASTDEPLOY_INCS}) add_executable(infer_demo ${PROJECT_SOURCE_DIR}/infer.cc) target_link_libraries(infer_demo ${FASTDEPLOY_LIBS})因此接入自己工程时只需将FASTDEPLOY_INSTALL_DIR指向解压后的 SDK 目录并 include 其FastDeploy.cmake即可获得正确的头文件与库链接无需手动处理各推理后端的依赖。5.2 infer.cc 源码解析infer.cc 定义了CpuInfer、GpuInfer、TrtInfer三个函数结构完全一致仅RuntimeOption配置不同例如TrtInferauto option fastdeploy::RuntimeOption(); option.UseGpu(); option.UseTrtBackend(); // 若使用原生 TensorRT 而非 Paddle-TensorRT注释掉下面两行 option.EnablePaddleToTrt(); option.EnablePaddleTrtCollectShape(); option.SetTrtInputShape(x, {1, 3, 256, 256}, {1, 3, 1024, 1024}, {1, 3, 2048, 2048});与 Python 版逐项对应UseCpu/UseGpu/UseTrtBackend、EnablePaddleToTrt、动态 shape 区间完全相同保证了两种语言下行为一致。推理流程为拼接model.pdmodel/model.pdiparams/deploy.yaml三个路径跨平台自动处理/与\分隔符构造fastdeploy::vision::segmentation::PaddleSegModel并调用Initialized()检查初始化结果cv::imread读图后调用Predict(im, res)得到SegmentationResultres.Str()打印结果VisSegmentation(im, res, 0.5)生成叠加可视化图并写入vis_result.jpg。注意事项以上 CMake/命令行流程适用于 Linux 或 macOSWindows 下 SDK 的使用方式需参考 FastDeploy 官方 FAQ关于切换更多推理后端引擎OpenVINO、ONNXRuntime 等与 Intel GPU 使用方法参见 FastDeploy 官方 FAQ 文档若需自行编译 CPU / GPU / Jetson 部署库而非使用预编译包FastDeploy 官方文档提供了对应编译指南。六、小结与深入路径本文覆盖的 cpu-gpu 场景是 PaddleSeg FastDeploy 部署体系的基础通道其要点可归纳为模型侧预导出模型区分with-argmax末端带 argmax输出类别图与without-argmax输出 logits便于自定义后处理与多尺度/翻转推理两种形态导出时统一不指定input_shape以获得动态输入文件侧部署目录必须包含model.pdmodel、model.pdiparams、deploy.yaml三件套预处理信息完全由deploy.yaml驱动推理侧Pythonfd.vision.segmentation.PaddleSegModel与 Cfastdeploy::vision::segmentation::PaddleSegModelAPI 对齐RuntimeOption决定 CPU/GPU/TRT 后端Paddle-TensorRT 模式通过EnablePaddleToTrtEnablePaddleTrtCollectShapeSetTrtInputShape三行配置实现动态 shape 加速首次运行需等待 engine 序列化。如需扩展到端侧与服务化场景可继续查阅 FastDeploy 语义分割部署总览 中的 Android、Serving、Web 与量化压缩quantize文档。赞分享人工智能计算机视觉预训练【免费下载链接】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 语义分割模型在华为昇腾 NPU 上的 FastDeploy Python 部署实战PaddleSeg 语义分割模型在华为昇腾 NPU 上的 FastDeploy Python 部署实战 本篇指南聚焦 PaddleSeg 仓库中 deploy/人工智能计算机视觉预训练PaddleSeg 语义分割模型华为昇腾 Ascend NPU C 部署实战指南FastDeploy 方案PaddleSeg 语义分割模型华为昇腾 Ascend NPU C 部署实战指南FastDeploy 方案 导读 本文以 deploy/fastdepl人工智能计算机视觉预训练PaddleDetection 模型 CPU/GPU 部署实战基于 FastDeploy 的完整指南PaddleDetection 模型 CPU/GPU 部署实战基于 FastDeploy 的完整指南 FastDeploy 是 PaddleDetection人工智能深度学习计算机视觉上一篇如何3步保存无水印抖音视频专业工具全攻略下一篇gh_mirrors/os/os-tutorial-cn高级特性多任务调度与进程管理实现教程解锁操作系统核心能力创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

如何手写SRWE Profile XML:把游戏窗口精准锁定到自定义分辨率,100%可复现 2026/9/25 2:10:46

如何手写SRWE Profile XML:把游戏窗口精准锁定到自定义分辨率,100%可复现

如何手写SRWE Profile XML:把游戏窗口精准锁定到自定义分辨率,100%可复现 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE SRWE(Simple Runtime Window Editor) 是…

阅读更多 →
vcard4cj多平台构建完全指南:OpenHarmony、Linux与Windows三端编译实战 2026/9/25 2:10:40

vcard4cj多平台构建完全指南:OpenHarmony、Linux与Windows三端编译实战

vcard4cj多平台构建完全指南:OpenHarmony、Linux与Windows三端编译实战 【免费下载链接】vcard4cj 一个电子名片标准格式(.vcf文件)解析库 项目地址: https://gitcode.com/Cangjie-TPC/vcard4cj vcard4cj 是一个用仓颉(Can…

阅读更多 →
本地跑通Bedrock:MiniStack对接Ollama与vLLM获取真实LLM补全的完整教程 2026/9/25 2:10:40

本地跑通Bedrock:MiniStack对接Ollama与vLLM获取真实LLM补全的完整教程

本地跑通Bedrock:MiniStack对接Ollama与vLLM获取真实LLM补全的完整教程 【免费下载链接】ministack Ministack: Free, open-source local AWS emulator - 60 services, Terraform compatible, real databases. Free forever. MIT licensed. 项目地址: https://git…

阅读更多 →
BES二进制查看工具:嵌入式固件分析原理与实战技巧 2026/9/25 2:10:40

BES二进制查看工具:嵌入式固件分析原理与实战技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
卷积神经网络原理及PyTorch特征图可视化实战:MNIST手写数字识别 2026/9/25 2:10:34

卷积神经网络原理及PyTorch特征图可视化实战:MNIST手写数字识别

各位读者朋友,大家好。之前在做图像识别相关的学习项目时,我在理解卷积神经网络时卡了很久。网上资料虽然很多,但要么上来就是一堆数学公式,要么只给代码不讲原理,对新手非常不友好。直到后来自己手动把卷积、池化、特…

阅读更多 →
VideoDownloadHelper到底用了哪些权限?5项权限与隐私保护机制完整解读 2026/9/25 2:10:34

VideoDownloadHelper到底用了哪些权限?5项权限与隐私保护机制完整解读

VideoDownloadHelper到底用了哪些权限?5项权限与隐私保护机制完整解读 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper VideoDownl…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉