介绍

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

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

一个图表示:(来源官网)

每个模型的评分:

环境搭建

我的软件环境:

  • pycharm2021
  • python3.9.6

模块安装:

pip install deepface

人脸验证

对两张图片进行比对,看是否同一个人,图片为:

以下三行代码即可实现,运行它会自动给你下载相关权重文件vgg_face_weights.h5:

from deepface import DeepFaceverification = 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 DeepFacemodels=["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)

运行如下:

看清楚:
第一个,下载到的位置:

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 DeepFaceimg_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  secondsidentity  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 DeepFaceanalysis = DeepFace.analyze(img_path="img.png", actions=["age", "gender", "emotion", "race"])
print(analysis)

输出为:

说明:年龄,21;性别,男;表情,自然;种族:亚洲人(官方只能提供到是哪个洲的人)

补充:如果你遇到报错OSError: Unable to open file (truncated file: eof = 5865472, sblock->base_addr = 0, stored_eof = 588,你就到weights路径下把原来的删除,重新执行代码下载文件
比如我报错:

重新执行代码下载即可,有时候会遇到下载失败:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败,可以多尝试几次(甚至十几次),毕竟github有些同学本来就谅解不稳定。实在不行还是报错,那就手动下载吧,我用wegt命令下载,比如:

使用如下命令下载到本地(或者直接点击链接去下载):

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

下载好后放到weights文件夹下一样:

视频流识别

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

参考

https://pypi.org/project/deepface/
https://www.cs.toronto.edu/~ranzato/publications/taigman_cvpr14.pdf

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

  1. 人脸识别,人脸对比技术及案例实现方案

    人脸识别,人脸对比技术及案例实现方案 一.各个人脸识别公司.系统简介 1.1 虹软 1.2 Face++旷视 1.3 云脉 1.4 腾讯AI 1.5 1MB轻量级人脸检测模型 1.6 SeetaFac ...

  2. python人脸识别、人脸关键点检测、性别检测

    python人脸识别.人脸关键点检测.性别检测 文章目录 根据人脸预测年龄性别和情绪 (python + keras)(三) 一款入门级的人脸.视频.文字检测以及识别的项目. age-gender-e ...

  3. Android园区部队人脸识别源码门禁项目讲解

    Android园区部队人脸识别源码门禁项目讲解 这边搞人脸识别相关项目有一段时间,今天抽时间讲述一个经典的人脸识别项目:部队人脸识别门禁系统. 大家都知道部队对人员管理安全要求是相当高的,很多保密的技 ...

  4. 调用远程摄像头进行人脸识别_人脸识别技术植入手机APP

    随着物联网技术的日益成熟,我们看到已经有很多APP用到了人脸识别技术,特别是金融和互联网领域的应用纷纷加入了人脸识别.表示,人脸识别技术基于人的脸部特征信息进行身份识别,为互联网金融等行业解决在线多维 ...

  5. android 人脸识别边框_android Arcface人脸识别框/人脸抓拍框/人脸追踪框

    为什么要改? 先来看看sdk demo中提供的人脸框样式,这个框看上去并不是非常美观(个人觉得) 再看看下面这个框是不是就要顺眼一点 怎么换? 先来看看原始的画法: @Override public ...

  6. Android自定义人脸识别框,android自定义虹软人脸识别框/人脸抓拍框/人脸追踪框...

    有一两个月没有更新博客了,最近一直在忙人脸识别的项目,先将项目中更改虹软人脸框的方法抽取出来,希望对大家有所帮助. 尊重原创,转载请注明出处: http://blog..net/qq137722697 ...

  7. android 人脸识别边框_android自定义Arcface人脸识别框/人脸抓拍框/人脸追踪框

    为什么要改? 先来看看sdk demo中提供的人脸框样式,这个框看上去并不是非常美观(个人觉得) 在这里插入图片描述 再看看下面这个框是不是就要顺眼一点 在这里插入图片描述 怎么换? 先来看看原始的画 ...

  8. Python | 人脸识别系统 — 人脸比对 代码部分

    本博客为人脸识别系统的人脸比对代码解释 人脸识别系统博客汇总:人脸识别系统-博客索引 项目GitHub地址:Su-Face-Recognition: A face recognition for us ...

  9. 人脸识别和人脸检测的区别

    网上很多帖子.博客在谈人脸识别.人脸检测,其实很多都弄混了,现在来纠正一下.(观点只代表作者本人) 人脸识别是对已知人脸进行分类的过程.就像我们看到其他人一样能够分辨出谁是自己的朋友谁不是.人脸识别通 ...

  10. 人脸识别损失函数梳理与分析/相关方法整理

    人脸识别损失函数梳理与分析 人脸识别损失函数疏理与分析 人脸识别中Softmax-based Loss的演化史 人脸识别:损失函数总结 补充: 1.facenet-TripletLoss 注意点: 样 ...

最新文章

  1. 极光大数据:00后王者大军来袭 荣耀手机偏偏独得恩宠
  2. 团队-象棋游戏-模块测试过程
  3. 006 技能数组分析和代码编写
  4. CCF2016.4 - A题
  5. (数字IC)低功耗设计入门(六)——门级电路低功耗设计优化
  6. linux文件分割(将大的日志文件分割成小的)
  7. Python可变与不可变类型及垃圾回收机制
  8. 大地win11 32位旗舰版镜像v2021.08
  9. POJ1256 (C++ compare函数)
  10. android 3.x,Android Studio3.x的坑(三)
  11. 美团自研无人机登场:15分钟配送到家
  12. MFC树型控件 搜索并展开高亮指定树节点
  13. android 串口调试数据手机收不到,记录一次安卓串口一次接收全部数据时,发生的错误...
  14. RabbitMQ-C客户端使用说明
  15. 工厂管理口诀,请转给每一个员工背下来!
  16. 计算机应用唐家琪,基于机器学习的蛋白质相互作用预测研究
  17. linux 中gnu的含义是,GNU是什么意思
  18. 赛马问题 25匹马选出最快的5匹
  19. stroj uplink
  20. 面临“反对沉没成本”效应,海尔、格力、海信、美的等家电厂商的智能音箱还有必要做吗?

热门文章

  1. c语言怎么输入若干整数,//从键盘上输入若干整数,并将其存入数组中,并统计输入数据的个...
  2. 用计算机实测技术研究声波和拍内容,基础物理实验/面向21世纪课程教材
  3. mysql数据库常见分页实现思路_各种常见数据库分页实现(转)
  4. 管理好项目——带好技术团队的秘籍
  5. 开发中接口的类型都有哪些以及如何调用?
  6. Step 1: 盲打第三天
  7. Python3.5爬取cbooo.cn数据并且同步到mysql中
  8. 中国石油大学《化工原理二》第一阶段在线作业
  9. BMI体重指数计算器
  10. python求一个数的因子_0是素数吗(python求一个数的因子)