opencv 如何更新haarcascade_frontalface_default. xml文件以进行更多人脸检测

4sup72z8  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(155)

你好,我正在使用opencv和facenet模型沿着tensorflow进行人脸检测和识别。
现在我的人脸识别工作很好。但我有准确性问题的人脸检测。
我有大量的数据,其中包含人脸,但没有检测到harrcascade。所以我想添加到haarcascade的图像,以提高人脸检测的准确性。我如何更新此文件,以检测更多的脸?

93ze6v8z

93ze6v8z1#

现代人脸识别流程包括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是包中 Package 的模型。根据我的实验,VGG-Face和Facenet是最强大的。

tp5buhyn

tp5buhyn2#

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 cascade更成功,但它们都使用opencv的眼睛检测来对齐人脸,dlib的对齐功能的分辨率很低,这就是为什么最好的结果来自mtcnn。

from deepface import DeepFace
DeepFace.verify("img1.jpg", "img2.jpg", detector_backend = 'mtcnn')

相关问题