PaddleSeg 语义分割模型 C++ 部署实战: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/cpp目录的官方部署示例系统讲解如何利用 FastDeploy 在 X86 CPU、NVIDIA GPU 以及 GPUPaddle-TensorRT 三种推理模式下以 C 快速完成 PP-LiteSeg 等语义分割模型的编译与推理。读完本文你将掌握部署环境准备、部署模型的获取与自行导出、CMake 工程构建、infer.cc三种推理模式的实现细节以及 Paddle-TensorRT 动态 shape 配置的完整链路。1. 方案说明与硬件支持PaddleSeg 支持利用 FastDeploy 在多种硬件上快速部署 Segmentation 模型cpu-gpu目录覆盖的是通用服务器/桌面级硬件NVIDIA GPUX86 CPU飞腾 CPUARM CPUIntel GPU独立显卡/集成显卡本目录提供infer.cc用于快速完成PP-LiteSeg 在 CPU/GPU以及 GPU 上通过 Paddle-TensorRT 加速部署的示例。运行示例要求 FastDeploy 版本 1.0.0 及以上x.x.x 1.0.0。在 PaddleSeg 的 FastDeploy 部署体系中语义分割各硬件入口统一收敛在 deploy/fastdeploy/semantic_segmentation/README.mdX86 CPU、NVIDIA GPU、飞腾 CPU、ARM CPU、Intel GPU 均指向同一份 cpu-gpu 目录 的 Python 与 C 示例而昆仑 XPU、昇腾、瑞芯微、晶晨、算能等专用硬件则各有独立目录。此外还有 Android 部署、Serving 服务化部署、Web 部署 与模型量化压缩 等扩展方案。2. 部署环境准备部署前需确认软硬件环境并下载 FastDeploy 预编译库CPU/GPU/Jetson 等不同硬件对应不同的压缩包版本。也可以自行编译 FastDeploy 部署库CPU 版或 GPU 版编译方式以 FastDeploy 官方仓库的build_and_install系列文档为准。预编译库目录中包含编译本示例所必需的FastDeploy.cmake与头文件、动态库CMake 构建脚本会直接include它见下文第 5 节。3. 部署模型准备运行 C 推理前模型目录必须包含三个文件FastDeploy 从deploy.yaml中读取推理时所需的预处理信息model_dir/ ├── model.pdmodel # 预测模型拓扑结构文件 ├── model.pdiparams # 预测模型权重文件 └── deploy.yaml # 预处理等部署配置模型有两条获取路径3.1 使用预导出的推理模型FastDeploy 语义分割部署总览文档中列出了可直接下载的预导出模型例如模型大小输入 ShapemIoUmIoU (flip)mIoU (msflip)Unet-cityscapes (with/without-argmax)52MB1024x51265.00%66.02%66.89%PP-LiteSeg-B(STDC2)-cityscapes (with/without-argmax)31MB1024x51279.04%79.52%79.85%PP-HumanSegV1-Lite (通用人像分割, with/without-argmax)543KB192x19286.2%--PP-HumanSegV2-Lite (通用人像分割, with/without-argmax)12MB192x19292.52%--PP-HumanSegV2-Mobile (通用人像分割, with/without-argmax)29MB192x19293.13%--PP-HumanSegV1-Server (通用人像分割, with/without-argmax)103MB512x51296.47%--Portrait-PP-HumanSegV2-Lite (肖像分割, with/without-argmax)3.6M256x14496.63%--FCN-HRNet-W18-cityscapes (with/without-argmax)37MB1024x51278.97%79.49%79.74%Deeplabv3-ResNet101-OS8-cityscapes (with/without-argmax)150MB1024x51279.90%80.22%80.47%SegFormer_B0-cityscapes (with/without-argmax)15MB1024x102476.73%77.16%-其中文件名标记without-argmax的模型导出方式为不指定--input_shape、指定--output_op none标记with-argmax的模型导出方式为不指定--input_shape、指定--output_op argmax。注意如果部署的是PP-Matting、PP-HumanMatting以及ModNet等抠图模型应参考仓库中的 Matting 模型部署 文档而非本目录。3.2 自行导出 PaddleSeg 部署模型FastDeploy 支持 PaddleSeg 高于 2.6 版本的 Segmentation 模型官方测试过成功部署的模型族包括 U-Net、PP-LiteSeg、PP-HumanSeg、FCN、DeepLabV3、SegFormer 系列。导出流程可参考 docs/model_export_cn.md在 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_modeltools/export.py 中的关键参数与部署效果直接相关参数名用途是否必选默认值config配置文件的路径是-model_path模型权重的路径否-save_dir预测模型保存的目录否./output/inference_modelinput_shape设置模型输入 shape (N*C*H*W)。不设置时默认导出动态 shape[-1, 3, -1, -1]预测 shape 固定时建议指定否Noneoutput_op在模型末端添加的输出算子支持argmax输出 NHW 的 int32 像素类别、softmax输出 NCH*W 的 float32 每类概率、none输出原始 logits否argmaxwith_softmax即将废弃建议改用--output_op否Falsewithout_argmax即将废弃建议改用--output_op否Falsefor_fd导出为 FastDeploy 兼容格式actionstore_true否False从源码看tools/export.py 还专门提供了--for_fd选项用于导出 FastDeploy 兼容格式output_op决定了部署端拿到的张量形态这也是预导出模型区分with-argmax/without-argmax命名的来源——推理框架如 Paddle-TensorRT 后端通常无法转换 argmax/softmax 这类非数值稳定算子因此 C 示例采用without-argmax模型由 FastDeploy 的deploy.yaml配置驱动后处理。4. C 工程结构分析本示例目录仅包含两个文件CMakeLists.txt极简的 CMake 工程要求 CMake 3.10。核心是通过-DFASTDEPLOY_INSTALL_DIR传入的 FastDeploy SDK 目录include(${FASTDEPLOY_INSTALL_DIR}/FastDeploy.cmake)随后把${FASTDEPLOY_INCS}加入头文件搜索路径并将编译产物infer_demo链接到${FASTDEPLOY_LIBS}。这意味着整个工程的第三方依赖完全由 FastDeploy 预编译包提供无需手动管理 Paddle Inference/TensorRT 依赖。infer.cc单文件可执行程序包含三种推理入口函数。4.1 统一的模型加载与预测流程从源码结构看infer.cc 中CpuInfer/GpuInfer/TrtInfer三个函数的骨架完全一致仅RuntimeOption配置不同拼接模型三件套路径model_dir /model.pdmodel、model_dir /model.pdiparams、model_dir /deploy.yamlWindows 下自动切换为反斜杠分隔符构造fastdeploy::RuntimeOption并配置运行设备构造fastdeploy::vision::segmentation::PaddleSegModel(model_file, params_file, config_file, option)调用model.Initialized()校验初始化失败则打印Failed to initialize.cv::imread读图后调用model.Predict(im, res)结果存放在fastdeploy::vision::SegmentationResult中调用fastdeploy::vision::VisSegmentation(im, res, 0.5)以 0.5 透明度融合原图与分割结果并写出vis_result.jpg。4.2 三种运行模式run_optionmain 函数 通过第 4 个命令行参数run_option分发到不同函数取值含义为run_option模式关键配置0CPU 推理option.UseCpu()1GPU 推理option.UseGpu()2GPU Paddle-TensorRT 推理option.UseGpu() UseTrtBackend() EnablePaddleToTrt() EnablePaddleTrtCollectShape() SetTrtInputShape(...)3昆仑 XPU提示语中声明本文件未实现见 kunlunxin 目录三种模式的差异全部集中在 TrtInfer 中的 RuntimeOption 配置UseGpu()开启 GPU 运行UseTrtBackend()切换推理后端为 TensorRTEnablePaddleToTrt()启用 Paddle-TensorRT可转换 Paddle 原生算子到 TRT若使用原版 TensorRT 则注释掉此行及下一行EnablePaddleTrtCollectShape()启用 shape 收集SetTrtInputShape(x, {1,3,256,256}, {1,3,1024,1024}, {1,3,2048,2048})分别为 TRT engine 设定最小、默认、最大输入 shape对应 min/opt/max profile。源码中的注释明确说明如果希望使用原版 TensorRT 而非 Paddle-TensorRT只需注释掉EnablePaddleToTrt()与EnablePaddleTrtCollectShape()两行。这解释了为何示例选用without-argmax模型——Paddle-TensorRT 链路需要模型末端为 logits由推理框架完成后处理。5. 运行部署示例Linux/MacOS在 cpu-gpu/cpp 目录下执行如下命令即可完成编译与测试版本号x.x.x请替换为你实际下载的 FastDeploy 版本且不低于 1.0.0# 下载FastDeploy预编译库可在FastDeploy官方发布页自行选择合适的版本 wget https://bj.bcebos.com/fastdeploy/release/cpp/fastdeploy-linux-x64-x.x.x.tgz tar xvf fastdeploy-linux-x64-x.x.x.tgz # 使用本地 PaddleSeg 仓库若当前分支找不到该fastdeploy示例代码请切换到 develop 分支 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模型文件和测试图片 wget https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz tar -xvf PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png # 运行部署示例 # 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 2命令参数与 main 函数的用法提示 对应infer_demo 模型目录 图片路径 run_option其中run_option为 int 型0: CPU1: GPU2: GPUTensorRT 后端。运行成功后控制台打印SegmentationResult的内容并在当前目录生成可视化结果vis_result.jpg原图与 50% 透明度的分割 mask 叠加。注意事项以上命令只适用于 Linux 或 MacOSWindows 下 FastDeploy C SDK 的使用方式不同需通过 Visual Studio 加载工程等方式以 FastDeploy 官方 FAQ 为准Paddle-TensorRT 模式第一次运行时会执行模型序列化有一定耗时需要耐心等待之后的运行会明显加快。6. 与 Python 示例的对照同一硬件目录还提供 Python 部署示例其参数设计与 C 的run_option一一对应可作为快速验证手段参数含义默认值--model指定模型文件夹所在的路径None--image指定测试图片所在的路径None--device运行硬件类型支持cpu、gpu设为cpu时可运行在 x86/arm 等 CPU 上cpu--use_trt是否使用 TRT仅在 device 为 gpu 时有效False# 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推理 python infer.py --model PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer --image cityscapes_demo.png --device gpu --use_trt TrueC 路径的最终交付物是独立的infer_demo二进制依赖 FastDeploy 预编译库提供的运行时适合服务器侧高性能集成Python 路径则便于先跑通验证再迁移到 C。7. 常见问题与延伸阅读遇到问题时可参考以下仓库内路径与 FastDeploy 官方 FAQ后端引擎切换、Intel GPU 使用、CPU/GPU/Jetson 部署库编译等 FAQ以 FastDeploy 仓库docs/cn/faq与build_and_install系列文档为准涉及如何切换推理后端引擎、Intel 独立/集成显卡使用、编译 CPU/GPU/Jetson 部署库等主题结果转 numpy、SegmentationResult相关用法等 Python 侧问题可参考 Python 部署文档 中的常见问题清单FastDeploy 语义分割部署全景各硬件入口、预导出模型、模型导出须知deploy/fastdeploy/semantic_segmentation/README.mdFastDeploy 在 PaddleSeg 中的整体部署说明含 matting 分支deploy/fastdeploy/README.md模型导出参数与产物结构docs/model_export_cn.md、tools/export.py。赞分享人工智能计算机视觉预训练【免费下载链接】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 语义分割模型 FastDeploy 部署实战CPU/GPU 推理与 Paddle-TensorRT 加速PaddleSeg 语义分割模型 FastDeploy 部署实战CPU/GPU 推理与 Paddle TensorRT 加速 本篇指南基于 PaddleSeg人工智能计算机视觉预训练PaddleSeg 语义分割模型在华为昇腾 NPU 上的 FastDeploy Python 部署实战PaddleSeg 语义分割模型在华为昇腾 NPU 上的 FastDeploy Python 部署实战 本篇指南聚焦 PaddleSeg 仓库中 deploy/人工智能计算机视觉预训练PaddleSeg 语义分割模型华为昇腾 Ascend NPU C 部署实战指南FastDeploy 方案PaddleSeg 语义分割模型华为昇腾 Ascend NPU C 部署实战指南FastDeploy 方案 导读 本文以 deploy/fastdepl人工智能计算机视觉预训练上一篇暗黑破坏神2存档编辑器终极免费修改神器完整指南下一篇实战指南基于ROS2 SDK的Unitree Go2机器人深度开发与AI应用集成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Java基础语法必修:注释、关键字与字面量从入门到面试

Java基础语法必修:注释、关键字与字面量从入门到面试

有次帮一位刚自学Java的朋友看代码,他把所有变量都命名为class、interface、public,然后问我为什么编译不过。我一看就明白了:他不是不会写代码,而是从来没认真吃过基础语法。这个场景估计很多人眼熟——网上到处是“快速入门 Jav…

2026/9/25 10:47:30 阅读更多 →
Web开发实战笔记:从框架选型到部署安全的全栈经验

Web开发实战笔记:从框架选型到部署安全的全栈经验

做web开发这些年,我手机上攒的笔记比代码行数还多。从大学时第一次用记事本写html页面,到后来进公司带项目,大量经验其实都沉淀在这些零散的“web笔记”里:某个不起眼的报错、一次折腾半天的部署、一个让前端崩溃的缓存问题。这篇…

2026/9/25 10:47:30 阅读更多 →
Sinon.JS 实战指南:How-to 场景全解——Fake Timers 异步加速、CommonJS/ESM 依赖桩与 TypeScript+SWC 真实案例

Sinon.JS 实战指南:How-to 场景全解——Fake Timers 异步加速、CommonJS/ESM 依赖桩与 TypeScript+SWC 真实案例

测试开发工具 【免费下载链接】sinon Test spies, stubs and mocks for JavaScript. 项目地址: https://gitcode.com/gh_mirrors/si/sinon 点击查看 免费下载 本文是 Sinon.JS 官方 "How-to" 系列实践指南的完整导读与深度讲解。围绕 docs/guides/how-to…

2026/9/25 10:47:30 阅读更多 →

最新新闻

DeepSeek-Harness:CLI与Web UI双入口实操Agent开发

DeepSeek-Harness:CLI与Web UI双入口实操Agent开发

上一篇文章把 Harness 和 Agent 的区别掰扯清楚了,很多朋友看完还是觉得差点意思:概念懂了,下一步怎么跑起来?这次直接从 DeepSeek-Harness 最常用的两个入口讲起——CLI 和 Web UI。一个是纯命令行操作,适合脚本化、自…

2026/9/26 13:56:32 阅读更多 →
iVentoy 批量装机实战:PXE 网络启动部署与自动化配置指南

iVentoy 批量装机实战:PXE 网络启动部署与自动化配置指南

1. 为什么我最终选择了 iVentoy 做批量装机 机房上架新机器,最烦的从来不是硬件安装,而是装系统。十几台甚至几十台机器,一台一台插U盘、选启动项、点下一步,一天下来人直接废掉。我最早用的是传统 PXE 方案,配 DHCP、…

2026/9/26 13:56:32 阅读更多 →
Matlab实现正则化逻辑回归:微芯片质检分类完整实战

Matlab实现正则化逻辑回归:微芯片质检分类完整实战

芯片一条产线跑下来,良率就是生命线。我在实际项目里用Matlab做过不少分类预测的活,正则化逻辑回归在微芯片质检这种“维度不高、样本不大、但噪声不小”的场景里,反而比一堆花里胡哨的集成模型更稳、更可解释。这套流程不光能跑通实验数据&a…

2026/9/26 13:56:32 阅读更多 →
基于Java+SSM+Flask的高校就业管理系统设计与实现

基于Java+SSM+Flask的高校就业管理系统设计与实现

毕业设计选“高校就业管理系统”的同学,这两年肉眼可见地多起来了。基本上每个学校和学院都在催就业数据,加上每年毕业季前老师都要统计就业率、学生要投简历、企业要来校招,这套系统的需求量一直很稳。而“基于JavaSSMFlask高校就业管理系统…

2026/9/26 13:56:32 阅读更多 →
Laya-CoreML 如何把Transformer送上Neural Engine:BC1L激活、1×1投影与逐头注意力的ANE图重写

Laya-CoreML 如何把Transformer送上Neural Engine:BC1L激活、1×1投影与逐头注意力的ANE图重写

Laya-CoreML 如何把Transformer送上Neural Engine:BC1L激活、11投影与逐头注意力的ANE图重写 【免费下载链接】laya-coreml Local Laya typed decisions on Apple Core ML and Neural Engine. Validated ports, ~5 ms short decisions on M3 Max, reproducible spee…

2026/9/26 13:56:32 阅读更多 →
UWB不止定位:用SR1120构建低功耗高速短距数据链路

UWB不止定位:用SR1120构建低功耗高速短距数据链路

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

2026/9/26 13:55:32 阅读更多 →

日新闻

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、…

2026/9/26 0:00:25 阅读更多 →
学校官网模拟全流程实践:从页面布局到后端接口与部署

学校官网模拟全流程实践:从页面布局到后端接口与部署

如果你正在找一门 Web 大作业的题目,或者刚开始接触 Web 前端开发想做点能拿来展示的东西,“学校官网模拟”几乎是最稳的选择。题目看着简单,但要把导航、新闻列表、轮播 Banner、二级页面、后台数据都串起来,其实已经把前端布局、…

2026/9/26 0:00:25 阅读更多 →
超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

简介:这是一份面向游戏开发初学者与C进阶学习者的超级玛丽(超级马里奥)游戏源码,基于C面向对象编程实现,适合想通过经典项目理解游戏主循环、角色类设计、地图关卡加载与物理碰撞检测的读者参考。压缩包共49个文件&…

2026/9/26 0:00:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/25 19:27:14 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/25 20:29:09 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/25 20:29:43 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/25 19:27:26 阅读更多 →