转载自知乎
OKS, object keypoint similarity, 即关键点相似度. 在人体关键点评价任务中,对于网络得到的关键点好坏,并不是仅仅通过简单的欧氏距离来计算的,而是有一定的尺度加入,来计算两点之间的相似度. 公式:
其中:
- 表示在groundtruth中某个人的id
- 表示某个人的关键点id
- 表示这个关键点的可见性为1(即在图片上可见)
- 表示这个人所占的面积大小平方根, 根据groundtruth里人的box计算得到
- 表示第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了。