当前位置: 首页 > news >正文

基于YOLOv8-pose的手部关键点检测(3)- 实现实时手部关键点检测

目录

前言

1.扩大检测框区域

2.先检测手部,后检测手部关键点

3.正面视角检测

4.侧面视角检测

5.摄像头视角检测

6.遮挡视角检测

7.结论


前言

        使用YOLOv8-m对图像进行手部检测,然后扩大检测框区域,并对该区域使用YOLOv8-s-pose使用关键点检测,实现实时的手部关键点检测。

        实现效果:


1.扩大检测框区域

        参考:基于YOLOv8-pose的手部关键点检测(2)- 模型训练、结果分析和超参数优化

        需要将手部区域放大:2/3 放大框的函数如下,scale=2/3:

def expand_bbox(xyxy, img_width, img_height, scale=0.1):# 计算宽度和高度,和中心点width = xyxy[2] - xyxy[0]height = xyxy[3] - xyxy[1]center_x = xyxy[0] + width / 2center_y = xyxy[1] + height / 2# 增加10%的宽度和高度new_width = width * (1 + scale)new_height = height * (1 + scale)# 计算新的边界框坐标,并确保新的边界框坐标不超过图片的边界new_x1 = max(2, int(center_x - new_width / 2))new_y1 = max(2, int(center_y - new_height / 2))new_x2 = min(int(img_width) - 2, int(center_x + new_width / 2))new_y2 = min(int(img_height), int(center_y + new_height / 2))return new_x1, new_y1, new_x2, new_y2

2.先检测手部,后检测手部关键点

        关键代码如下,下面结果开始展示容错,因为我把scale错写成了1/3

    frame, _ = resize_image(frame, 720)img_height, img_width, _ = frame.shapeimg = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)hand_all = det_shou(img)[0]for i, bbox in enumerate(hand_all.boxes.xyxy):x1, y1, x2, y2 = list(map(int, bbox))x11, y11, x22, y22 = expand_bbox(bbox, img_width, img_height, scale=1 / 3)conf = hand_all.boxes.conf[i]cls = hand_all.boxes.cls[i]label = f'{hand_all.names[int(cls)]} {float(conf):.2f}'# 绘制边界框和标签cv2.rectangle(frame, (x11, y11), (x22, y22), (0, 255, 0), 2)cv2.putText(frame, label, (x11, y11 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)image_shou = frame[y11:y22, x11:x22]shou_all = pose_shou(image_shou)[0].cpu().numpy()if len(shou_all.boxes.conf) > 0:kpts = [list(map(int, shou_all.keypoints.xy[0].reshape(1, 42)[0].tolist()))]image_shou = draw_bboxes_and_keypoints(image_shou, shou_all.boxes.xyxy, shou_all.boxes.conf,shou_all.boxes.cls,kpts=kpts, cat_order=_connections, line_color=line_color)frame[y11:y22, x11:x22] = image_shoucv2.imshow('Frame', frame)

        以下绿色框表示:YOLOv8的bbox扩大得到的检测框;

        以下红色框表示:YOLOv8-pose的bbox。


3.正面视角检测

        不遮挡,基本都能检测正确。


4.侧面视角检测

        开了二倍速,也可以完美检测,不过在手交叉时候略有检测错误。


5.摄像头视角检测

        慢速下关键点都可以识别准确。


6.遮挡视角检测

        存在遮挡情况下,检测准确度骤降。一方面,一只手被手部检测后,会得到两个检测框(数据集里有两只手交叉的情况,会有两个框重叠)。另一方面,手部关键点数据集没有点的分类,被遮挡点当做不可见点处理。这样无法预测不可见的位置。


7.结论

        非遮挡情况,不存在手部相交,基本都可以识别正确。存在手部相交时,准确率会骤降。

        遮挡情况,可能导致模型几乎不可用,需要加入前处理和后处理。合并最接近相邻手部检测框(即使是两只手也当做一只手来做)。如果一个检测框检测出多只手,只取置信度最大的那只。增加局部区域物品检测,判断是否存在遮挡。

相关文章:

基于YOLOv8-pose的手部关键点检测(3)- 实现实时手部关键点检测

目录 前言 1.扩大检测框区域 2.先检测手部,后检测手部关键点 3.正面视角检测 4.侧面视角检测 5.摄像头视角检测 6.遮挡视角检测 7.结论 前言 使用YOLOv8-m对图像进行手部检测,然后扩大检测框区域,并对该区域使用YOLOv8-s-pose使用关键…...

kylin系统永久关闭iptables

1 关闭iptables, 并且相关规则写入文件firewall.rules sudo iptables-save > /root/firewall.rules iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P …...

写一个githubDemo

1.List组件 <template><div class"container"><!-- 展示用户列表 --><div class"row"><divv-show"info.users.length"v-for"(item, index) in info.users":key"item.id"><div class"…...

java入门-成员内部类和静态内部类的访问

&#xff08;一&#xff09;成员内部类 package InnerClass;import javax.print.attribute.standard.MediaSize;public class Outer {//2外部类中的成员private int age99;public static String a;public class Inner{//普通的成员内部类//1.1成员变量public String name;priva…...

ansible【自动化配置】(thirty day)

回顾 1、mysql和python &#xff08;1&#xff09;不需要执行mysql_ssl_rsa_setup &#xff08;2&#xff09;Change_master_to.不需要get public key 2、可以使用pymysql非交互的管理mysql &#xff08;1&#xff09;connpymysql.connect(host,user,password,database,prot) …...

GitOps Tekton+ArgoCD

GitOps 提供了一种基于 Git 的操作理念&#xff0c;而 Tekton 和 ArgoCD 分别作为 CI/CD 工具&#xff0c;共同实现了这一理念在 Kubernetes 集群中的应用 k8s只是jenkins 流水线中的一环&#xff0c;但是在tekton中&#xff0c;k8s是基础设施 工作流程&#xff1a; 代码提交…...

uniapp用户列表页面渲染、增删改查逻辑

<template><view class="container">...

力扣高频SQL 50题(基础版)第四十七题之1321.餐馆营业额变化增长

力扣高频SQL 50题&#xff08;基础版&#xff09;第四十七题 1321.餐馆营业额变化增长 题目说明 表: Customer ---------------------- | Column Name | Type | ---------------------- | customer_id | int | | name | varchar | | visited_on | date | | amount | …...

django中的MESSAGE组件

文章目录 message组件1 使用配置2 设置值3 读取值4 源码分析 message组件 1 使用配置 INSTALLED_APPS [# django.contrib.admin,# django.contrib.auth,# django.contrib.contenttypes,# django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,"…...

【JavaSE】解读Java中的toString方法

前言&#xff1a; 在Java中&#xff0c;toString方法来自java.lang.Object 类&#xff0c;然后所有对象都继承该Object 类。默认情况下&#xff0c;它的作用是返回对象的字符串表示形式。在实际开发中&#xff0c;重写 toString() 方法可以帮助我们以更易读的形式输出对象信息&…...

软件工程的核心原则:KISS, DRY, SOLID, YAGNI

软件工程的核心原则&#xff1a;KISS, DRY, SOLID, YAGNI — 深入解析与实践指南 引言 在软件开发的广阔领域中&#xff0c;原则和实践是构建高质量、可维护系统的基石。本文将深入探讨四个核心原则&#xff1a;KISS&#xff08;保持简单&#xff0c;愚蠢&#xff09;、DRY&a…...

Android 高通7.1系开机动画自动跟随系统方向旋转

本篇博客是记录自己解决开机动画与系统方向不一致方案代码&#xff0c;思路&#xff1a;在系统参数根目录自定义persist.sys.hwrotationxrd0来作为动画方向&#xff0c;当修改系统方向时同时修改这个参数&#xff0c;当系统启动加载动画时在根据这个来旋转动画方式以保证动画方…...

Sentinel入门与进阶:微服务流量控制的最佳实践 ( 三 )

5.配置持久化 目前的sentinel&#xff0c;无法满足我们生产环境的需求&#xff0c;因为一旦sentinel-dashboard发生重启&#xff0c;限流规则也会随之丢失。 sentinel规则的持久化: Sentinel自身就支持了多种不同的数据源来持久化规则配置&#xff0c;比如文件配置&#xff0…...

2021年上半年网络工程师考试上午真题

2021年上半年网络工程师考试上午真题 网络工程师历年真题含答案与解析 第 1 题 以下关于RISC和CISC计算机的叙述中&#xff0c;正确的是&#xff08; &#xff09;。 (A) RISC不采用流水线技术&#xff0c;CISC采用流水线技术(B) RISC使用复杂的指令&#xff0c;CISC使用简…...

SQL触发器的级联魔力:数据完整性的守护者

标题&#xff1a;SQL触发器的级联魔力&#xff1a;数据完整性的守护者 在SQL的丰富世界中&#xff0c;触发器&#xff08;Trigger&#xff09;是一种特殊的存储过程&#xff0c;它能够自动执行响应数据库中的数据修改事件。而级联操作&#xff08;Cascade&#xff09;则是触发…...

ARCGIS PRO 要素标注背景色透明度的设置

使用ArcGIS Pro 设置标注背景色的透明度 一、点击标注属性 二、点击符号、注释 三、下拉框选择背景 四、背景符号 五、点击颜色 六、编辑颜色 七、应用...

探讨MySQL中 “约束“ 下的查询

目录&#xff1a; 一. 数据库约束 二. 表的设计 三. 聚合查询 四.联合查询 一. 数据库约束&#xff1a; 1.约束类型汇总&#xff1a; 约束类型 说明 NULL约束使用NOT NULL指定列不为 空UNIQUE唯一约束指定列为唯一的、不重复的DEFAULT默认值约 …...

Nuxt3【布局】layouts 详解

Nuxt 内置布局框架&#xff0c;用法如下&#xff1a; 修改 app.vue <template><NuxtLayout><NuxtPage /></NuxtLayout> </template>NuxtLayout 为 Nuxt 的内置组件&#xff0c;默认加载 layouts/default.vue &#xff0c;若页面中指定了布局&…...

获取数据源(多种方式爬虫介绍)

获取不同类型的数据源&#xff1a; 对于看上的网站如何获取其信息&#xff1a; 1.分析原网站是如何获取到这些数据的&#xff1f;哪个接口&#xff1f;哪些参数&#xff1f; 2.用程序去调用接口&#xff08;python/java都可以&#xff09; 3.处理一些数据&#xff0c;优化数…...

Linux下FTP服务器搭建配置:vsftpd的安装与配置实验

文章目录 vsftpd的安装与配置指南1. vsftpd的安装2. vsftpd配置详解3. 匿名访问测试4. 本地用户访问FTP的配置5. 修改匿名用户和本地用户的默认根目录6. 黑名单与白名单的使用7. 使用Windows文件资源管理器登录8. 拓展FTP的使用场景9. 注意事项 vsftpd的安装与配置指南 本文详…...

translategemma-27b-it入门必看:Gemma3轻量化设计如何平衡精度与推理速度

translategemma-27b-it入门必看&#xff1a;Gemma3轻量化设计如何平衡精度与推理速度 本文深度解析基于Gemma 3构建的TranslateGemma-27B-IT模型&#xff0c;通过实际部署演示展示其如何在保持翻译精度的同时实现高效推理&#xff0c;为开发者提供完整的入门指南。 1. 认识Tran…...

计算机网络 之 【网络套接字编程】(固定宽度整数类型、socket常见API、netstat)

目录 一.固定宽度整数类型&#xff08;C11引入&#xff09; 二、socket 常见API socket bind IP地址绑定类型 TCP 编程模型流程图 listen accept connect UDP编程模型流程图 recvfrom 函数 sendto 函数 常用 flags 选项 常用错误码 三、netstat Linux/Unix 选项…...

抖音音频提取工具 v1.0 - 快速提取抖音视频音频

抖音音频提取工具 v1.0 是可快速提取抖音短视频音频并保存本地的实用工具&#xff0c;依托 WebView2 与 FFmpeg 技术实现&#xff0c;操作简单易上手&#xff0c;能满足车机播放等个人娱乐音频使用需求&#xff0c;工具仅支持个人娱乐使用。抖音音频提取工具 v1.0 抖音短视频音…...

Phi-4-Reasoning-Vision入门指南:图文推理结果JSON结构与API对接说明

Phi-4-Reasoning-Vision入门指南&#xff1a;图文推理结果JSON结构与API对接说明 1. 工具概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具&#xff0c;专为双NVIDIA RTX 4090显卡环境优化。该工具严格遵循官方SYSTEM …...

生物认证锁:用虹膜加密核心模块——软件测试从业者的专业指南

在数字化转型浪潮中&#xff0c;生物认证技术正重塑安全防护体系&#xff0c;其中虹膜识别凭借其超高精度和防伪特性&#xff0c;成为加密核心模块&#xff08;如支付系统、数据库访问控制或敏感API&#xff09;的首选方案。作为软件测试从业者&#xff0c;您肩负着验证系统鲁棒…...

别再乱填了!手把手教你配置Keil的IROM1和IRAM1,让STM32程序跑得更稳

深度解析Keil内存配置&#xff1a;从原理到实战的STM32开发指南 当你第一次在Keil MDK的"Target"选项卡中看到IROM1和IRAM1的配置项时&#xff0c;是否感到困惑&#xff1f;这些看似简单的地址和大小设置&#xff0c;实际上关系到整个嵌入式系统的稳定运行。许多开发…...

手把手教你用Google Cloud VPC流量监控:快速定位高费用虚拟机

谷歌云VPC流量监控实战&#xff1a;精准定位高成本虚拟机的5种方法 当凌晨三点的告警邮件突然弹出"本月云服务账单已超预算30%"时&#xff0c;作为运维负责人的你首先会检查哪个环节&#xff1f;根据2023年FinOps基金会调查报告&#xff0c;意外流量费用已成为云成本…...

Nemo文件管理器终极指南:Cinnamon桌面环境下的高效文件管理神器

Nemo文件管理器终极指南&#xff1a;Cinnamon桌面环境下的高效文件管理神器 【免费下载链接】nemo File browser for Cinnamon 项目地址: https://gitcode.com/gh_mirrors/ne/nemo Nemo是Cinnamon桌面环境的官方文件管理器&#xff0c;作为一个免费开源的软件项目&#…...

MCP3202 12位SPI ADC驱动开发与嵌入式工程实践

1. MCP3202 12位串行ADC嵌入式驱动深度解析与工程实践1.1 芯片特性与系统定位MCP3202 是 Microchip 推出的低功耗、逐次逼近型&#xff08;SAR&#xff09;12位模数转换器&#xff0c;专为嵌入式系统中高精度模拟信号采集场景设计。其核心电气特性如下&#xff1a;参数规格工程…...

LFM2.5-1.2B-Thinking-GGUF实操手册:自定义system prompt提升领域适配性

LFM2.5-1.2B-Thinking-GGUF实操手册&#xff1a;自定义system prompt提升领域适配性 1. 模型简介与核心优势 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型&#xff0c;专为低资源环境优化设计。该模型采用GGUF格式和llama.cpp运行时&#xff0c;在保持高性…...