[C#]C# OpenVINO部署yolov8-pose姿态估计模型

news2024/9/27 17:31:20

【源码地址】 

github地址:https://github.com/ultralytics/ultralytics

【算法介绍】

Yolov8-Pose算法是一种基于深度神经网络的目标检测算法,用于对人体姿势进行准确检测。该算法在Yolov8的基础上引入了姿势估计模块,通过联合检测和姿势估计的方式来实现准确的姿势检测。

Yolov8-Pose算法的基本思想是将姿势检测任务转化为多个关键点的检测任务。人体姿势可以看作是由多个关键点组成的,例如头部、肩膀、手肘、手腕等。Yolov8-Pose算法通过在Yolov8的基础上增加额外的关键点检测层,来实现对这些关键点的检测和定位。

Yolov8-Pose算法的网络结构是在Yolov3的基础上进行改进和优化得到的。它采用了Darknet作为主干网络,并在其上添加了一系列的卷积层、上采样层和连接层,以提取更丰富的特征信息。同时,为了实现人体姿态点的检测和估计,Yolov8-Pose在输出层上引入了关键点检测的任务分支。

通过以上原理,Yolov8-Pose算法能够在保持检测速度的同时,实现对人体姿势的准确检测,从而在人体姿态估计领域具有一定的应用价值。

【效果】

【实现部分代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;

namespace FIRC
{
    public partial class Form1 : Form
    {
        Mat src = new Mat();
        Yolov8PoseManager ym = new Yolov8PoseManager();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";
            openFileDialog.RestoreDirectory = true;
            openFileDialog.Multiselect = false;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
              
                src = Cv2.ImRead(openFileDialog.FileName);
                pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);


            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            if(pictureBox1.Image==null)
            {
                return;
            }
            Stopwatch sw = new Stopwatch();
            sw.Start();
            var result = ym.Inference(src);
            sw.Stop();
            this.Text = "耗时" + sw.Elapsed.TotalSeconds + "秒";
            var resultMat = ym.DrawImage(src,result);
            pictureBox2.Image= OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resultMat); //Mat转Bitmap
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ym.LoadWeights(Application.StartupPath+ "\\weights\\yolov8n-pose.onnx");

        }

        private void btn_video_Click(object sender, EventArgs e)
        {
  
  
        }
    }
}

【视频演示】

https://www.bilibili.com/video/BV1ce411U71r/
【源码下载】

https://download.csdn.net/download/FL1623863129/88699308
【测试环境】

vs2019

netframework4.8

opencvsharp4.8.0

openvinosharp

注意无需额外安装openvino运行库直接可以运行
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1364081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonOS 通用组件(Checkbox)

本文中 我们来说 通用组件中的 Checkbox 我们先搭起一个基本的架子组件 Entry Component struct Index {build() {Row() {Column() {Row() {}}.width(100%)}.height(100%)} }我们可以在Row 行组件中加入代码 Checkbox({name: "age"}) Text("年龄")这样 就…

JDK 11:崭新特性解析

JDK 11:崭新特性解析 JDK 11:崭新特性解析1. HTTP Client(标准化)示例代码 2. 局部变量类型推断的扩展示例代码 3. 新的字符串方法示例代码 4. 动态类文件常量示例代码 5. Epsilon 垃圾收集器使用方式 结语 JDK 11:崭新…

第三十八周周报:文献阅读 +BILSTM+GRU+Seq2seq

目录 摘要 Abstract 文献阅读:耦合时间和非时间序列模型模拟城市洪涝区洪水深度 现有问题 提出方法 创新点 XGBoost和LSTM耦合模型 XGBoost算法 ​编辑 LSTM(长短期记忆网络) 耦合模型 研究实验 数据集 评估指标 研究目的 洪…

stable diffusion 基础教程-文生图

置顶大模型插件资源链接 你如果没有魔法上网,请自取 百度云盘链接:链接:https://pan.baidu.com/s/1_xAu47XMdDNlA86ufXqAuQ?pwd=23wi 提取码:23wi 有疑问加微:mincarver 界面介绍 参数解释 参数解释Sampling method扩散去噪算法的采样模式,不同采样模式会带来不一样的效…

opencv期末练习题(6)附带解析

滑动块调整图像灰度 import cv2 import numpy as np """ 滑动块调整图像灰度1. 读取图片,并转为灰度图 2. 定义启动滑块和阈值滑块 3. 只有启动滑块的值为1时,拖动阈值滑块才生效 4. 根据阈值滑块的值实时对图像进行二值化操作 "&qu…

【文件操作】

目录 为什么使用文件什么是文件二进制文件和文本文件文件的打开和关闭文件的顺序读写文件的随机读写文件读取结束的判定文件缓冲区 1. 为什么使用文件 如果没有文件,我们写的程序数据时存储在电脑内存中,如果程序退出,内存回收,…

VS Code 如何调试Python文件

VS Code中有1,2,3处跟Run and Debug相关的按钮, 1 处:调试和运行就不多说了,Open Configurations就是打开workspace/.vscode下的lauch.json文件,而Add Configuration就是在lauch.json文件中添加当前运行Python文件的Configuratio…

C语言编译器(C语言编程软件)完全攻略(第二十七部分:VS安全函数问题(C语言安全函数)是怎么回事?如何解决?)

介绍常用C语言编译器的安装、配置和使用。 二十七、VS安全函数问题(C语言安全函数)是怎么回事?如何解决? 在 VS(Visual Studio)下编译C语言程序,如果使用了 scanf()、gets()、strcpy()、strca…

在IDEA中使用git分支进行开发然后合并到Master分支,2022.1.x版本

在实际开发过程中,为了避免因为在开发中出现的问题以及方便发布版本,如果是多版本发布的情况相下,我们通常需要采用分支进行开发,这个时候,我们就需要了解git分支的相关知识点了,本篇博客也是博主在实际公司…

linux高级管理——Squid代理

一、squid服务基础: 1.1缓存代理的概述: 代理的工作机制 当客户机通过代理来请求Web页面时.指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机:如果缓存中…

JumpServer3.0版本-资产管理

资产列表 资产列表可展示资产树和类型树,可以查看添加的所有资产 新增资产也是在此页面 在资产树上面右键可以创建新的子节点 比如这里我新建了个“腾讯云”节点 选中腾讯云节点,点击中间的“创建”按钮,新增资产 选择你的主机类型,我这是Linux 填写你资产的名称、IP必…

复习sql: 内连接,左外连接,右外连接,全外连接,交叉连接

数据表准备 学生表 和 课程表 内连接 join 或 innner join 筛选出满足条件的列,where也可以实现这种功能。 SELECT * FROM student JOIN course ON student.student_id course.stu_id结果 外连接 左外连接 left join 或者 left outer join 以第一个表为基础&…

爬虫-3-模拟登录,代理ip,json模块

#本文仅供学习使用(O`) 如果服务器响应的数据为json数据: 那么我们可以用 res.json() 或 json模块(将json字符串转换为Python里面的字典类型) 接收数据。

商家如何通过会员充值消费管理系统提升业务运营与用户体验

在当今数字化商业环境中,会员充值消费管理系统已经成为各类商家提高客户粘性、优化服务流程、增强市场竞争力的重要工具。那么如何通过会员充值消费管理系统提升业务运营与用户体验,商家是否有所了解呢?下面就带大家简单了解。 首先&#xf…

计算机网络 综合(习题)

【计算机网络习题】系列文章目录 计算机网络 第一章 绪论(习题) 计算机网络 第二章 计算机网络体系结构(习题) 计算机网络 第三章 应用层(习题) 计算机网络 第四章 运输层(习题) 计算机网络 第五章 网络层(习题) 计算机网络 第六章 数据链路层(习题) 计算机网络 第七章 物…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)添加 删除 修改 释放

在上篇文章(处理任务队列中的任务)中我们讲解了处理任务队列中的任务的具体流程,eventLoopProcessTask函数的作用: 处理队列中的任务,需要遍历链表并根据type进行对应处理,也就是处理dispatcher中的任务。 // 处理任…

Hystrix熔断/断路器

简介 Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故…

Kubernetes复习总结(二):Kubernetes容器网络

2、Kubernetes容器网络 1)、Docker网络原理 Docker默认使用的网络模型是bridge,这里只讲bridge网络模型 1)容器之间通信原理 当安装完docker之后,docker会在宿主机上创建一个名叫docker0的网桥,默认IP是172.17.0.1…

【DevOps-05】Integrate工具

一、简要说明 持续集成、持续部署的工具很多,其中Jenkins是一个开源的持续集成平台。 Jenkins涉及到将编写完毕的代码发布到测试环境和生产环境的任务,并且还涉及到了构建项目等任务。 Jenkins需要大量的插件保证工作,安装成本较高,下面会基于Docker搭建Jenkins。 二、Jenk…

Opencv与PyQt5设计一个摄像头界面

一、前言 本篇的内容是学习的这一位博主的:程序界面设计_Doc_Cheng的博客-CSDN博客。 这是我见过很详细的教你如何使用的PyQt5来完成UI界面设计的,专注于UI界面设计。对我而言,这教程就像是一个实用工具,因为我只需要能够显示图…