ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

PP-Matting 全场景部署实战:FastDeploy Python 在 CPU/GPU/TensorRT/昆仑芯/昇腾上的抠图推理指南

PP-Matting 全场景部署实战:FastDeploy Python 在 CPU/GPU/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 的 Matting 系列模型PP-Matting、PP-HumanMatting、ModNet可通过 FastDeploy 在 NVIDIA GPU、X86 CPU、飞腾 CPU、ARM CPU、Intel GPU独立显卡/集成显卡、昆仑芯 XPU、华为昇腾等多种硬件上快速完成部署。本文以 deploy/fastdeploy/matting/cpu-gpu/python/README.md 为核心结合仓库中的 infer.py 源码与 模型导出工具完整讲解环境准备、模型获取、一键推理命令、RuntimeOption 底层原理以及可视化结果输出帮助你在一台机器上跑通「输入人像 → 输出抠图前景 替换背景」的完整部署流程。一、FastDeploy 与 PP-Matting全场景抠图部署方案概述FastDeploy 是一款面向 AI 推理部署的工具支持云、边、端全场景。针对 PaddleSeg 的 Matting 模型它可以简单高效地在以下硬件上完成部署见 matting 部署总览硬件类型是否支持使用指南PythonCX86 CPU✅cpu-gpu✅✅NVIDIA GPU✅cpu-gpu✅✅飞腾 CPU✅cpu-gpu✅✅ARM CPU✅cpu-gpu✅✅Intel GPU集成显卡✅cpu-gpu✅✅Intel GPU独立显卡✅cpu-gpu✅✅昆仑芯✅kunlunxin✅✅华为昇腾✅ascend✅✅此外FastDeploy 还支持 Paddle Inference、Paddle Lite、TensorRT、OpenVINO、ONNXRuntime、RKNPU2、SOPHGO 等多种推理后端。这意味着同一套模型文件、同一份示例代码只需修改几行RuntimeOption配置就能在不同硬件与后端之间无缝切换——这正是本文「全场景部署」的核心价值所在。二、部署环境准备在部署前需确认软硬件环境并下载 FastDeploy 预编译部署库。需要注意只有 CPU 和 GPU 提供官方预编译库可以直接下载解压使用华为昇腾、昆仑芯没有预编译库需要参考 FastDeploy 的构建与安装文档在自己的环境中自行编译部署环境。Python 侧还需要具备以下基础依赖Python 3.x 环境fastdeployPython 包随预编译库或 pip 安装opencv-python示例代码用cv2.imread读取图片numpy--use_trt参数解析使用ast.literal_eval图片处理依赖 numpy。三、部署模型准备部署前需要准备好推理模型有两条路径可选使用官方预导出的推理模型或者从训练权重自行导出 PaddleSeg 部署模型。3.1 使用预导出的推理模型deploy/fastdeploy/matting/cpu-gpu/README.md 提供了 PP-Matting 系列已导出的模型开发者可直接下载使用模型参数大小PP-Matting-512106MBPP-Matting-1024106MBPP-HumanMatting247MBModnet-ResNet50_vd355MBModnet-MobileNetV228MBModnet-HRNet_w1851MB以 PP-Matting-512 为例下载命令为wget https://bj.bcebos.com/paddlehub/fastdeploy/PP-Matting-512.tgz tar -xvf PP-Matting-512.tgz解压后得到的PP-Matting-512/目录即为可直接喂给推理脚本的模型目录。重要提示模型目录中的deploy.yaml文件记录了导出模型的input_shape以及预处理transforms信息。FastDeploy 在加载模型时会从该 yaml 中解析推理所需的预处理配置。若你的实际输入尺寸或预处理方式与记录不一致需要重新导出模型而不能直接修改推理脚本去迁就。3.2 自行导出 PaddleSeg 部署模型如果你训练了自己的 Matting 模型或想更换输入尺寸可以按以下流程自行导出。模型版本要求支持 PaddleSeg 高于 2.6 版本的 Matting 模型。仓库中经过 FastDeploy 验证的模型系列包括见 Matting 子项目PP-Matting 系列模型PP-HumanMatting 系列模型ModNet 系列模型。导出命令参考 Matting/tools/export.py 与 Matting 全流程开发文档python tools/export.py \ --config configs/quick_start/ppmattingv2-stdc1-human_512.yml \ --model_path output/best_model/model.pdparams \ --save_dir output/export \ --input_shape 1 3 512 512关键参数说明参数作用默认值--config训练/推理配置文件必填其中包含模型结构、数据集 transforms 等无--model_path训练得到的权重文件model.pdparams路径None--save_dir导出模型保存目录./output--input_shape固定导出输入尺寸如1 3 1024 1024不指定时导出动态 shape[None, 3, None, None]None--trimap若模型需要 trimap 输入如 DIM 系列需加上该开关不加--for_fd导出 FastDeploy 兼容格式inference.pdmodelinference.yml不加从 export.py 源码 可以看到导出流程的核心逻辑通过paddle.jit.to_static将动态图模型转为静态图使用paddle.jit.save保存模型额外写出一份 yaml 文件包含Deploy.transforms预处理流程默认Normalize、Deploy.model/Deploy.params模型与参数文件名、Deploy.input_shape输入尺寸以及ModelName。导出的标准部署模型包含三个文件PP-Matting-512/ ├── model.pdmodel # 模型结构静态图 ├── model.pdiparams # 模型参数 └── deploy.yaml # 预处理信息 输入尺寸FastDeploy 依赖它做预处理FastDeploy 正是从deploy.yaml中读取预处理信息从而在推理时自动完成与训练一致的图像预处理。四、运行 Python 部署示例一条命令完成抠图推理4.1 下载示例代码与测试资源# 下载部署示例代码 git clone https://github.com/PaddlePaddle/PaddleSeg.git # 注意如果当前分支找不到下面的 fastdeploy 测试代码请切换到 develop 分支 # git checkout develop cd PaddleSeg/deploy/fastdeploy/matting/cpu-gpu/python # 下载 PP-Matting 模型文件和测试图片 wget https://bj.bcebos.com/paddlehub/fastdeploy/PP-Matting-512.tgz tar -xvf PP-Matting-512.tgz wget https://bj.bcebos.com/paddlehub/fastdeploy/matting_input.jpg wget https://bj.bcebos.com/paddlehub/fastdeploy/matting_bgr.jpg这里下载了三个测试资源PP-Matting-512/预导出的抠图模型106MBmatting_input.jpg待抠图的前景输入图人像matting_bgr.jpg用于背景替换的新背景图。4.2 各硬件/后端的推理命令在 infer.py 所在目录下依次执行# CPU 推理 python infer.py --model PP-Matting-512 --image matting_input.jpg --bg matting_bgr.jpg --device cpu # GPU 推理 python infer.py --model PP-Matting-512 --image matting_input.jpg --bg matting_bgr.jpg --device gpu # GPU 上使用 TensorRT 推理 # 注意TensorRT 推理第一次运行时有序列化模型的操作有一定耗时需要耐心等待 python infer.py --model PP-Matting-512 --image matting_input.jpg --bg matting_bgr.jpg --device gpu --use_trt True # 昆仑芯 XPU 推理 python infer.py --model PP-Matting-512 --image matting_input.jpg --bg matting_bgr.jpg --device kunlunxin4.3 命令行参数说明从 infer.py 的参数解析 可以整理出完整的参数表参数类型必填默认值说明--modelstr✅无PaddleSeg 模型目录路径含model.pdmodel、model.pdiparams、deploy.yaml--imagestr✅无测试图像文件路径--bgstr✅None测试背景图像文件路径用于背景替换可视化--devicestr否cpu推理设备支持cpu、gpu、kunlunxin--use_trtbool否False是否启用 TensorRT 后端通过ast.literal_eval解析需传True/False4.4 华为昇腾部署只改一行代码以上示例未直接提供华为昇腾的运行命令。在编译好昇腾部署环境后只需改造一行代码即可完成昇腾推理将 build_option 函数 中的option.use_kunlunxin()改为option.use_ascend()其余代码与推理流程完全不变。五、infer.py 源码解析RuntimeOption 决定推理后端理解 infer.py 的推理链路有助于你根据实际硬件自由组合后端。整个流程分为三步构建 RuntimeOption → 构造 PPMatting 模型 → 预测并可视化。5.1 按设备构建 RuntimeOptiondef build_option(args): option fd.RuntimeOption() if args.device.lower() gpu: option.use_gpu() option.use_paddle_infer_backend() 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(img, [1, 3, 512, 512]) if args.device.lower() kunlunxin: option.use_kunlunxin() return option这里揭示了几个关键点GPU 推理默认走 Paddle Inference 后端use_gpu()use_paddle_infer_backend()组合即 GPU 上默认使用 Paddle 原生推理引擎Paddle-TensorRT 与原生 TensorRT 的区别--use_trt True时代码默认启用enable_paddle_to_trt()Paddle 转 TensorRT即 Paddle-TensorRT 模式并配合enable_paddle_trt_collect_shape()收集动态 shape若想改用原生 TensorRT注释这两行即可TRT 输入 shape 必须显式指定set_trt_input_shape(img, [1, 3, 512, 512])将输入张量img固定为[1, 3, 512, 512]batch13 通道 RGB512×512。该值应与导出模型时的--input_shape保持一致否则 TensorRT 引擎构建会失败昆仑芯走独立分支use_kunlunxin()单独开启 XPU 后端。5.2 构造模型并执行预测runtime_option build_option(args) 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.matting.PPMatting( model_file, params_file, config_file, runtime_optionruntime_option) # predict im cv2.imread(args.image) bg cv2.imread(args.bg) result model.predict(im) print(result)要点fd.vision.matting.PPMatting是 FastDeploy 为 Matting 任务封装的高层 API构造参数正好对应导出目录中的三个文件config_file即deploy.yaml被显式传入FastDeploy 从中读取预处理 transforms 与输入 shape因此自定义导出模型后无需改动任何预处理代码model.predict(im)返回MattingResult其中包含 alpha 抠图结果以及前景估计信息直接print(result)可查看结构。六、可视化结果输出前景提取与背景替换推理完成后infer.py 会调用 FastDeploy 的两个可视化 APIvis_im fd.vision.vis_matting(im, result) # 仅展示抠出的前景 vis_im_with_bg fd.vision.swap_background(im, bg, result) # 将新背景合成到人像后方 cv2.imwrite(visualized_result_fg.png, vis_im) cv2.imwrite(visualized_result_replaced_bg.jpg, vis_im_with_bg)运行完成后会在当前目录生成两张结果图输出文件内容visualized_result_fg.png从原图中抠出的前景透明背景或前景可视化visualized_result_replaced_bg.jpg原人像替换成matting_bgr.jpg新背景后的合成图这正是「抠图」两个最典型的产品化应用素材提取前景图与背景合成人像换背景。vis_matting与swap_background内部会根据MattingResult中的 alpha 通道完成前景蒙版应用与背景融合开发者无需自行实现 alpha 合成逻辑。七、延伸C 部署对照如果产品是 C 服务或端侧应用可参考同目录下的 C 部署示例。其 infer.cc 实现了与 Python 示例完全对应的四种模式通过最后一个整型参数切换./infer_demo PP-Matting-512 matting_input.jpg matting_bgr.jpg 0 # CPU ./infer_demo PP-Matting-512 matting_input.jpg matting_bgr.jpg 1 # GPU ./infer_demo PP-Matting-512 matting_input.jpg matting_bgr.jpg 2 # GPU TensorRT ./infer_demo PP-Matting-512 matting_input.jpg matting_bgr.jpg 3 # 昆仑芯C 侧的RuntimeOption调用UseCpu()/UseGpu()/UseTrtBackend()/EnablePaddleToTrt()/UseKunlunXin()与 Python 侧一一对应昇腾同样只需将UseKunlunXin()替换为UseAscend()。注意 C 部署需要 FastDeploy 版本1.0.0 及以上并通过 CMake 指定FASTDEPLOY_INSTALL_DIR编译。八、更多指南与常见问题8.1 仓库内延伸阅读FastDeploy 部署 PaddleSeg 模型概览硬件支持列表与各平台入口模型准备与预导出模型列表PP-Matting/PP-HumanMatting/ModNet 各型号与大小C 部署示例CMake 编译与运行方式昆仑芯部署 与 昇腾部署对应硬件的专属说明Matting 全流程开发文档从数据准备、训练到导出的完整链路模型导出工具自行导出部署模型的参数详解。8.2 常见问题方向如何将模型预测结果转为 numpy 格式MattingResult提供了访问 alpha 与前景结果的接口可按 FastDeploy 结果对象相关文档转换为 numpy 数组后自行处理如何切换模型推理后端引擎核心在RuntimeOption除本文涉及的 Paddle Inference / Paddle-TensorRT / 原生 TensorRT 外还可切换 OpenVINO、ONNXRuntime 等后端只需替换对应的use_*_backend调用Intel GPU独立/集成显卡使用在编译好相应后端后通过RuntimeOption指定 Intel GPU 后端即可复用同一套示例CPU/GPU 部署库编译CPU、GPU 有官方预编译库可直接使用若需定制如 Jetson、昇腾、昆仑芯需参考 FastDeploy 对应平台的构建文档自行编译TensorRT 首次推理耗时第一次运行时存在 TensorRT 引擎序列化构建过程耗时较长属正常现象后续运行会复用引擎缓存。结语从本文可以看到PaddleSeg FastDeploy 的组合将「训练 → 导出 → 多硬件部署」这条链路压缩到了极低的门槛模型导出后只需三个文件、一条infer.py命令即可在 CPU、GPU、TensorRT、昆仑芯乃至昇腾上完成 PP-Matting 的抠图与背景替换推理。理解RuntimeOption的后端切换机制后你可以在不修改推理主流程的情况下为任何目标硬件快速定制部署方案——这正是 FastDeploy 全场景部署能力的核心价值。赞分享人工智能计算机视觉预训练【免费下载链接】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点击查看免费下载相关推荐5个步骤快速上手PixelCNN从环境配置到生成第一张图像5个步骤快速上手PixelCNN从环境配置到生成第一张图像 PixelCNN是一个基于深度学习的图像生成模型实现了PixelCNN: A Pi人工智能计算机视觉预训练PaddleDetection 多人关键点检测 PipelinePP-PicoDet PP-TinyPose在昆仑芯 XPU 上的 FastDeploy Python 部署实战PaddleDetection 多人关键点检测 PipelinePP PicoDet PP TinyPose在昆仑芯 XPU 上的 FastDeploy人工智能深度学习计算机视觉基于 FastDeploy 的 PaddleDetection 昆仑芯 XPU Python 部署实战指南基于 FastDeploy 的 PaddleDetection 昆仑芯 XPU Python 部署实战指南 本指南以 PaddleDetection 仓库 de人工智能深度学习计算机视觉上一篇告别歌词荒163MusicLyrics网易云QQ音乐歌词一键获取全攻略下一篇NorthCinder排名算法深度解析确定性打分如何让广告永远无法上位创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表