微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何计算对象关键点相似度

如何解决如何计算对象关键点相似度

我正在尝试计算对象关键点相似度以评估算法的关键点检测。下面是我根据我从 here

中发现和理解的内容编写的代码

oks formula

def oks(gt,preds,threshold,v,gt_area):

IoUs = np.zeros((len(preds),len(gt)))
sigmas = np.array([.26,.25,.35,.79,.72,.62,1.07,.87,.89,.89])/10.0
vars = (sigmas*2)**2
k = len(sigmas)

xg = gt[:,0]; yg = gt[:,1]
xp = preds[:,0]; yp = preds[:,1]
vg = v + 1 # add one to visibility tags
k1 = np.count_nonzero(vg > 0)
dx = np.subtract(xg,xp)
dy = np.subtract(yg,yp)

e = (dx**2+dy**2)/vars/(gt_area+np.spacing(1))/2
if threshold is not None:
    ind = list(vg > threshold)
    e = e[ind]
IoUs = np.sum(np.exp(-e))/(1.5*e.shape[0]) if len(e) != 0 else 0
return IoUs

哪里,

gt,preds 是 17x2 NumPy 数组,包含 17 个(x,y)人体姿势坐标,分别用于机器学习模型的地面实况和预测。

threshold = 0.5(coco 数据集使用 0.5 作为软阈值),

v = 真实关键点的可见性(17x1 NumPy 数组),值为 0 = 可见且 1 = 被遮挡(因此我们做 vg=v+1 以符合 oks 公式)

gt_area = 真实人物边界框的面积。

我的印象是 oks 应该为每个关键点产生一个值,但上面的代码导致所有关键点组合的单个值。我在这里做错了吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。