您好,我正在使用opencv和facenet模型以及tensorflow进行人脸检测和识别。
现在我的人脸识别工作得很好。但我对人脸检测的准确性有问题。
我有大量的数据,其中包含人脸,但不能被harrcascade检测到。因此,我想将这些图像添加到haarcascade中,以提高人脸检测的准确性。如何更新此文件以检测更多人脸?
发布于 2020-07-24 13:35:43
现代人脸识别流水线由4个常见阶段组成:检测、对齐、表示和验证。仅仅检测人脸是不够的。根据谷歌的研究,对齐可以提高1%以上的准确率。
我建议你使用deepface,因为它在后台处理这些阶段。
#!pip install deepface
from deepface import DeepFace
obj = DeepFace.verify("img1.jpg", "img2.jpg", model_name = "Facenet")
print(obj)
验证功能包括检测和对齐任务。
您还可以验证多个面。
obj = DeepFace.verify([
["img1.jpg", "img2.jpg"],
["img1.jpg", "img3.jpg"]
],
model_name = "Facenet"
)
这些都是人脸验证,你可以应用人脸识别。我的意思是,你可以在一个大型数据库中找到一张脸。
df = DeepFace.find(img_path = "img1.jpg", db_path = "C:/my_db", model_name = "Facenet")
您可以针对不同的人脸识别模型测试deepface包。VGG-Face、Facenet、OpenFace、DeepFace和DeepID都是封装在包中的模型。根据我的实验,VGG-Face和Facenet是最健壮的。
发布于 2020-09-06 13:41:38
deepface中的默认人脸检测模块是opencv,但它也包装了ssd、dlib和mtcnn。
#!pip install deepface
from deepface import DeepFace
backends = ['opencv', 'ssd', 'dlib', 'mtcnn']
detected_face = DeepFace.detectFace("img.jpg", detector_backend = backends[0])
您也可以使用这些不同的人脸检测器运行人脸识别。在ssd中,人脸检测比opencv haar级联更成功。但它们都使用opencv的眼睛检测来对齐人脸。dlib对齐函数的分辨率较低。这就是为什么,最好的结果来自mtcnn。
from deepface import DeepFace
DeepFace.verify("img1.jpg", "img2.jpg", detector_backend = 'mtcnn')
https://stackoverflow.com/questions/62728209
复制相似问题