参考网站
Keypoint Evaluation
本篇描述了COCO数据集的 Keypoint估计 的度量方法,提供的估计代码可以用于获得公共验证集的估计结果,但是测试集的真实标注是隐藏的,要想获得测试集上的评估则需要上传代码至服务器
综述
COCO关节点检测需要同时检测目标并定位 Keypoint 的坐标,同时进行检测和关节点估计的任务相对来说较为新颖,我们受目标检测度量方法的启发,采用了了一种新奇的度量方法。简单地说,就是将这项任务看作是 Keypoint detection ,将预测算法看作是 Keypoint detector,在此之前,建议先会看一下有关 Object detection 的度量方法
Keypoint detection 度量方法的核心思想就是模仿 Object detection 的度量方法 : average precision (AP) and average recall (AR)和他们的变种。所有这些度量方法的核心都是去检测真实目标和预测目标之间的相似度。在 Object detection 中,IoU 是作为一种相似度度量,它定义了在真实目标和预测值目标之间的匹配程度并允许计算 precision-recall 曲线。为了将 AP/AR 应用到关节点检测,我们只需要定义一个相似的度量方法,于是我们就定义了一个类似于 IoU 的 OKS(object keypoint similarity) 方法
AP、AR、mAP、mAR、Precision-Recall曲线
-
为什么同时需要准确率和召回率
例如,有一个池塘,里面共有1000条鱼,含100条鲫鱼。机器学习分类系统将这1000条鱼全部分类为“不是鲫鱼”,那么准确率也有90%(显然这样的分类系统是失败的),然而查全率为0%,因为没有鲫鱼样本被分对。这个例子显示出一个成功的分类系统必须同时考虑Precision和Recall,尤其是面对一个不平衡分类问题。
分类目的: 取出测试集中所有飞机的图片,而不是大雁的图片。
tp(true positives):飞机的图片被正确识别为飞机(好瓜)
tn(true nagetives):大雁的图片没有被识别,正确认为它们是大雁(坏瓜)
fp(false positives):大雁的图片被错误的预测为飞机(坏瓜被当做好瓜,实际是坏瓜)
fn(false nagetives):飞机的图片没有被识别出来,被错误的认为是大雁(好瓜被当做坏瓜,实际是好瓜)
true:好瓜是好瓜,坏瓜是坏瓜(预测对了)
false:好瓜当做坏瓜,坏瓜当做好瓜(预测错了)
positives:被预测为好瓜(好瓜+坏瓜当做好瓜)
nagetives:被预测为坏瓜(坏瓜+好瓜当做坏瓜)
-
AP(average precision) : 挑出来的西瓜中有多少是好瓜
- mAP(mean average precision) : 针对于所有类别的AP
-
AR(average recall) : 所有好瓜中有多少比例被挑出来
-
mAR : mean average recall(针对于所有类别)
Object Keypoint Similarity(OKS)
- 真实关节点的格式 :
其中为Keypoint的坐标,为可见标志
: 未标注点
: 标注了但是图像中不可见(例如遮挡)
: 标注了并图像可见
实际预测时,不要求预测每个关节点的可见性
Object Keypoint Similarity (OKS)
是标注和预测关节点之间的欧氏距离
为标准差
每个关节点的相似度都会在之间,完美的预测将会得到,预测值与真实值差距太大将会得到
Tuning OKS
我们通过调整使得更符合直觉意义并更容易描述相似度量,首先,使用5000多余的标注图片组成验证集,对于隶属于类型的每个关节点都定义了一个与目标尺度相关的标准差。计算标准差,不同的关节点有着相差极大的 : 位于身体上的关节点(shoulders, knees, hips, etc.)的要大于位于头部上的关节点(eyes, noses, ears)
设置,经如此设置,当标准差为原来的()一、二、三倍时,代入公式可以得到的值为,刚好为正态分布。根据68-95-99.7法则,设置意味着68%, 95%, 99.7%标注的关节点将会有0.88, 0.61, 0.32以上的相似度(实际测得为75%, 95%, 99.7%)