人体关键点评价指标---OKS计算

转载自知乎

OKS, object keypoint similarity, 即关键点相似度. 在人体关键点评价任务中,对于网络得到的关键点好坏,并不是仅仅通过简单的欧氏距离来计算的,而是有一定的尺度加入,来计算两点之间的相似度. 公式:

O K S p = i { d p 2 2 / 2 S p 2 σ i 2 } δ ( v p i = 1 ) i δ ( v p i = 1 ) OKS_{p} = \frac{\sum_{i}\{-d^{2}_{p^{2}}/2S^{2}_{p}\sigma^{2}_{i}\}\delta(v_{p^{i}}=1)}{\sum_{i}\delta(v_{p^{i}}=1)}

其中:

  • p p 表示在groundtruth中某个人的id
  • p i p^{i} 表示某个人的关键点id
  • v p i = 1 v_{p^{i}}=1 表示这个关键点的可见性为1(即在图片上可见)
  • S p 2 S^{2}_{p} 表示这个人所占的面积大小平方根, 根据groundtruth里人的box计算得到
  • σ i \sigma_{i} 表示第i个骨骼点的归一化因子,这个因子是通过对已有的数据集中所有groundtruth计算的标准差而得到的,反映出当前骨骼点对与整体的影响程度。值越大,说明在整个数据集中对这个点的标注效果越差; 值越小,说明整个数据集中对这个点的标注效果越好

OKS是对两个人的之间的关节点相似度计算,如果有多人的时候,假设一张要预测的图片上有M个人,我预测出来了N个人,那么M个人中的每个人都会和预测的N个人的关节点进行相似度计算,所以最后我们会得到一个M x N 的矩阵,对于其中的一个人来讲,会选择和他oks最大的那个作为预测的label来计算.

AP(Average Precision)

根据前面的OKS矩阵,已经知道了某一张图像的所有人(groundtruth中出现的)的OKS分数,现在测试集中有很多图像,每张图像又有一些人,此时该如何衡量整个算法的好坏的。这个时候就用到了AP的概念,AP就是给定一个t,如果当前的OKS大于t,那就说明当前这个人的骨骼点成功检测出来了,并且检测对了,如果小于t,则说明检测失败或者误检漏检等,因此对于所有的OKS,统计其中大于t的个数,并计算其占所有OKS的比值。即假设OKS一共有100个,其中大于阈值t的共有30个,那么AP值就是30/100=0.3.

mAP(mean Average Precision)

顾名思义,AP的均值,具体计算方法就是给定不同的阈值t,计算不同阈值情况下对应的AP,然后求个均值就ok了。

猜你喜欢

转载自blog.csdn.net/Murdock_C/article/details/83827554