AI实战训练营&人体关键点检测与MMPose

一 什么是姿态估计

从给定的图像中识别人脸、收不、身体等关键点
输入:图像I
输出:所有关键点的像素坐标(x1,y1),(x2,y2)…
姿态估计是一种计算机视觉技术,可以从图像或视频中检测人体的形象,并确定人体的各个部位或关节的位置。姿态估计可以分为2D和3D,单人和多人,自上而下和自下而上等不同的类型。姿态估计可以用于行为识别、动作捕捉、虚拟现实、增强现实等应用场景。
请添加图片描述
通常是一些关节的位置

3D姿态估计

预测人体关键点在三维空间中的坐标,可以在三维空间还原人体的姿态
请添加图片描述

下游任务中可以做行为识别|CG动画|人机交互|动物行为分析

PoseC3D:基于人体姿态识别行为动作
请添加图片描述
CG\动画
请添加图片描述
动物行为分析
请添加图片描述

二 2D姿态估计

2D人体姿态估计:在图像上定位人体关键点(通常为人体主要关节)的坐标
请添加图片描述
请添加图片描述

基本思路:基于回归|基于热力图

基于回归
将关键点检测问题建模成一个回归问题,让模型直接回归关键点的坐标
例如:是用卷机网络,以图像作为输入,最后一层通过线性回归预测关键点的坐标
请添加图片描述
主要存在的问题:深度模型直接回归坐标有些困难,精度不是最优。

基于热力图
并不直接回归关键点的坐标,而是预测关键点位于每个位置的概率。
请添加图片描述

  • 热力图可以基于原始坐标点坐标生成,作为训练网络的监督信息
  • 网络预测的热力图也可以通过求极大值等方法得到关键点的坐标
  • 模型预测热力图比直接回归坐标相对容易,模型精度相对更高,因此主流算法更多基于热力图,但预测热力图的计算消耗大于直接回归

从数据标注生成热力图

请添加图片描述
姿态估计中,从数据标注到生成热力图的做法公式是这样的:

  • 数据标注:对于每个人体关键点,给定其二维坐标 (x_i,y_i) ,其中 i\in\ {1,2,…,k\} ,k 是关键点的个数。
  • 生成热力图:对于每个关键点,生成一个与原始图像大小相同的热力图,热力图上的像素值按照以下公式计算:

h e a t m a p ( x , y ) = e − f r a c ( x − m u x ) 2 + ( y − m u y ) 2 2 s i g m a 2 heatmap (x,y)=e^ {-\\frac { { (x-\\mu_x)}^2+ { (y-\\mu_y)}^2} {2\\sigma^2}} heatmap(x,y)=efrac(xmux)2+(ymuy)22sigma2

其中, (\mu_x,\mu_y) 是关键点的坐标, \sigma 是高斯核的大小,一般是一个超参数。这样,热力图上的最大值处就对应了关键点的位置³¹。

使用热力图训练模型

请添加图片描述
问题:如何从第j个关键点的热力图中还原出关键点的位置

  • 朴素方法:求热力图最大位置 如果多个点怎么办?
    请添加图片描述
    更稳定的方法: 取数学期望 这样会更加鲁棒
    请添加图片描述

2.1 基于回归|基于热力图 自顶向下方法

  • 首先 是用目标检测检测出每个人体
  • 然后 基于单人图像估计每个人的姿态
    请添加图片描述
  • 整体精度受限于检测器的精度
  • 速度和计算量会正比于人数
  • 一些新工作(如SPM)会考虑将两个阶段聚合成一个阶段
    通常来说 top-down 具有更高的精度 (如果两个人拥抱?)

DeepPose(2014)

以分类网络为基础,将最后一层分类改为回归,一次性预测所有坐标
请添加图片描述
通过最小化平方误差训练网络
请添加图片描述
以全身图像输入,预测所有坐标点,位置精度较底
以每个预测点为中心,剪裁局部图像送入第二级网络,再次回归该点坐标,提升精度。可及联多级

请添加图片描述
优势:

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

Residual Log-likelihood Estimation(RLE)(2021)

核心思路:对关键点的位置进行更准确的建模,从而提高位置预测的精度
经典的回归范式:模型预测关键点位置,与其真值计算误差作为损失,背后隐含了高斯分布的假设,但不一定符合数据的实际分布。
RLE范式:显示建模关键点的概率分布,通过最大似然拟合最优的位置分布
请添加图片描述

RLE的思路是将简单的高斯分布替换为一个可学习的、表达能力更强的分布,更好拟合关键点位置的实际分布。请添加图片描述
RLE模型是一种用于人体姿态估计的回归方法,它的全称是残差对数似然估计(Residual Log-likelihood Estimation)¹²。它的主要思想是通过flow方法,估计出模型输出关节的分布概率密度,并利用最大似然估计来构建动态的损失函数,从而提高回归的精度和效率¹²。

RLE模型的做法公式如下:

  • 数据标注:对于每个人体关键点,给定其二维坐标 (x_i,y_i) ,其中 i\in\ {1,2,…,k\} ,k 是关键点的个数。
  • 生成热力图:对于每个关键点,生成一个与原始图像大小相同的热力图,热力图上的像素值按照以下公式计算:

h e a t m a p ( x , y ) = e − f r a c ( x − m u x ) 2 + ( y − m u y ) 2 2 s i g m a 2 heatmap (x,y)=e^ {-\\frac { { (x-\\mu_x)}^2+ { (y-\\mu_y)}^2} {2\\sigma^2}} heatmap(x,y)=efrac(xmux)2+(ymuy)22sigma2

其中, (\mu_x,\mu_y) 是关键点的坐标, \sigma 是高斯核的大小,一般是一个超参数。这样,热力图上的最大值处就对应了关键点的位置³¹。

  • 估计概率密度分布:假设关键点 y 的真实分布为 \epsilon (y) ,而我们只能观测到带有噪声的标注 y_ {annotation} ,那么我们可以用一个简单分布 z\sim N (0,1) 作为输入,通过一个神经网络 f_ {\theta} 来映射到目标分布 \epsilon (y) ,即 \epsilon (y)=f_ {\theta} (z) 。这样,我们就可以用最大似然估计来优化神经网络的参数 \theta ,使得 \epsilon (y) 和 y_ {annotation} 尽可能接近¹²。具体地,我们可以最大化以下对数似然函数:

L R L E ( t h e t a ) = E y a n n o t a t i o n s i m D [ l o g p t h e t a ( y a n n o t a t i o n ) ] L_ {RLE} (\\theta)=E_ {y_ {annotation}\\sim D} [log p_ {\\theta} (y_ {annotation})] LRLE(theta)=EyannotationsimD[logptheta(yannotation)]

其中, p_ {\theta} (y_ {annotation}) 是由 f_ {\theta} 生成的目标分布 \epsilon (y) 在 y_ {annotation} 处的概率密度值,可以由以下公式计算:

p t h e t a ( y a n n o t a t i o n ) = p z ( f t h e t a − 1 ( y a n n o t a t i o n ) ) ∣ d e t J f t h e t a − 1 ∣ p_ {\\theta} (y_ {annotation})=p_z (f_ {\\theta}^{-1} (y_ {annotation}))|det J_{f_ {\\theta}}^{-1}| ptheta(yannotation)=pz(ftheta1(yannotation))detJftheta1

其中, p_z 是简单分布 z 的概率密度函数, J_{f_ {\theta}}^{-1} 是 f_ {\theta} 的逆映射的雅可比矩阵¹²。

  • 构建损失函数:由于我们已经估计出了目标分布 \epsilon (y) ,我们可以利用它来构建一个动态的损失函数,来指导模型回归关键点 y 。具体地,我们可以定义以下损失函数:

L = ∣ ∣ y − f p h i ( x ) ∣ ∣ p t h e t a = E p t h e t a [ ∣ ∣ y − f p h i ( x ) ∣ ∣ ] L=||y-f_ {\\phi} (x)||_{p_ {\\theta}}=E_{p_ {\\theta}} [||y-f_ {\\phi} (x)||] L=∣∣yfphi(x)ptheta=Eptheta[∣∣yfphi(x)∣∣]

其中, f_ {\phi} 是一个回归网络,用于从图像 x 预测关键点 y , \phi 是其参数。 p_ {\theta} 是我们之前估计出的目标分布 \epsilon (y) 。这个损失函数相当于在每个关键点处加权了回归误差,使得模型更关注那些不确定性高的区域¹²。

Hourglass(2016)

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

  • 局部信息 - 检测不同身体组建
  • 全局信息 - 建模组建之间的关系,在大尺度变形、遮挡时可以准确推断出姿态
  • 请添加图片描述

2.2 自底向上方法

  • 是用关键点模型检测所有人体关键点
  • 基于位置关系或其他辅助信息将关键点组合成不同的人
    请添加图片描述
  • 推理速度与人数无关 合成的时候和人有关

2.3 单阶段方法

请添加图片描述

SPM(2019)

SPM首次提出了人体姿态估计的单阶段解决方法,在取得速度优势的同时,也取得了不逊色于二阶段方法的检测率,且该方法可以直接从2D扩展到3D
请添加图片描述

2.4 基于Transformer的方法

TokenPose(2021)

请添加图片描述

三 3D姿态估计

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

3D的坐标哪里来?

思路1:直接预测

直接基于2D图像回归3D坐标,但2D图像不包含深度,这是一个病态问题,实际上隐式借助语义特征或人体的刚性实现了3D姿态的推理
请添加图片描述

思路2:利用视频信息

请添加图片描述

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

Percentage of Correct Parts(pcp)

PCP以肢体的检出率作为评价指标
考虑每个人的左右大臂、小臂、大腿、小腿共计4X2个肢体
请添加图片描述

Percentage of Detected Joints(PDJ)

PDJ作为关节点的位置精度作为评价指标
请添加图片描述

五 人体参数化模型

将人体表面分为24个部分,并将每个部分参数化至同样大小(256X256)的UV平面
请添加图片描述

网络结构 MaskRcnn+DenseReg = DensePose-RCNN

请添加图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值