2.1.1 选取评价指标
一般是用PCK(Percentage of Correct Keypoints)/PCKh(Percentage of Keypoints of headsize)和OKS(Object Keypoint Similarity)+mAP(mean Average Precision),简单来说,前者就是计算估计值(prediction)和实际值(Groundtruth)点的距离再经过head size normalize,后者就是用类似于目标检测中IOU(Intersection Over Union)的OKS计算相似度,然后再算AP。PCK在2017年前常用于人体姿态估计网络准确性的评估,现在已不再使用。
2.1.1.1 OKS计算
\[OKS_{p} = \frac{\Sigma_{i}exp \left \{-d^{2}_{pi}/2S^{2}_{p}\sigma^{2}_{i} \right \}\delta \left ( v_{pi} \gt 0 \right )}{\Sigma_{i}\delta \left ( v_{pi} \gt 0 \right)} \]\(p\) :当前图片所有Groundtruth人体中id为 \(p\) 的人, \(p \in \left ( 0,M \right)\) 。
\(M\) :当前图片中人体的数量。
\(i\) :id为 \(i\) 的keypoint。
\(d_{pi}\) :当前检测的id为 \(p\) 的人体的id为 \(i\) 的关键点与Groundtruth人体中id为 \(p\) 的人体的id为 \(i\) 的关键点的欧式距离。
\(S_{p}\) :Groundtruth行人中id为 \(p\) 的人的尺度因子,其值为行人检测框面积的平方根 \(S_{p} = \sqrt{wh}\) , \(w、h\) 为检测框的宽和高。
\(\sigma_{i}\) :id为 \(i\) 的人体关键点类型的关键点归一化因子,这个因子是通过对所有的样本集中的Groundtruth关键点由人工标注与真实值存在的标准差, \(\sigma\) 越大表示此类型的关键点越难标注。对于本文使用的COCO 2017数据集5000个样本的17类人体关键点的归一化因子, \(\sigma\) 的取值可以为: {鼻子:0.026,眼睛:0.025,耳朵:0.035,肩膀:0.079,手肘:0.072,手腕:0.062,臀部:0.107,膝盖:0.087,脚踝:0.089} 。
\(v_{pi}\) :Groundtruth中id为 \(p\) 的行人第 \(i\) 个关键点的可见性,其中 \(v_{pi} = 0\) 表示关键点未标记,可能的原因是图片中不存在,或者不确定在哪, \(v_{pi} = 1\) 表示关键点无遮挡并且已经标注, \(v_{pi} = 2\) 表示关键点有遮挡但已标注。同样,预测的关键点有两个属性: \({v_{pi}}' = 0\) 表示未预测出, \({v_{pi}}' = 1\) 表示预测出。
\(\delta \left ( * \right)\) :如果条件 \(*\) 成立,那么 \(\delta \left ( * \right) = 1\) ,否则\(\delta \left ( * \right) = 0\) ,在此处的含义是:仅计算Groundtruth中已标注的关键点 \(oks\) 。
关于归一化因子 \(\sigma_{i}\) 的取值:
\[\displaylines{ \sigma_{i} = \sigma{ \left ( d_{i}/S \right ) } \\\\ \sigma{ \left ( d_{i}/S \right ) } = \sqrt{ \frac{ \Sigma^{M}_{p} \left ( \frac{d_{pi}}{S_{p}} -E \left ( \frac{d_{pi}}{S_{p}} \right ) \right )^{2} }{ M } } \\\\ \frac{d_{pi}}{S_{p}} = \sqrt{ \frac{ ( {x_{pi}}' - x_{pi} )^{2} + ( {y_{pi}' - y_{pi}} )^{2} }{w_{p}h_{p}} } \\\\ E{ \left ( \frac{d_{i}}{S} \right ) } = \frac{ \Sigma^{M}_{p} \frac{ d_{pi} }{ S_{p} } }{ M } } \]2.1.1.2 mAP计算
单人姿态估计AP:
一次仅对一个人进行估计,即在 \(oks\) 指标中 \(M = 1\) ,因此一张图片中Groundtruth为一个行人(GT),对此行人进行关键点检测后会获得一组关键点(DT),最后会计算出GT与DT的相似度 \(oks\) 为一个标量,然后人为的给定一个阈值 \(T\) ,然后可以通过所有图片的 \(oks\) 计算 \(AP\) :
\[AP = \frac{ \Sigma_{p}{ \delta \left ( oks_{p} \gt T \right ) } }{ \Sigma_{p}{ 1 } } \]多人姿态估计AP:
多人姿态估计,如果采用的检测方法是自顶向下,先把所有的人找出来再检测关键点,那么其AP计算方法如同单人姿态估计 \(AP\) ;如果采用的检测方法是自底向上,先把所有的关键点找出来然后再组成人,那么假设一张图片中共有M个人,预测出N个人,由于不知道预测出的N个人与Groundtruth中的M个人的一一对应关系,因此需要计算Groundtruth中每一个人与预测的N个人的 \(oks\) ,那么可以获得一个大小为 \(M \times N\) 的矩阵,矩阵的每一行为Groundtruth中的一个人与预测结果的N个人的 \(oks\) ,然后找出每一行中 \(oks\) 最大的值作为当前GT的 \(oks\) 。最后每一个GT行人都有一个标量 \(oks\) ,然后人为的给定一个阈值 \(T\) ,然后可以通过所有图片中的所有行人计算 \(AP\) :
\[AP = \frac{ \Sigma_{m}{ \Sigma_{p}{ \delta \left ( oks_{p} \gt T \right ) } } }{ \Sigma_{m} { \Sigma_{p}{ 1 } } } \]mAP:
\(mAP\) 是常用检测指标,具体就是给 \(AP\) 指标中的人工阈值 \(T\) 设定不同的值,然后会获得多个指标 \(AP\) ,最后再对多个 \(AP\) 指标求平均,最终获得 \(mAP\) :
\[T \in \left [ 0.5 : 0.05 : 0.95 \right ] \] 标签:oks,right,关键点,人体,AP,评价,pi,姿态,left From: https://www.cnblogs.com/hugaotuan/p/17064632.html