推理期间人脸嵌入比较的最佳指标

问题描述 投票:0回答:1

我想在CCTV素材上运行人脸识别。我在推理过程中实现了多个距离度量进行人脸嵌入比较,例如欧几里得距离,余弦距离,KDTree,SVM,L1和L2距离等,但最后我只保留了前两个,因为我没有从中获得预期的准确性很难找到一个好的门槛。

def distance(self, embeddings1, embeddings2, distance_metric=0):
        if distance_metric == 0:
            # Euclidian distance
            embeddings1 = embeddings1/np.linalg.norm(embeddings1, axis=1, keepdims=True)
            embeddings2 = embeddings2/np.linalg.norm(embeddings2, axis=1, keepdims=True)
            dist = np.sqrt(np.sum(np.square(np.subtract(embeddings1, embeddings2))))
            return dist
        elif distance_metric == 1:
            # Distance based on cosine similarity
            dot = np.sum(np.multiply(embeddings1, embeddings2), axis=1)
            norm = np.linalg.norm(embeddings1, axis=1) * np.linalg.norm(embeddings2, axis=1)
            similarity = dot/norm
            dist = np.arccos(similarity) / math.pi
            return dist[0]
        else:
            raise 'Undefined distance metric %d' % distance_metric

Q1:就人脸嵌入比较而言,最​​好的度量标准是什么?如何设置阈值?

Q2:除了欧几里得距离和余弦距离之外,人脸嵌入比较最快,更好的方法是什么?

python face-recognition
1个回答
1
投票

最好,如果您是指最先进的技术-这是要遵循的列表:https://paperswithcode.com/sota/face-verification-on-labeled-faces-in-the

© www.soinside.com 2019 - 2024. All rights reserved.