求模型评价指标PCK@a,python代码已实现

作者原创,代码免费公开,多多支持。

一、介绍

正确关键点百分比(Percentage of Correct Keypoint, PCK)是在深度学习领域做人体姿态估计中,常用的指标,许多文献都用了PCK作为模型评价指标。如Can WiFi Estimate Person Pose?

二、公式

其中I(·)是一个二进制指示符,当为真时输出1,当为假时输出0。

N是测试帧的个数。i为人体关节指数。rh和lh分别代表右肩和左髋的位置。因此,2根号 rh2 + lh2可视为上肢长度,用于对预测误差||pdi−gti|| 进行归一化,其中pd为预测坐标,gt为真值(真实坐标)。

简单理解,PCK@10就是归一化预测误差在10以内的点的帧数占总帧数的百分比,显然这个值越高越好。

上述论文的pck指标结果如下图,可以参考参考:

PCK结果的R和L分别代表左和右,共18个关键点。

三、代码

'''
作者:淳
声明:代码实现求PCK指标,但每个人输入数据shape不一样,可能自己需要改成自己需要的数据维度
'''

import numpy as np
import math
#欧式距离
def cal_distance(p1, p2):
    return math.sqrt(math.pow((p2[0] - p1[0]), 2) + math.pow((p2[1] - p1[1]), 2))
#求pck指标,公式见我的博客
def pck(p,g,a,N):
    #p是预测坐标,g是真值,N是总帧数
    length = 0.8 #上肢长度
    total = 0
    for i in range(N):
        d = cal_distance(p[i],g[i])
        # print(d/length)
        I = bool(d/length<=a)
        total = total+int(I)
    # print(total)
    return total/N

if __name__ == '__main__':
    np.random.seed(10)  #这里改换随机种子,得到不同的pck
    batch = 16
    a = 0.7
    #这里只是随机数,之后可以换成自己需要的预测值和真值
    pred = np.random.rand(batch,2)
    ground = np.random.rand(batch,2)
    out = pck(pred,ground,a,batch)
    print('pck = ',out)

可以自己试一试。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

 ☆cwlulu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值