一个基于Python的轻量级面部识别及面部属性分析框架
大家好,今天给大家分享一个基于深度学习技术的面部分析工具库DeepFace
,旨在为用户提供高效、易于使用的平台,帮助他们快速实现与面部相关的AI应用。
项目介绍
DeepFace是一个基于Python的轻量级面部识别及面部属性分析(包括年龄、性别、情绪和种族)框架。
它是一个混合面部识别框架,集成了多种最先进的模型,如VGG-Face、FaceNet、OpenFace、DeepFace、DeepID、ArcFace、Dlib、SFace和GhostFaceNet。
技术特点
1.集成多种先进模型
DeepFace集成了包括VGG-Face、Google FaceNet、OpenFace、Facebook DeepFace、DeepID、ArcFace、Dlib和SFace等在内的多种先进的人脸识别模型。
不同模型在精度上有所差异,例如 FaceNet-512d 测量精度为 98.4%,VGG-Face 为 96.7% 等。
用户可以根据自己的需求选择不同的模型,或者自己训练一个新的模型。
2.高效性
DeepFace使用滑动窗口策略训练二分类网络,再转化为全卷积网络进行检测,提高了检测效率。
在输入大尺寸图像时,通过热力图实现精准定位,进一步提升了检测效果。
3.多功能性
DeepFace不仅支持面部检测、关键点定位、人脸识别等基础功能,还支持面部属性分析,如年龄、性别、情感和种族等。
该项目还提供了实时面部检测与验证功能,可用于安全门禁系统、社交媒体分析、虚拟现实等领域。
4.易用性
DeepFace提供了详细的文档和教程,方便用户快速上手。
用户可以通过简单的Python代码调用DeepFace的功能,实现面部识别和属性分析。
DeepFace提供了一个API,可以通过HTTP POST方法调用面部识别、面部属性分析和向量表示功能。
可以通过Docker在本地主机上运行DeepFace服务,并消费其服务。
高级功能
1.实时分析(Real Time Analysis)
可对实时视频进行人脸识别和面部属性分析。
示例:
DeepFace.stream(db_path="C:/User/Sefik/Desktop/database")
当连续 5 帧能聚焦到人脸时开始分析一帧,并在 5 秒后显示结果。
2.抗欺骗分析(Face Anti Spoofing)
可判断给定图像是真实还是伪造。
通过将anti_spoofing
参数设置为 True 激活此功能,可在人脸检测、实时分析等任务中使用。
应用场景
1.安全监控
实时面部检测与验证功能可用于安全门禁系统,提高安全性和便利性。
2.社交媒体
自动标记照片中的人物,提高用户体验。
分析用户上传的照片,自动识别面部表情和年龄,提供个性化的内容推荐。
3.虚拟现实
精准的人脸追踪功能可提升VR环境的真实感。
4.医疗诊断
辅助分析面部疾病,如眼疾或肌肉异常。
安装使用
安装
使用pip命令直接安装:
$ pip install deepface
从源代码安装:
$ git clone https://github.com/serengil/deepface.git
$ cd deepface
$ pip install -e .
安装库后,您将能够导入它并使用它的功能。
from deepface import DeepFace
使用
1.人脸验证(Face Verification)
- 功能:验证两张人脸图片是否属于同一人。
- 输入:接受图片的准确路径,也可传入 numpy 或 base64 编码的图像。
- 示例:
result = DeepFace.verify( img1_path="img1.jpg", img2_path="img2.jpg" )
- 返回值:一个字典,可检查verified键的值判断是否为同一人,还包含距离、最大验证阈值、模型和相似度度量等信息。
2.人脸识别(Face Recognition)
- 功能:在数据库中查找输入图像的身份。
- 输入:图片路径和数据库路径。
- 示例:
dfs = DeepFace.find( img_path="img1.jpg", db_path="C:/workspace/my_db" )
- 返回值:一个 pandas 数据框列表,包含数据库中与输入图像匹配的人脸信息。
3.获取嵌入向量(Embeddings)
- 功能:返回人脸图像的嵌入向量。
- 输入:图片路径。
- 示例:
embedding_objs = DeepFace.represent( img_path="img.jpg" )
- 返回值:一个包含嵌入向量的列表,向量维度因模型而异,如 VGG - Face 模型默认将人脸图像表示为 4096 维向量。
4.面部属性分析(Facial Attribute Analysis)
- 功能:分析人脸的多种属性。
- 输入:图片路径和要分析的属性列表(如[‘age’, ‘gender’, ‘race’, ‘emotion’])。
- 示例:
objs = DeepFace.analyze( img_path="img4.jpg", actions=['age', 'gender', 'race', 'emotion'] )
- 返回值:包含分析结果的字典,结果数量与输入图像中的人脸数量相同。
项目地址
https://github.com/serengil/deepface