【有趣好玩】人体分割BodyPix模型部署演示

学习《OpenCV应用开发:入门、进阶与工程化实践》一书
做真正的OpenCV开发者,从入门到入职,一步到位!

人体分割模型

本质就就是语义分割模型,基于Deeplabv3+ 与ResNet34构建的一个人体分割模型,会把人体划分为15个不同的部分,图示如下:
在这里插入图片描述

模型导出与结构

Github开源模型与推理代码地址

https://github.com/potato-farm/alchera-ai-challenge

基于pth文件导出模型为ONNX文件,模型导出脚本如下:
在这里插入图片描述
导出以后的模型结构如下:
在这里插入图片描述

代码演示

从github下载的best模型文件可以基于下面的代码实现推理演示:
在这里插入图片描述
运行结果如下:
在这里插入图片描述
使用导出的ONNX格式模型,基于OpenCV-Python语言实现推理演示的结果如下:
在这里插入图片描述
在这里插入图片描述

推荐一款好的OpenCV开发工具软件

OpenCV实验大师工具软件 与 OpenCV实验大师工作流引擎库,是作者数十年OpenCV开发的融汇贯通与工程经验的总结之后系统化知识体系的呕心沥血之作,用它们双剑合璧,OpenCV开发效率可提升数十倍,开发能力延展达到工作十年的研发能力,为公司创造更多更大的商业价值是作者的开发这两款软件的初心,Make OpenCV Development Easy, 永远是我们不变的追求!!! 软件下载地址

学习《OpenCV应用开发:入门、进阶与工程化实践》一书
做真正的OpenCV开发者,从入门到入职,一步到位!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据提供的引用内容,我们可以得知PaddleSeg是一个基于飞桨PaddlePaddle的图像分割套件,而ONNXRuntime是一个用于模型推理的框架。因此,我们可以使用PaddleSeg训练出语义分割模型,并将其转换为ONNX格式,然后使用ONNXRuntime在Java项目中进行部署。 以下是语义分割模型Java项目部署的步骤: 1.使用PaddleSeg训练出语义分割模型,并将其转换为ONNX格式。可以使用PaddleSeg提供的export_model.py脚本将模型转换为ONNX格式,具体命令如下: ```shell python export_model.py --config configs/quick_start/bisenet_optic_disc_512x512_1k.yml --model_path output/best_model/model.pdparams --save_dir ./onnx_model --opset_version 11 ``` 其中,--config指定了训练时使用的配置文件,--model_path指定了训练得到的模型参数文件,--save_dir指定了转换后的ONNX模型保存路径,--opset_version指定了ONNX的版本号。 2.在Java项目中使用ONNXRuntime加载模型并进行推理。可以使用ONNXRuntime提供的Java API来加载模型并进行推理,具体代码如下: ```java import ai.onnxruntime.*; import java.nio.file.Paths; public class SegmentationModel { private OrtEnvironment env; private OrtSession session; private OrtSession.Result output; public SegmentationModel(String modelPath) throws Exception { env = OrtEnvironment.getEnvironment(); session = env.createSession(Paths.get(modelPath)); } public float[] predict(float[] input) throws Exception { OrtSession.Result inputTensor = session.getInput("input"); inputTensor.use(input, new long[]{1, 3, 512, 512}); output = session.run(new String[]{"output"}); float[] result = output.get(0).asFloatArray(); return result; } public void close() throws Exception { output.close(); session.close(); env.close(); } } ``` 其中,OrtEnvironment是ONNXRuntime提供的环境类,用于创建会话和释放资源。OrtSession是会话类,用于加载模型和进行推理。OrtSession.Result是推理结果类,用于获取模型的输出。predict方法用于进行推理,input参数是输入数据,result参数是输出数据。 3.将Java项目打包为可执行jar文件。可以使用Maven或Gradle等构建工具将Java项目打包为可执行jar文件。 4.在命令行中运行Java项目。可以使用以下命令在命令行中运行Java项目: ```shell java -jar segmentation-model.jar ``` 其中,segmentation-model.jar是Java项目打包后的jar文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gloomyfish

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值