大家好,今天给大家分享一个基于深度学习技术的面部分析工具库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