OpenMMLab-AI实战营第二期——2.人体关键点检测与MMPose

news/2024/11/16 12:35:18/

文章目录

  • 1. 人体姿态估计的介绍和应用
  • 2-1. 2D姿态估计概述
    • 2.1 任务描述
    • 2.2 基于回归
    • 2.3 基于热力图
      • 2.3.1 从数据标注生成热力图(高斯函数)
      • 2.3.2 使用热力图训练模型
      • 2.3.3 从热力图还原关键点
    • 2.4 自顶向下
    • 2.5 自底向上
    • 2.6 单阶段方法
  • 2-2. 2D姿态估计详细说明
    • 2.1 基于回归的自顶向下方法
      • 2.1.1 经典方法
      • 2.1.2 基于最大似然估计的改进
  • 3. 3D姿态估计
  • 4. 人体姿态估计的评估方法
  • 5. DensePose
  • 6. 人体参数化模型

视频链接:B站-人体关键点检测与MMPose

1. 人体姿态估计的介绍和应用

在这里插入图片描述
关键点提取,属于模式识别

在这里插入图片描述
人体姿态估计的下游任务:行为识别(比如:拥抱。。)

在这里插入图片描述
下游任务:CG和动画,这个是最常见的应用

在这里插入图片描述
下游任务:人机交互(手势识别,依据收拾做出不同的响应,比如:HoloLens会对五指手势(3D)做出不同的反应)

2-1. 2D姿态估计概述

包括:

  1. 自顶向下方法
  2. 自底向上方法
  3. 单阶段方法
  4. 基于Transformer的方法

2.1 任务描述

在这里插入图片描述
2D人体姿态估计的任务:

  • 输入:一张包含人体的图像
  • 输出:人体关键点(主要关节)的坐标(2D的)

注意,这里的输出是固定对应(预定义的)18个关节的坐标,就是要找这18个位置的坐标

2.2 基于回归

在这里插入图片描述
使用深度学习的模型直接回归坐标有些困难,精度不是最优(效果不好

2.3 基于热力图

在这里插入图片描述
另一种思路是:不直接回归关键点的坐标,而是预测关键点位于每个位置的概率。

  • 比如肩的热力图(越靠近肩膀的预定义的关键点,概率越高,颜色逐渐从黄色变成红色)
  • 18个关键点,对应18个热力图

在这里插入图片描述
基于热力图天然符合神经网络的卷积算子(对每个像素都进行计算,得到每个像素的概率)

2.3.1 从数据标注生成热力图(高斯函数)

在这里插入图片描述
如果想要使用基于热力图的方式,那么首先要根据已有的标注数据生成热力图。

  • 预定义的关键点附近区域的概率其实符合这一事实:
    • 越靠近预定义的关键点,概率越高,如上图,颜色逐渐从黄色变成红色
    • 假设上面这个热力图区域是个圆形,那么任意一个直径作为 x x x轴(距离预定义关键点的距离作为自变量),是关键点的概率作为 y y y轴(因变量),则可以用高斯函数来描述 x x x y y y的关系
  • 所以这里是假设关键点区域的热力图符合高斯分布,来生成热力图(概率图),来进行训练。
  • 所以这里说热力图的尺寸,即作为控制高斯函数图像钟的宽度的 σ \sigma σ参数,也就是控制热力图区域大小

复习一下高斯函数(红色线代表标准正态分布):
在这里插入图片描述
在这里插入图片描述
上图是用期望值及方差作为参数表示的高斯曲线


高斯函数是正态分布的密度函数,下图的红色是标准正态分布
在这里插入图片描述
正态分布的数学期望值或期望值 μ μ μ等于位置参数,决定了分布的位置;其方差 σ 2 \sigma^2 σ2的开平方或标准差 σ \sigma σ 等于尺度参数,决定了分布的幅度。

可以直接看:

  • 中文wiki百科-高斯函数
  • 中文wiki百科-正态分布
  • 打不开上面这个看下面转载的这个,旧了点,但是意思差不多:高斯分布(Gaussian distribution)/正态分布(Normal distribution)

2.3.2 使用热力图训练模型

在这里插入图片描述
将通过关键点标注生成的真值热力图,作为True label,与预测模型预测出来的热力图Predict label逐点比对(就是关键点附近那一小片区域的热力图),计算损失

在这里插入图片描述
所以基于热力图的方法关键就是中心点位置 ( x j , y j ) (x_j,y_j) (xj,yj)(训练目标,优化的参数)和区域大小 α \alpha α(可以是超参,也可以基于图像缩放得到,缩放系数也是超参)

  • 这里其实是一个2D的高斯函数, ( x j , y j ) (x_j,y_j) (xj,yj)其实就对应上面高斯函数图像的最高点
  • 即,真值热力图的构建函数需要满足:距离关键点越近,概率越大,所以高斯函数天然满足这个性质
  • 除此之外,其实只要是类似钟形都可以,下面这个抛物线函数,还有我随便造的一个绝对值函数,其实都满足这个条件(但是概率取值范围[0,1]需要进一步处理一下才行)
    在这里插入图片描述

2.3.3 从热力图还原关键点

在这里插入图片描述

  • 最直接的办法就是求最大概率(热力图最大值)对应的位置的坐标,
    • 按照生成真值热力图的方式来倒退,是很合理的方式
    • 但这是基于:预测的热力图符合高斯函数,这一假设下的推论
    • 实际上,可能预测的热力图形状不会那么规整,可能会有多个最大值,所以直接求1个最大值这种方式不够鲁棒

在这里插入图片描述
另一种从热力图还原关键点的方式就是:

  • 先对热力图的概率进行归一化(对概率用softmax,输出的还是概率),用归一化后的概率计算位置的期望
  • 期望就是平均值,在1D的高斯函数图像中,高斯函数的最高点,对应的 x x x值,确实是 x x x取值范围的均值。
  • 可能不一定能取到最高点,但是能取到"重心",这样利用了整个热力图的概率,就会比较鲁棒,相对于上面只看热力图的最大概率

这种计算方式还有很好的一个性质:

  • 可以进行端到端的训练,还原关键点的方式的公式,是可以求导的,所以能和整个训练过程串起来。
  • 比如,一开始训练的时候,网络初始化使用的是关键点随机数来生成初始预测热力图,第一轮训练完成后,得到生成的热力图,就可以得到一个矫正过的关键点,以此来作为第二轮使用的热力图的初始值,继续迭代。
  • 但是上面优化的时候只使用热力图的loss, 但是真实关键点和预测关键点也都可以拿到,关键点的loss其实也可以加上去。两种损失一起会更好吗??

2.4 自顶向下

在这里插入图片描述
上面讲的是单人的姿态估计(人体姿态估计),但是实际上会有多人姿态估计
最直观的一种方式(自顶向下):

  1. 先目标检测,得到每个人(检测器的精度需要保证)
  2. 再对每个人进行 单人姿态估计

模型串联的坏处,

  • 姿态估计结果会过分依赖人体目标检测的结果
  • 速度和计算量和画面中的人数成正比

2.5 自底向上

在这里插入图片描述
自底向上方法:先把关键点检测完,再去聚类其属于哪个人

优点:

  • 推理速度和画面中的人数无关
  • 关键点多,则检测速度肯定也会慢一些。但不会像自顶向下方法一样与人数成正比,人数越多的时候,自底向上比自顶向下方法快的越明显)
  • 聚类耗时肯定是和人数成正比的

2.6 单阶段方法

在这里插入图片描述

2-2. 2D姿态估计详细说明

2.1 基于回归的自顶向下方法

2.1.1 经典方法

在这里插入图片描述
以分类网络为基础,将最后一层分类改为回归,一次性预测所有J个关键点的坐标

  • 如果是人体姿态估计的话,就是18个关键点的坐标,在2D场景下,也就是要预测36个数字。。。(回归36个数字,可比分类36个类要难,目标检测里也有回归box四个坐标的方法
  • 原始论文是用AlexNet主干+回归头做的,主干(backbone)也可以换成ResNet等结构

在这里插入图片描述
网络结构不变的情况下,使用级联模型的方式,来提高精度。

  • 第一级,输入:全身图像
  • 第二级,输入:第一步预测点为中心的裁剪后的局部区域

类似医疗影像分割里的级联:

  • 第一级,输入:医疗影像
  • 第二级,输入:医疗影像+第一级得到的概率图

在这里插入图片描述
优势:

  1. 回归模型理论上可以达到无限精度,热力图方法的精度受限于特征图的空间分辨率(也不一定,加个期望上去有时候也可以突破这个限制)
  2. 回归模型不需要维持高分辨率特征图,计算更高效。相比之下,热力图方法的特征图的size不能低于热力图的size,所以热力图方法确实要计算和存储高分辨率特征图,计算成本(硬件要求)更高

劣势:

  • 图像到关键点坐标的映射是高度非线性的,导致直接回归坐标,比通过热力图(概率)得到坐标更难,同时回归方法的精度也低于热力图,因此DeepPose提出之后很长一段时间,2D关键点预测算法主要都是基于热力图的。

2.1.2 基于最大似然估计的改进

在这里插入图片描述
之前的基于回归方法的姿态估计,

  • 损失函数为:真实关键点位置 μ g \mu_g μg与模型预测关键点位置 μ ~ \tilde\mu μ~的误差作为损失
    • 这背后隐含了高斯分布的假设,即:预测点距离关键点越近,就越好,因此以关键点为圆心,相同半径圆周上的点作为预测点,其误差都是一样的。即:认为预测点分布在真实点形成的一个圆形里。
    • 但是实际上,人体的关节有不同的形状如下图(踝关节,红色是关键点,蓝色围成的区域就是分布,不是个圆形,不是只靠一个方向的距离就可以衡量误差的):
      在这里插入图片描述

另外,这篇文章创新点的部分,这个老师讲了基本等于没讲,论文也放的很少,有兴趣可能需要自己再进一步调研
在这里插入图片描述
论文就直接在MMPose里找了,这里Topdown Regression + Mobilenetv2 + Rle on Coco
在这里插入图片描述
论文arxiv链接:Human Pose Regression with Residual Log-likelihood Estimation
在这里插入图片描述

3. 3D姿态估计

4. 人体姿态估计的评估方法

5. DensePose

6. 人体参数化模型


http://www.ppmy.cn/news/173643.html

相关文章

z9mini android5,全球第一款单反相机手机Z9mini来袭

原标题:全球第一款单反相机手机Z9mini来袭 4月9日10:00,全球第一款堪称单反级别的手机努比亚Z9 mini来了,其有着专业独拍照效果,高性能的数据与影像处理能力为用户呈现高速流畅的娱乐感受,堪称手机中摄像机…

android专业相机,安卓专业相机软件CameraFV极致相机授权版

CameraFV是一款非常专业的 CameraFV CameraFV特色 所有的摄影参数是可调的,始终在手工:曝光补偿,ISO,测光模式,对焦模式,白平衡和程序模式。 数码单反像取景器显示:曝光时间,光圈&am…

python控制相机_用Python控制摄像头拍照并发邮件

概述 前言 工具 思路 安装及导入包 设置参数 实现拍照 构造邮件内容 发送邮件 判断网络连接 开机自启 后记 o1 前言 为什么会有写这个程序的想法呢? 最初的想法是写一个可以用电脑前置摄像头拍照的程序,在舍友使用你电脑的时候,不经意间获取到…

【机器视觉】——相机镜头篇

目录 一、相关概念 1、相机 2、镜头 二、相关参数 1、相机参数 1)芯片尺寸

单反基础知识

(一)摄影的“立意” 单反相机模仿人的视觉,你眼睛看到的东西,用单反相机准确还原成照片,传递给别人,使他们身临其境。(我的个见) 当我们端起相机准备拍照的时侯,问题就在…

计算机控制相机,Helicon Remote(电脑控制相机软件) V3.9.7 官方最新版

Helicon Remote是一款非常好用的电脑控制相机拍照工具,此软件可让您将佳能或尼康数码单反相机连接到计算机或移动设备,并自动进行DoF对焦包围,包围HDR曝光和定时拍摄,让你轻松拍个全家福! 【功能介绍】 1、系留捕捉图像…

其实很简单,单反相机轻松捕捉动态场景的方法

很多摄影师只有在拍摄体育活动或是快速移动的物体时,才会想到捕捉动感场面。在体育摄影中当然需要突出运动员的动作,但其实在任何题材的摄影中,强调动感元素都可能带来别样的趣味——即便动作很小、很慢甚至不易察觉。本篇中,我们…

android专业相机,安卓专业相机(FV 5)

提示:使用时请认真阅读帮助,调整设置后再使用,某些专业的可以不调节! 主要特点: ■所有的摄影参数是可调的,始终在手工:曝光补偿,ISO,测光模式,对焦模式&…