deepface:最先进轻量级人脸识别和人脸属性分析框架讲解
介绍
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.2 Face++旷视 1.3 云脉 1.4 腾讯AI 1.5 1MB轻量级人脸检测模型 1.6 SeetaFac ...
- python人脸识别、人脸关键点检测、性别检测
python人脸识别.人脸关键点检测.性别检测 文章目录 根据人脸预测年龄性别和情绪 (python + keras)(三) 一款入门级的人脸.视频.文字检测以及识别的项目. age-gender-e ...
- Android园区部队人脸识别源码门禁项目讲解
Android园区部队人脸识别源码门禁项目讲解 这边搞人脸识别相关项目有一段时间,今天抽时间讲述一个经典的人脸识别项目:部队人脸识别门禁系统. 大家都知道部队对人员管理安全要求是相当高的,很多保密的技 ...
- 调用远程摄像头进行人脸识别_人脸识别技术植入手机APP
随着物联网技术的日益成熟,我们看到已经有很多APP用到了人脸识别技术,特别是金融和互联网领域的应用纷纷加入了人脸识别.表示,人脸识别技术基于人的脸部特征信息进行身份识别,为互联网金融等行业解决在线多维 ...
- android 人脸识别边框_android Arcface人脸识别框/人脸抓拍框/人脸追踪框
为什么要改? 先来看看sdk demo中提供的人脸框样式,这个框看上去并不是非常美观(个人觉得) 再看看下面这个框是不是就要顺眼一点 怎么换? 先来看看原始的画法: @Override public ...
- Android自定义人脸识别框,android自定义虹软人脸识别框/人脸抓拍框/人脸追踪框...
有一两个月没有更新博客了,最近一直在忙人脸识别的项目,先将项目中更改虹软人脸框的方法抽取出来,希望对大家有所帮助. 尊重原创,转载请注明出处: http://blog..net/qq137722697 ...
- android 人脸识别边框_android自定义Arcface人脸识别框/人脸抓拍框/人脸追踪框
为什么要改? 先来看看sdk demo中提供的人脸框样式,这个框看上去并不是非常美观(个人觉得) 在这里插入图片描述 再看看下面这个框是不是就要顺眼一点 在这里插入图片描述 怎么换? 先来看看原始的画 ...
- Python | 人脸识别系统 — 人脸比对 代码部分
本博客为人脸识别系统的人脸比对代码解释 人脸识别系统博客汇总:人脸识别系统-博客索引 项目GitHub地址:Su-Face-Recognition: A face recognition for us ...
- 人脸识别和人脸检测的区别
网上很多帖子.博客在谈人脸识别.人脸检测,其实很多都弄混了,现在来纠正一下.(观点只代表作者本人) 人脸识别是对已知人脸进行分类的过程.就像我们看到其他人一样能够分辨出谁是自己的朋友谁不是.人脸识别通 ...
- 人脸识别损失函数梳理与分析/相关方法整理
人脸识别损失函数梳理与分析 人脸识别损失函数疏理与分析 人脸识别中Softmax-based Loss的演化史 人脸识别:损失函数总结 补充: 1.facenet-TripletLoss 注意点: 样 ...
最新文章
- 极光大数据:00后王者大军来袭 荣耀手机偏偏独得恩宠
- 团队-象棋游戏-模块测试过程
- 006 技能数组分析和代码编写
- CCF2016.4 - A题
- (数字IC)低功耗设计入门(六)——门级电路低功耗设计优化
- linux文件分割(将大的日志文件分割成小的)
- Python可变与不可变类型及垃圾回收机制
- 大地win11 32位旗舰版镜像v2021.08
- POJ1256 (C++ compare函数)
- android 3.x,Android Studio3.x的坑(三)
- 美团自研无人机登场:15分钟配送到家
- MFC树型控件 搜索并展开高亮指定树节点
- android 串口调试数据手机收不到,记录一次安卓串口一次接收全部数据时,发生的错误...
- RabbitMQ-C客户端使用说明
- 工厂管理口诀,请转给每一个员工背下来!
- 计算机应用唐家琪,基于机器学习的蛋白质相互作用预测研究
- linux 中gnu的含义是,GNU是什么意思
- 赛马问题 25匹马选出最快的5匹
- stroj uplink
- 面临“反对沉没成本”效应,海尔、格力、海信、美的等家电厂商的智能音箱还有必要做吗?
热门文章
- c语言怎么输入若干整数,//从键盘上输入若干整数,并将其存入数组中,并统计输入数据的个...
- 用计算机实测技术研究声波和拍内容,基础物理实验/面向21世纪课程教材
- mysql数据库常见分页实现思路_各种常见数据库分页实现(转)
- 管理好项目——带好技术团队的秘籍
- 开发中接口的类型都有哪些以及如何调用?
- Step 1: 盲打第三天
- Python3.5爬取cbooo.cn数据并且同步到mysql中
- 中国石油大学《化工原理二》第一阶段在线作业
- BMI体重指数计算器
- python求一个数的因子_0是素数吗(python求一个数的因子)