deepface:最先进轻量级人脸识别和人脸属性分析框架讲解 | 您所在的位置:网站首页 › 面部分析讲什么 › deepface:最先进轻量级人脸识别和人脸属性分析框架讲解 |
介绍
Deepface 是一个用于 python 的轻量级人脸识别和人脸属性分析(年龄、性别、情感和种族)框架。它是一个混合人脸识别框架。 deepface包含最先进的模型:VGG-Face、Google FaceNet、OpenFace、Facebook DeepFace和DeepIDArcFaceDlib。所有这些模型都封装在一起,Deepface 的人脸识别准确率高达 97%,并且已被证明在人脸检测方面比一般的人脸识别框架更成功。Facebook 使用 Deepface 来防止其平台上的假冒和身份盗用。 一个图表示:(来源官网) 每个模型的评分: 我的软件环境: pycharm2021python3.9.6模块安装: pip install deepface 人脸验证对两张图片进行比对,看是否同一个人,图片为: 结果如下: {'verified': True, 'distance': 0.1600321561950978, 'threshold': 0.4, 'model': 'VGG-Face', 'detector_backend': 'opencv', 'similarity_metric': 'cosine'}类型是个字典,我们来解析以下含义: verified=True:表示同一个人。这是验证结果。distance参数:这个值越小,代表相似度越高,越大则相似度越低。model:默认用的模型VGG-Face。你也可以试试别的模型。detector_backend:要有opencv支持的意思你也可以自己设置模型,比如设置为OpenFace: rom deepface import DeepFace models=["VGG-Face", "Facenet", "Facenet512", "OpenFace", "DeepFace", "DeepID", "ArcFace", "Dlib"] verification = DeepFace.verify(img1_path = "img.png", img2_path = "img_1.png",model_name=models[3]) print(verification)运行如下: 第二个是结果: {'verified': False, 'distance': 0.17080708434087122, 'threshold': 0.1, 'model': 'OpenFace', 'detector_backend': 'opencv', 'similarity_metric': 'cosine'} 人脸查找 from deepface import DeepFace img_path1 = r'img.png' img_path2 = r'img_1.png' img_path1 = img_path1.replace('\\', '/') img_path2 = img_path2.replace('\\', '/') models=["VGG-Face", "Facenet", "Facenet512", "OpenFace", "DeepFace", "DeepID", "ArcFace", "Dlib"] db_path = r'data' db_path = db_path.replace('\\', '/') recognition = DeepFace.find(img_path = img_path2, db_path = db_path, model_name = models[0], enforce_detection=False) print(recognition)输出如下: ind function lasts 4.07146143913269 seconds identity VGG-Face_cosine 0 data/img_2.png 0.160032 1 data/img.png 0.265129identity表示身份的意思,VGG-Face_cosine表示的是相似度的意思应该,它会得到相似最高的图。 为什么要设enforce_detection= False?不设置会报错检测不到人脸,因为Deepface会将db_path指定的相片folder中所有的相片,取得每张相片特征后储存于相同路径下(副档名为pkl),下次再取用比对时便不需要重新跑模型取得特征了。但如果其中有无法侦测出脸孔的相片,此时若enforce_detection=False,执行时便会产生错误并停止执行,以提醒我们资料夹中有无法检测脸孔的相片,请重新review。待确认folder中的相片无误后,我们便可设定enforce_detection=False,告知Deepface不需要提醒,以提升后续执行的速度。 人脸属性(年龄,标签,性别,种族)识别DeepFace 带有强大的面部属性分析模块,用于年龄、性别、情绪和种族/民族预测。虽然 DeepFace 的面部识别模块封装了现有的最先进模型,但其面部属性分析有自己的模型。目前,年龄预测模型的平均绝对误差为 +/- 4.6 岁;性别预测模型的准确率达到 97%。 Deepface 还提供面部属性分析,包括、、age(包括愤怒、恐惧、中性、悲伤、厌恶、快乐和惊讶)和(包括亚洲人、白人、中东人、印度人、拉丁裔和黑人)预测。 来测试以下男神的年龄大小吧: from deepface import DeepFace analysis = DeepFace.analyze(img_path="img.png", actions=["age", "gender", "emotion", "race"]) print(analysis)输出为: 补充:如果你遇到报错OSError: Unable to open file (truncated file: eof = 5865472, sblock->base_addr = 0, stored_eof = 588,你就到weights路径下把原来的删除,重新执行代码下载文件 比如我报错: 重新执行代码下载即可,有时候会遇到下载失败:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败,可以多尝试几次(甚至十几次),毕竟github有些同学本来就谅解不稳定。实在不行还是报错,那就手动下载吧,我用wegt命令下载,比如: 下载好后放到weights文件夹下一样: https://pypi.org/project/deepface/ https://www.cs.toronto.edu/~ranzato/publications/taigman_cvpr14.pdf |
CopyRight 2018-2019 实验室设备网 版权所有 |