人工智能计算机视觉预训练【免费下载链接】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),仅供参考