Cluster analysis 如何在多个嵌入标识上使用FaceNet和DBSCAN?
我有以下设置:Cluster analysis 如何在多个嵌入标识上使用FaceNet和DBSCAN?,cluster-analysis,cluster-computing,dbscan,facenet,Cluster Analysis,Cluster Computing,Dbscan,Facenet,我有以下设置: 监控系统拍摄人们的面部照片(每个人的照片数量不同) 我为每张照片运行FaceNet,并获得每个人的嵌入向量列表(每个人由嵌入列表表示,而不是由单个嵌入列表表示) 问题是: 我想使用DBSCAN对观察到的人进行聚类,但我需要保证来自同一个人的人脸嵌入到同一个聚类(记住,我们可以有同一个人的多张照片,我们已经知道他们必须属于同一个聚类) 一个解决方案是为每个人获得一个“平均”或平均嵌入,但我相信这种数据丢失会产生不好的结果 另一种解决方案可能是在单个向量中连接N个嵌入(带有N个常量)
有人面临过同样的问题吗?deepface包装了facenet人脸识别模型。常规人脸识别过程如下所示
#!pip install deepface
from deepface import DeepFace
my_set = [
["img1.jpg", "img2.jpg"],
["img1.jpg", "img3.jpg"],
]
obj = DeepFace.verify(my_set, model_name = 'Facenet')
for i in obj:
print(i["distance"])
如果需要facenet生成的嵌入,也可以采用deepface
from deepface.commons import functions
from deepface.basemodels import Facenet
model = Facenet.loadModel()
#this detects and aligns faces. Facenet expects 160x160x3 shaped inputs.
img1 = functions.preprocess_face("img1.jpg", target_size = (160, 160))
img2 = functions.preprocess_face("img2.jpg", target_size = (160, 160))
#this finds embeddings for images
img1_embedding = model.predict(img1)
img2_embedding = model.predict(img2)
对于Facenet,嵌入将是128维向量。您可以运行任何聚类算法来嵌入。我已经将k-means应用于这类研究。我对dbscan没有任何经验,但如果您有嵌入,您可以应用它
此外,您可以在deepface中采用不同的人脸识别模型,如vgg人脸、openface、facebook deepface、deepid和dlib。deepface包装了facenet人脸识别模型。常规人脸识别过程如下所示
#!pip install deepface
from deepface import DeepFace
my_set = [
["img1.jpg", "img2.jpg"],
["img1.jpg", "img3.jpg"],
]
obj = DeepFace.verify(my_set, model_name = 'Facenet')
for i in obj:
print(i["distance"])
如果需要facenet生成的嵌入,也可以采用deepface
from deepface.commons import functions
from deepface.basemodels import Facenet
model = Facenet.loadModel()
#this detects and aligns faces. Facenet expects 160x160x3 shaped inputs.
img1 = functions.preprocess_face("img1.jpg", target_size = (160, 160))
img2 = functions.preprocess_face("img2.jpg", target_size = (160, 160))
#this finds embeddings for images
img1_embedding = model.predict(img1)
img2_embedding = model.predict(img2)
对于Facenet,嵌入将是128维向量。您可以运行任何聚类算法来嵌入。我已经将k-means应用于这类研究。我对dbscan没有任何经验,但如果您有嵌入,您可以应用它
此外,您可以在deepface中采用不同的人脸识别模型,如vgg人脸、openface、facebook deepface、deepid和dlib