我的人体姿态估计学习路线

Drawing 2023-04-13 23.28.32.excalidraw

本文总结自己目前对人体姿态估计的认识,和学习过程

什么是人体姿态检测?

  • 在人体关节连接的所有姿势空间中搜索某个特定姿势,本质为关节点的定位
  • 点之间形成的连接必须很重要,这意味着并非所有点都可以形成一对。从一开始,HPE 的目标就是形成类似骨骼的人体表示,然后针对特定任务的应用对其进行进一步处理

人体姿态检测的方法 ?

  • 从上到下 (二阶段) :主要包含两个部分,目标检测和单人人体骨骼关键点检测,对于目标检测算法,这里不再进行描述,而对于关键点检测算法,首先需要注意的是关键点局部信息的区分性很弱,即背景中很容易会出现同样的局部区域造成混淆,所以需要考虑较大的感受野区域;其次人体不同关键点的检测的难易程度是不一样的,对于腰部、腿部这类关键点的检测要明显难于头部附近关键点的检测,所以不同的关键点可能需要区别对待;最后自上而下的人体关键点定位依赖于检测算法的提出的 Proposals,会出现检测不准和重复检测等现象。如:CPM、CPN、RMPE
  • 从下到上 (单阶段) :主要包含两个部分,关键点检测和关键点聚类,其中关键点检测和单人的关键点检测方法上是差不多的,区别在于这里的关键点检测需要将图片中所有类别的所有关键点全部检测出来,然后对这些关键点进行聚类处理,将不同人的不同关键点连接在一块,从而聚类产生不同的个体。如:PAFs

人体姿态检测的评价标准PCK?

  • 预测关键点与 GT 关键点的归一化距离,如果小于某个阈值,该关键点预测正确,否则失败,PCK 等于预测正确的比例,这个值和阈值有关,有 PCK@0.2 、 PCKh@0.5 ,PCK 用于 2D 和 3D ,值越高越好
  • PCK 值是针对一个人的关键点来说的,也就说不存在预测结果多于 gt 的问题,或者说这个问题在计算 PCK 前已经解决,计算多人的 PCK 值是所有人 PCK 值的平均
  • 1)计算某个关键点的的 PCK 值:即以下公式,其中 i 表示 id=i 的关键点,k 表示第 k 个阈值 TkT^k ,p 表示第 p 个行人,dpid_{pi} 表示第 p 个人的 id=1 的预测关键点与 GT 关键点之间的欧式距离,dpdefd_p^{def} 是第 p 个人的尺度因子,Tk[0:0.001:0.1]T_k \in [0:0.001:0.1] 表示人工设定的阈值

    PCKik=pδ(dpidpdefTk)p1PCK_i^k=\dfrac{\sum_p\delta(\frac{d_{pi}}{d_p^{def}}\leq T_k)}{\sum_p1}

  • 2)计算 PCK 值:所有人所有关键点的 PCK 值的平均是模型的 PCK 值

    PCKmeank=piδ(dpidpdefTk)pi1PCK^k_{mean}=\dfrac{\sum_p\sum_i\delta(\frac{d_{pi}}{d_p^{def}}\leq T_k)}{\sum_p\sum_i1}

  • 不同的数据集 dpdefd_p^{def} 计算方法不同,MPII 中是以头部长度(头部矩形框的左上点与右下点的欧式距离)作为归一化参考,即 PCKh

人体姿态检测的评价标准Oks?

  • PCK 仅通过归一化的欧式距离就决定关键点的预测准确度,OKs 在此基础上,加入关键点的标注难易偏差。上图是两个关键点的 OKS 值,
  • 以下公式是 OKs 指标,其中 p 表示第 p 个行人,pip^i 表示第 p 个行人的关键点 i,dpid_{pi} 是第 p 个行人的关键点 i 的预测位置与 GT 位置的欧式距离,vpi=1vpi=2v_{p^i}=1、v_{p^i}=2 表示关键点无遮挡且标注、有遮挡且标注,SpS_p 表示第 p 个行人的尺度因子,其值为行人检测框 (w, h)面积平方根 Sp=whS_p=\sqrt{wh}σi\sigma_i 表示类型为 i 的关键点归一化因子,

    OKSp=iexp{dpi2/2Sp2σi2}δ(vpi>0)iδ(vpi>0)OKS_p=\dfrac{\sum_i exp\{-d_{pi}^2/2S_p^2\sigma_i^2\}\delta(v_{pi}>0)}{\sum_i\delta(v_{pi}>0)}

  • σi\sigma_i 这个因子是通过对所有的样本的 GT 关键点由人工标注与真实值存在的标准差, σ\sigma  越大表示此类型的关键点越难标注。coco 数据集统计出17类关键点的归一化因子:{鼻子:0.026,眼睛:0.025,耳朵:0.035,肩膀:0.079,手肘:0.072,手腕:0.062,臀部:0.107,膝盖:0.087,脚踝:0.089}

人体姿态检测的评价标准mAp?

  • OKS 在物体检测中扮演的角色与 IoU 的作用相同。它是根据预测点和由人的比例对地面实况点之间的距离计算得出的。论文常出现以下指标 AP50(OKS = 0.50 的 AP)、AP(OKS 在[0.5:0.05:0.95]10 个位置的 AP 值)
  • 单人姿态估计 AP: 计算出 groundtruth 与检测得到的关键点的相似度oks为一个标量,然后人为的给定一个阈值T,然后可以通过所有图片的oks计算AP

    AP=pδ(oksp>T)p1AP=\dfrac{\sum_p\delta(oks_p>T)}{\sum_p1}

  • 多人姿态估计 AP: 1)如果采用的检测方法是自顶向下,先把所有的人找出来再检测关键点,那么其AP计算方法如同单人姿态估计 AP;2)如果采用的检测方法是自底向上,先把所有的关键点找出来然后再组成人。假设一张图片中有 M 个人,预测出 N 个人,由于不知道预测出的N个人与 groundtruth 中的M个人的一一对应关系,因此需要计算 groundtruth 中每一个人与预测的N个人的oks,那么可以获得一个大小为_M_×_N_的矩阵,矩阵的每一行为 groundtruth 中的一个人与预测结果的N个人的oks,然后找出每一行中oks最大的值作为当前GToks。最后每一个GT行人都有一个标量oks,然后人为的给定一个阈值T,然后可以通过所有图片中的所有行人计算AP

    AP=mpδ(oksp>T)mp1AP=\dfrac{\sum_m\sum_p\delta(oks_p>T)}{\sum_m\sum_p1}

学习路线

Drawing 2023-04-13 23.28.32.excalidraw