【发布时间】:2020-12-25 17:25:42
【问题描述】:
我有多个帧,我使用Retinaface 检测到每个帧中的人脸。我想使用他们的地标来跟踪人脸。
为了找到两个地标之间的相似性,我尝试计算欧几里得距离:
输入:
landmark_1 = [1828, 911], [1887, 913], [1841, 942], [1832, 974], [1876, 976]
landmark_2 = [1827, 928], [1887, 926], [1848, 963], [1836, 992], [1884, 990]
参考其他链接后,我写了以下函数,但产生的值非常高:
def euclidean_dist(vector_x, vector_y):
vector_x, vector_y = np.array(vector_x), np.array(vector_y)
if len(vector_x) != len(vector_y):
raise Exception('Vectors must be same dimensions')
ans = sum((vector_x[dim] - vector_y[dim]) ** 2 for dim in range(len(vector_x)))
return np.sqrt(np.sum(ans**2))
输出:
euclidean_dist(landmark_1, landmark_2)
>> 1424.9424549784458
(在这种情况下期望一些较小的值)
我猜代码只能用于一维向量,但我真的被困在这里。任何帮助将不胜感激。
【问题讨论】:
标签: python numpy euclidean-distance