计算机视觉 | 人体关键点检测与MMPose

news2024/12/25 10:10:02

前言

人体姿态估计(Human Pose Estimation)是计算机视觉领域中的一个重要研究方向,也是计算机理解人类动作、行为必不可少的一步,人体姿态估计是指通过计算机算法在图像或视频中定位人体关键点,目前被广泛应用于动作检测、虚拟现实、人机交互、视频监控等诸多领域。

一、人体姿态估计的介绍

从给定图像中识别人脸、手部、身体等关键点

输入:图像

输出:所有关键点的像素坐标(x1,y1),(x2,y2)... (xj,yj),这里j为关键点的总数,取决于具体的关键点模型

二、2D姿态估计

任务描述:在图像上定位人体关键点(通常为人体主要关节点)的坐标

 多人姿态估计——自顶向下方法

  •  整体精度受限于检测器的精度
  • 速度和计算量会正比于人数
  • 一些新工作 (如SPM)考虑将两个阶段聚合成一个阶段

 多人姿态估计——自底向上方法

        优点:推理速度与人数无关 

多人姿态估计——单阶段方法

基于回顾的自顶向下方法:DeepPose、RLE

以分类网络为基础,将最后一层分类改为回归,一次性预测所有J个关键点的坐标:

P̂ =(x1,y1,x2,y2,...,xJ,yJ)=fθ(X) 

然后通过最小平方误差训练网络:

通过级联提升精度:

第一级以全身图像为输入,预测所有关键点坐标,位置精度较低;

以每个预测点为中心,裁剪局部图像送入第二级网络,再次回归该点坐标,提升精度;

可级联多级

​​​​​​​

优势:

回归模型理论上可以达到无限精度,热力图方法的精度受限于特征图的空间分辨率回归模型不需要维持高分辨率特征图,计算层面更高效,相比之下,热力图方法需要计算和存储高分辨率的热力图和特征图,计算成本更高
劣势:
图像到关键点坐标的映射高度非线性,导致回归坐标比回归热力图更难,回归方法的精度也弱于热力图方法,因此 DeepPose 提出之后的很长一段时间内,2D 关键点预测算法主要基于热力图

基于热力图的自顶向下方法:Hourglass、HRNet

设计思路:准确的姿态估计需要结合不同尺度的信息

  • 局部信息 ->检测不同身体组件
  • 全局信息 一建模组件之间的关系,在大尺度变形、遮挡时也可以准确推断出姿态
     

自底向上的方法

基本思路:基于图像同时预测关节位置和四肢走向,利用肢体走向辅助关键点的聚类:即,如果某两个关键点由某段肢体相连,则这两个关键点属于同一人

基于Transformer方法:PRTP、TokenPose 

 将视觉 token 和 关键点 token 一起送入 encoder 可以同时从图像中学习外观视觉表现和关键点间的约束关系
分类模型 ViT 也使用类似方法,将一个分类 token 和visual token 一起做自注意力。

 2D姿态估计小结

三、3D姿态估计

任务描述

通过给定的图像预测人体关键点在三维空间中的坐标,可以在三维空间中还原人体的姿态

输入: 图像
输出: 所有人的所有关键点的空间坐标。

直接预测:Coarsse-to-Fine、Simple Baseline 3D

利用视频信息:VideoPose3D​​​​​​​

利用多角度图像:VoxelPose

预测人体在三维空间中的坐标,可以在三维空间中还原人体的姿态

下游任务可以进行行为识别任务:基于人体姿态估计的人体行为识别

四、人体姿态估计的评估方法

  • PCP:肢体的检出率作
  • PDJ:关节点的位置精度
  • PCK:关键点的检测精度
  • OKS based mAP:以关键点相似度OKS作为评价指标计算mAP

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

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

相关文章

0x34RequestDownload请求下载

0x34RequestDownload 客户端请求协商从客户端到服务器的数据传输。 客户端使用requestDownload服务来启动从客户端到服务器的数据传输(下载) 。 服务器收到requestDownload请求消息后,服务器应在发送肯定响应消息之前采取所有必要的操作来接…

【手撕Spring源码】深度理解SpringMVC【上】

文章目录 DispatcherServletRequestMappingHandlerMappingRequestMappingHandlerAdapter自定义参数处理器自定义返回值处理器 参数解析器获取参数名对象绑定与类型转换底层第一套转换接口与实现底层第二套转换接口与实现高层转换接口与实现自定义转换器 ControllerAdvice 之 In…

NeRF与三维重建专栏(二)NeRF原文解读与体渲染物理模型

前言 上一章中我们大致介绍了三维重建的背景、NeRF应用于三维重建的难点以及相关数据集和评估指标,本章节将会详细介绍NeRF原文以及部分源码,以及体渲染的物理模型,来帮助读者更好理解NeRF;下一章我们将会结合colmap,讲…

PrivateGPT(如何部署及使用感受)

前言 最近在GitHub上出现了一个名为PrivateGPT的开源项目。该项目旨在为面临敏感数据、涉密信息或个人隐私问题的用户提供一种新的聊天工具。PrivateGPT具备完整的数据控制能力,使用户能够在本地环境中与强大的语言模型进行交互,无需上传数据到互联网或…

kotlin的for循环遍历

kotlin的for循环遍历 1、List val list listOf("A", "B", "C")for (item in list) {println(item)} A B C 2、List的in val list listOf("A", "B", "C")for (item: String in list) {println(item)} A B C 3、l…

【C/C++】基础知识之命名空间与作用域

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

【学习日记2023.6.2】之 管理端报表统计

文章目录 11. 管理端报表统计11.1 Apache ECharts11.1.1 介绍11.1.2 入门案例 11.2 营业额统计11.2.1 需求分析和设计11.2.2 代码开发Controller层Service层接口Service层实现类Mapper层 11.2.3 功能测试11.2.4 提交代码 11.3 用户统计11.3.1 需求分析和设计11.3.2 代码开发Con…

【QCA6174】QCA6174认证DFS跳转信道距离干扰信道太近,导致边带可以检测到信号问题分析及解决方案

WIFI DFS测试要求 Master设备需要测试的项目 4.6.2.1 Channel Availability Check ---信道可用性检查 定义其作为雷达脉冲检测机制,当雷达脉冲出现时所占用的信道需要能被设备检测到已经被占用。当相关信道未被占用时,这些信道被称为Avaliable Channel可用信道 4.6.2.2 In…

23Java面试专题 八股文面试全套真题(含大厂高频面试真题)多线程

文档说明 在文档中对所有的面试题都进行了 难易程度和 出现频率的等级说明 星数越多代表权重越大&#xff0c;最多五颗星&#xff08;☆☆☆☆☆&#xff09; 最少一颗星&#xff08;☆&#xff09; Java多线程相关面试题 1.线程的基础知识 1.1 线程和进程的区别&#xff1f; 难…

敷尔佳三闯IPO:去年狂赚8亿,广告宣传费近4亿

618大促已经开启&#xff0c;敷尔佳能否借“618”撑起“医美面膜第一股”&#xff1f; 近日&#xff0c;哈尔滨敷尔佳科技发展有限公司&#xff08;下称“敷尔佳”&#xff09;更新招股书&#xff0c;继续冲刺“医美面膜第一股”。 敷尔佳是一家主要从事专业皮肤护理产品的研…

MySQL中的业务数据该如何正确导入到Hive中 - Sqoop

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 目录 1. 使用Sqoop脚本将MySQL中的数据迁移到HDFS 2. 在Hive中建立与之对应的表 3. 将HDFS中的数据load到 Hive 数仓的ODS层的表中 1 . 使用Sqoop 将 MySQL中的数据导入到HDFS上 #! /bin/bashsqoo…

二进制安装Kubernetes(K8s)集群(基于containerd)---从零安装教程(带证书)

一、实验环境 1、安装说明 selinux iptables off 官方网站&#xff1a;https://kubernetes.io/zh-cn/docs/home 主机名IP系统版本安装服务master0110.10.10.21rhel7.5nginx、etcd、api-server、scheduler、controller-manager、kubelet、proxymaster0210.10.10.22rhel7.5nginx、…

Ubuntu安装ssh并开启服务

Ubuntu开启SSH服务 1、更新源列表 $ sudo apt-get update 2、安装 说明:安装时需要提供互联网或者提前下载安装包 $ sudo apt-get install openssh-server 3、启动 $ sudo service ssh start 查询服务启动状态: $ sudo ps -e | grep ssh 或者 $ sudo service ssh status …

【C++】模板(1)

文章目录 前言一、泛型编程二、模板2.1 函数模板2.2 函数模板实例化&#xff1a;2. 3 函数模板的原理&#xff1a;2.4 模板参数的匹配原则 三、类模板 前言 C中的模板(template)是一种强大的语言特性&#xff0c;它可以让程序员编写可以适用于不同数据类型的通用代码。通过使用…

Js中的堆(heap)和栈(stack)内存

目录 1、堆和栈的概念2、数据类型3、腾讯面试题4、阿里面试题 1、堆和栈的概念 在JS钟变量都存放在内存中&#xff0c;而内存给变量开辟了两块区域&#xff0c;分别为栈区域和堆区域栈(stack)&#xff1a;是栈内存的简称&#xff0c;栈是自动分配相对固定大小的内存空间&#…

长尾词挖掘,挖掘有效长尾关键词的3个方法

长尾关键词的特征是比较长&#xff0c;往往是2-3个词组成&#xff0c;甚至是短语&#xff0c;存在于内容页面&#xff0c;除了内容页的标题&#xff0c;还存在于内容中。 长尾关键词带来的客户&#xff0c;转化为网站产品客户的概率比目标关键词高很多&#xff0c;因此长尾…

Nginx服务

目录 一、Nginx概述 二、编译安装Nginx服务 1.安装Nginx服务 2. Nginx服务的基础命令 2.1开启nginx服务 2.2关闭nginx服务 2.3重载配置文件 2.4平滑升级 3.添加 Nginx 系统服务 3.1判断 Nginx 服务是否开启 3.2 方法一&#xff1a;将 nginx 服务添加到 chkconfig管…

《面试1v1》CMS垃圾回收期

我是 javapub&#xff0c;一名 Markdown 程序员从&#x1f468;‍&#x1f4bb;&#xff0c;八股文种子选手。 《面试1v1》 连载中… 面试官&#xff1a; 小伙子,CMS 垃圾收集器跟我讲讲? 候选人&#xff1a; CMS全称Concurrent Mark Sweep,是一种并发标记清除算法。它并发执…

Unity3d 有关Invoke和 Coroutine 的执行条件的误解

文章目录 认识错误的点正解测试代码执行截图 认识错误的点 之前一直以为在父物体未激活的状态下&#xff0c; invoke 和 Coroutine 都不会执行。这里面有一点误区。 正解 Coroutine 在父物体未激活状态下&#xff0c;确实不会执行。并且如果在父物体&#xff08;包括祖先节点…

新手小白运行Springboot+vue项目

有时候我们会经常复刻别人的项目代码&#xff0c;在第一次运行别人的代码都需要哪些步骤呢&#xff1f; 我在第一次运行的时候踩了很多坑&#xff0c;也看了很多博文&#xff0c;这篇文章将我认为帮助较大的内容进行了一个整合&#xff0c;希望可以为不了解前后端分离&#xff…