轻量级人像分割模型PP-HumanSeg树莓派部署
本文介绍将PP-HumanSeg-Lite轻量级人像分割模型部署到树莓派的流程。先克隆PaddleSeg仓库、安装相关工具并下载预训练模型,接着导出静态图模型并转为ONNX格式,最后编写预测代码。将相关文件夹打包至树莓派,即可运行实现实时人像分割。
轻量级人像分割模型PP-HumanSeg模型树莓派部署
人像分割是图像分割领域的高频应用,PaddleSeg推出在大规模人像数据上训练的人像分割系列模型PP-HumanSeg,包括超轻量级模型PP-HumanSeg-Lite,满足在服务端、移动端、Web端多种使用场景的需求。本项目将PP-HumanSeg-Lite模型转为onnx并部署到树莓派,实现人像抠图效果。效果如下图所示(这里只露个半脸):
一、介绍
本项目将PaddleSeg的轻量级人像分割模型转换为onnx,将其部署到树莓派实现实时人像分割。树莓派环境如下:
硬件:
树莓派4B
摄像头一个
软件
Ubuntu Desktop 21.10
onnxruntime
opencv-python
二、具体流程
1、克隆paddleseg仓库
In [ ]
# step 1: git clone %cd ~/ !git clone https://gitee.com/PaddlePaddle/PaddleSeg.git
2、安装paddleseg
In [ ]
# step 2: install paddleseg!pip install paddleseg
3、下载预训练模型
In [ ]
# step 3: 下载预训练模型%cd ~/PaddleSeg/contrib/PP-HumanSeg !python pretrained_model/download_pretrained_model.py
4、导出静态图模型
需要加上input_shape,本项目部署的模型是PP-HumanSeg-Lite,该模型的输入图片大小是192x192,如果要部署其他模型,需要更改model_path和config路径,。
In [ ]
# step 4: 导出静态图模型%cd ~/PaddleSeg/contrib/PP-HumanSeg !python ../../export.py \ --config configs/fcn_hrnetw18_small_v1_humanseg_192x192_mini_supervisely.yml \ --model_path pretrained_model/fcn_hrnetw18_small_v1_humanseg_192x192/model.pdparams \ --save_dir export_model/fcn_hrnetw18_small_v1_humanseg_192x192 \ --with_softmax --input_shape 1 3 192 192
5、onnx转换
In [ ]
# step 5:转为onnx模型# ① 安装paddle2onnx!pip install paddle2onnx
In [ ]
# ② 转换为onnx%cd ~/PaddleSeg/contrib/PP-HumanSeg
! paddle2onnx --model_dir ./export_model/fcn_hrnetw18_small_v1_humanseg_192x192/ \
--model_filename model.pdmodel \
--params_filename model.pdiparams \
--save_file onnx_model/model.onnx \
--opset_version 12
6、移动模型路径
模型路径是:/home/aistudio/pp_humanseg_deploy,文件夹目录结构如下:
|-onnx_model
|---model.onnx
|-predict.py
In [ ]
# step 6: 转移模型路径%cd ~/ !mkdir pp_humanseg_deploy %cd ~/pp_humanseg_deploy/ !mkdir onnx_model !cp ~/PaddleSeg/contrib/PP-HumanSeg/onnx_model/model.onnx ~/pp_humanseg_deploy/onnx_model
7、预测代码
创建/home/aistudio/pp_humanseg_deploy/predict.py,将以下内容放进predict.py。
import cv2import numpy as npimport onnxruntime as rtdef normalize(im, mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]):
im = im.astype(np.float32, copy=False) / 255.0
im -= mean
im /= std return imdef resize(im, target_size=608, interp=cv2.INTER_LINEAR):
if isinstance(target_size, list) or isinstance(target_size, tuple):
w = target_size[0]
h = target_size[1] else:
w = target_size
h = target_size
im = cv2.resize(im, (w, h), interpolation=interp) return imdef preprocess(image, target_size=(192, 192)):
image = normalize(image)
image = resize(image, target_size=target_size)
image = np.transpose(image, [2, 0, 1])
image = image[None, :, :, :] return imagedef display_masked_image(mask, image, color_map=[255, 0, 0], weight=0.6):
mask = mask > 0
c1 = np.zeros(shape=mask.shape, dtype='uint8')
c2 = np.zeros(shape=mask.shape, dtype='uint8')
c3 = np.zeros(shape=mask.shape, dtype='uint8')
pseudo_img = np.dstack((c1, c2, c3)) for i in range(3):
pseudo_img[:, :, i][mask] = color_map[i]
vis_result = cv2.addWeighted(image, weight, pseudo_img, 1 - weight, 0) return vis_result
onnx_model_path = 'onnx_model/model.onnx'sess = rt.InferenceSession(onnx_model_path)
input_name = sess.get_inputs()[0].name
label_name = sess.get_outputs()[0].name
target_size = (192, 192)
cap_video = cv2.VideoCapture(0)if not cap_video.isOpened(): raise IOError("Error opening video stream or file.")while cap_video.isOpened():
ret, raw_frame = cap_video.read()
pre_shape = raw_frame.shape[0:2][::-1] if ret:
frame = cv2.cvtColor(raw_frame, cv2.COLOR_BGRA2RGB)
frame = preprocess(frame, target_size)
pred = sess.run(
[label_name],
{input_name: frame.astype(np.float32)}
)[0]
pred = pred[0]
raw_frame = resize(raw_frame, target_size)
image = display_masked_image(pred, raw_frame)
image = resize(image, target_size=pre_shape)
cv2.imshow('HumanSegmentation', image) if cv2.waitKey(1) & 0xFF == ord('q'): break
else: breakcap_video.release()
三、树莓派运行实例
将/home/aistudio/pp_humanseg_deploy文件夹打包,放入树莓派环境运行predict.py,效果如下:
以上就是轻量级人像分割模型PP-HumanSeg树莓派部署的详细内容,更多请关注启程网【www.vszh.cn】AI 人工智能栏目。
如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!
猜您喜欢
开启 Windows 11 内置的“摄像头 AI 构图” 视频通话始终保持人像中心
2026-06-02Windows11“摄像头AI构图”需硬件支持并更新驱动后,在“设置→蓝牙和设备→摄像头”中开启,再于Zoom(≥6.0.0)、Teams或Chrome网页会议中启用对应选项实现自动居中跟踪。 在Windows11视频通话中启用“摄像头AI构图”功能,能让摄像头自动识别人脸并实时调整画面,确保你始终处于画面中心位置,避免因走动或坐姿变化导致出画。 确认设备支持并更新驱动 打开“设置”→“蓝牙和设备...
QoderWake离线安装包获取及局域网部署教程
2026-05-31QoderWake离线部署需通过中转机下载全量安装包,校验后传输至内网服务器,解压并检查目录结构,修改配置为0.0.0.0监听,开放防火墙端口,最后执行start.sh启动服务。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您需要在无外网连接的环境中部署QoderWake,但无法直接从官网下载安装包或执行在线安装,则需通过中转机获取离线安装包并...
Canva AI做人像写真封面提示词怎么加入真实使用场景
2026-05-30必须将真实使用场景嵌入提示词:第一步锁定人与物交互(如“左手握手账本,右手悬停纸上”),第二步细化物品状态(如“周计划页有荧光笔痕、樱花胶带”),第三步加入微动态(如“拇指上滑手机,锁屏显未读红点”);再用“在……中”锚定空间、环境互动(如“发丝被风扇吹起,耳钉随光斑明暗”)和时间线索(如“下午三点咖啡杯投影清晰,水渍未干”)增强临场感;最后植入磨损痕迹(袖口毛球、汗渍印)、非完美状态(额角铅灰、...
怎么将 MiniMax 智能体部署到本地服务器?私有化部署可行性建议
2026-05-30MiniMax智能体本地私有化部署有五种路径:一、DockerGPU加速部署;二、ONNXRuntime纯CPU离线部署;三、Ollama+Modelfile容器化部署;四、vLLM高并发直连部署;五、16GB显存设备CPU卸载适配部署。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您希望将MiniMax智能体部署到本地服务器,实现数据不出域、...
Midjourney做人像写真封面总是脸部不稳定,提示词怎么补充
2026-05-30Midjourney人像脸部变形的根本原因是缺乏人脸结构与视觉权重的精准锚定,需用空间约束、解剖术语和风格化锁定词替代模糊描述,如强制添加front-facingportrait、symmetricalface、centeredcomposition等关键触发序列。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ Midjourney生成人像写真封面时...
iPhone 17怎么使用长焦人像 苹果17三倍长焦拍人像方法
2026-05-30要用iPhone17三倍长焦拍好人像,必须直接点【3x】按钮启用物理长焦模组,确认取景框显示“3×”无后缀、有暗角与视角收窄;人像模式下须先开人像再点3x,或长按3x拖至3.0x后切人像,以融合LiDAR与长焦景深数据;构图保持距离≥1.2米、用网格线构图、选纵深背景;后期通过编辑中【ƒ】图标调节光圈(f/1.4最强虚化)及散景形状。 要用iPhone17的三倍长焦镜头拍出背景虚化自然、人物立体感...
Qoder离线安装包下载:在无网络环境下部署开发环境
2026-05-29必须通过外网中转设备预先获取完整离线资源并完成本地初始化;具体包括:一、在外网机下载或构建离线安装包及模型;二、校验后解压至标准路径;三、配置离线运行时环境并启动;四、验证各功能模块完全离线可用。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您需要在无网络连接的环境中部署Qoder开发环境,但无法直接访问官网下载安装包,则必须通过外网中转设备预...
iPhone 17怎么使用人像光效 苹果17改变人像灯光方法
2026-05-29iPhone17尚未发布,当前可实操人像光效功能仅限iPhone16/15Pro等支持机型:先开相机选人像模式,再点光效图标选六种之一,最后拍摄;后期可在照片App中对原生人像照追加或关闭光效。 iPhone17尚未发布,目前苹果最新量产机型为iPhone16系列(2024年9月发布),iOS系统也未适配所谓“iPhone17”的人像光效功能;所有关于iPhone17人像光效的教程均基于不存在的设...
