deepface:最先进轻量级人脸识别和人脸属性分析框架讲解

这篇具有很好参考价值的文章主要介绍了deepface:最先进轻量级人脸识别和人脸属性分析框架讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

Deepface 是一个用于 python 的轻量级人脸识别和人脸属性分析(年龄、性别、情感和种族)框架。它是一个混合人脸识别框架。

deepface包含最先进的模型:VGG-Face、Google FaceNet、OpenFace、Facebook DeepFace和DeepIDArcFaceDlib。所有这些模型都封装在一起,Deepface 的人脸识别准确率高达 97%,并且已被证明在人脸检测方面比一般的人脸识别框架更成功。Facebook 使用 Deepface 来防止其平台上的假冒和身份盗用。

一个图表示:(来源官网)
deepface:最先进轻量级人脸识别和人脸属性分析框架讲解

每个模型的评分:
deepface:最先进轻量级人脸识别和人脸属性分析框架讲解

环境搭建

我的软件环境:

  • pycharm2021
  • python3.9.6

模块安装:

pip install deepface

人脸验证

对两张图片进行比对,看是否同一个人,图片为:
deepface:最先进轻量级人脸识别和人脸属性分析框架讲解
以下三行代码即可实现,运行它会自动给你下载相关权重文件vgg_face_weights.h5:

from deepface import DeepFace

verification = DeepFace.verify(img1_path = "img1.jpg", img2_path = "img2.jpg")
print(verification)

结果如下:

{'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)

运行如下:
deepface:最先进轻量级人脸识别和人脸属性分析框架讲解
看清楚:
第一个,下载到的位置:

To: C:\Users\hp\.deepface\weights\openface_weights.h5

第二个是结果:

{'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.265129

identity表示身份的意思,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)

输出为:
deepface:最先进轻量级人脸识别和人脸属性分析框架讲解
说明:年龄,21;性别,男;表情,自然;种族:亚洲人(官方只能提供到是哪个洲的人)

补充:如果你遇到报错OSError: Unable to open file (truncated file: eof = 5865472, sblock->base_addr = 0, stored_eof = 588,你就到weights路径下把原来的删除,重新执行代码下载文件
比如我报错:
deepface:最先进轻量级人脸识别和人脸属性分析框架讲解

重新执行代码下载即可,有时候会遇到下载失败:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败,可以多尝试几次(甚至十几次),毕竟github有些同学本来就谅解不稳定。实在不行还是报错,那就手动下载吧,我用wegt命令下载,比如:
deepface:最先进轻量级人脸识别和人脸属性分析框架讲解
使用如下命令下载到本地(或者直接点击链接去下载):

wget -c  https://github.com/serengil/deepface_models/releases/download/v1.0/gender_model_weights.h5

下载好后放到weights文件夹下一样:
deepface:最先进轻量级人脸识别和人脸属性分析框架讲解

视频流识别

from deepface import DeepFace
a=DeepFace.stream()
print(a)

deepface:最先进轻量级人脸识别和人脸属性分析框架讲解

参考

https://pypi.org/project/deepface/
https://www.cs.toronto.edu/~ranzato/publications/taigman_cvpr14.pdf文章来源地址https://www.toymoban.com/news/detail-443186.html

到了这里,关于deepface:最先进轻量级人脸识别和人脸属性分析框架讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实践航拍小目标检测,基于轻量级YOLOv8n开发构建无人机航拍场景下的小目标检测识别分析系统

    关于无人机相关的场景在我们之前的博文也有一些比较早期的实践,感兴趣的话可以自行移步阅读即可: 《deepLabV3Plus实现无人机航拍目标分割识别系统》 《基于目标检测的无人机航拍场景下小目标检测实践》 《助力环保河道水质监测,基于yolov5全系列模型【n/s/m/l/x】开发构

    2024年03月11日
    浏览(62)
  • DeepFace:人脸识别库 DeepFace 简单认知

    工作中遇到,简单整理 博文内容为 deepface 的简单介绍 理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心

    2024年02月09日
    浏览(50)
  • git轻量级服务器gogs、gitea,非轻量级gitbucket

    本文来源:git轻量级服务器gogs、gitea,非轻量级gitbucket, 或 gitcode/gogs,gitea.md 结论: gogs、gitea很相似 确实轻, gitbucket基于java 不轻, 这三者都不支持组织树(嵌套组织 nested group) 只能一层组织。 个人用,基于gogs、gitea,两层结构树 简易办法: 把用户当成第一层节点、该用户的

    2024年02月07日
    浏览(80)
  • 轻量灵动: 革新轻量级服务开发

    从 JDK 8 升级到 JDK 17 可以让你的应用程序受益于新的功能、性能改进和安全增强。下面是一些 JDK 8 升级到 JDK 17 的最佳实战: 1.1、确定升级的必要性:首先,你需要评估你的应用程序是否需要升级到 JDK 17。查看 JDK 17 的新特性、改进和修复的 bug,以确定它们对你的应用程序

    2024年02月07日
    浏览(60)
  • 轻量级 HTTP 请求组件

    Apache HttpClient 是著名的 HTTP 客户端请求工具——现在我们模拟它打造一套简单小巧的请求工具库, 封装 Java 类库里面的 HttpURLConnection 对象来完成日常的 HTTP 请求,诸如 GET、HEAD、POST 等等,并尝试应用 Java 8 函数式风格来制定 API。 组件源码在:https://gitee.com/sp42_admin/ajaxjs/tr

    2024年02月01日
    浏览(73)
  • Tomcat轻量级服务器

    目录 1.常见系统架构  C-S架构 B-S架构 2.B-S架构系统的通信步骤 3.常见WEB服服务器软件 4.Tomcat服务器的配置 下载安装 环境变量配置 测试环境变量是否配置成功 测试Tomcat服务器是否配置成功  Tomcat窗口一闪而过的解决步骤 Tomcat解决乱码 介绍: C-S架构即Client/Server(客户端/服务

    2023年04月14日
    浏览(140)
  • 108中超轻量级的加载动画!

    大家好,我是【程序视点】小二哥! 今天要上的菜不是 Animate.js,也不是 Move.js,而是能提供108种加载动画的库: Whirl . 话不多说,直接来看例子。 以上只是冰山一角。whirl的CSS加载动画集合中有108种选项供你挑选。选中喜欢的动画后,点击“Grab the CSS on Github!”。 将跳转到

    2024年02月03日
    浏览(56)
  • 一种轻量级定时任务实现

    现在市面上有各式各样的分布式定时任务,每个都有其独特的特点,我们这边的项目因为一开始使用的是分布式开源调度框架TBSchedule,但是这个框架依赖ZK, 由于ZK的不稳定性和项目老旧无人维护 ,导致我们的定时任务会偶发出现异常,比如:任务停止、任务项丢失、任务不

    2024年02月14日
    浏览(48)
  • Kotlin 轻量级Android开发

    Kotlin 是一门运行在 JVM 之上的语言。 它由 Jetbrains 创建,而 Jetbrains 则是诸多强大的工具(如知名的 Java IDE IntelliJ IDEA )背后的公司。 Kotlin 是一门非常简单的语言,其主要目标之一就是提供强大语言的同时又保持简单且精简的语法。 其主要特性如下所示: 轻量级:这一点对

    2024年02月07日
    浏览(161)
  • C++轻量级单元测试框架

    单元测试是构建稳定、高质量的程序、服务或系统的必不可少的一环。通过单元测试,我们可以在开发过程中及时发现和修复代码中的问题,提高代码的质量和可维护性。同时,单元测试也可以帮助我们更好地理解代码的功能和实现细节,从而更好地进行代码重构和优化。

    2023年04月25日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包