deepface人脸识别基础笔记

 DeepFace基础介绍

DeepFace是一个专为Python设计的轻量级人脸识别和人脸属性分析框架,能够进行年龄、性别、情感以及种族的识别。这个库集成了多个先进的人脸识别模型,包括VGG-Face、Google FaceNet、OpenFace、Facebook DeepFace和DeepIDArcFaceDlib。这些模型的存在使得DeepFace在人脸识别上的准确率高达97%,并被证实在人脸检测方面优于一般的人脸识别框架。

DeepFace还具备人脸对齐的功能,这是为了提高识别准确性而设置的一步操作。通过对检测到的人脸进行对齐操作,可以消除姿态、光照和表情等因素对识别结果的影响。

 DeepFace的项目文档地址

Github地址icon-default.png?t=N7T8https://github.com/serengil/deepface

DeepFace安装

安装DeepFace的方法非常简单,你只需要通过pip工具安装即可。具体来说,你可以在命令行中输入以下命令进行安装:

# pip install deepface

DeepFace的方法参数介绍

verify方法

DeepFace库中的verify方法用于验证两张脸部图片是否属于同一个人。该方法的输入是两个面部图像,输出是一个布尔值,表示这两个图像是否来自同一个人。

'''
Args:
img1_path: 第一张图片的路径。
img2_path: 第二张图片的路径。
model_name: 使用的人脸识别模型的名称,默认为"VGG-Face"。
detector_backend: 使用的检测器后端的名称,默认为"opencv"。
distance_metric: 用于计算相似度的度量方法,默认为"cosine"。
enforce_detection: 是否强制检测人脸,默认为True。
align: 是否对齐人脸,默认为True。
normalization: 归一化方法,默认为"base"。
'''
 
dfs = DeepFace.verify(
    img1_path="img1",
    img2_path ="img2",
    model_name="VGG-Face",)
    detector_backend="opencv",
    distance_metric="cosine",
    enforce_detection=True,
    align=True, 
    normalization="base")


'''
Returns:
"verified": 布尔值,表示两张图片是否属于同一个人。如果距离小于等于阈值,则返回True,否则返回False。
"distance": 浮点数,表示两张图片之间的距离。
"threshold": 浮点数,表示用于判断两张图片是否属于同一个人的阈值。
"model": 字符串,表示使用的人脸识别模型的名称。
"detector_backend": 字符串,表示使用的检测器后端的名称。
"similarity_metric": 字符串,表示用于计算相似度的度量方法。
"facial_areas": 字典,包含两个键值对,分别表示两张图片的人脸区域信息。键为"img1"和"img2",值为对应的人脸区域数据。
"time": 浮点数,表示执行该段代码所花费的时间,保留两位小数。
'''

resp_obj = {
    "verified": distance <= threshold,
    "distance": distance,
    "threshold": threshold,
    "model": model_name,
    "detector_backend": detector_backend,
    "similarity_metric": distance_metric,
    "facial_areas": {"img1": facial_areas[0], "img2": facial_areas[1]},
    "time": round(toc - tic, 2),
    }

find方法

deepface 库中的 find 方法用于在给定的目录中查找与查询人脸图像最相似的图像。返回一个包含最相似图像信息的字典。

'''
Args:
img_path:要查找的图像的路径。
db_path:包含人脸数据库的文件夹路径。
model_name:使用的人脸识别模型,默认为"VGG-Face"。
distance_metric:用于计算相似度的距离度量方法,默认为"cosine"。
enforce_detection:是否强制检测人脸,默认为True。
detector_backend:用于检测人脸的后端,默认为"opencv"。
align:是否对齐人脸,默认为True。
normalization:归一化方法,默认为"base"。
silent:是否在执行过程中保持静默,默认为False。
'''

dfs = DeepFace.find(
    img_path,
    db_path,
    model_name="VGG-Face",
    distance_metric="cosine",
    enforce_detection=True,
    detector_backend="opencv",
    align=True,
    normalization="base",
    silent=False
)

'''
Returns:
返回值是一个包含匹配信息的字典。该字典包含以下字段:
'identity' (字符串):表示最相似图像的身份或标识。
'verified' (布尔值):表示是否找到了匹配的图像。如果为 True,则表示找到了匹配;如果为 False,则表示未找到匹配。
'distance' (浮点数):表示查询图像与找到的最相似图像之间的距离。
'''

extract_faces方法

extract_faces 用于对图像进行特征分析,提取头像坐标。

'''
Args:
img_path:输入图像的路径。
target_size:目标大小,默认为(224, 224)。
detector_backend:检测器后端,默认为"opencv"。
enforce_detection:是否强制检测人脸,默认为True。
align:是否对齐人脸,默认为True。
grayscale:是否将图像转换为灰度图,默认为False。
'''

dfs= DeepFace.extract_faces(
    img_path,
    target_size=(224, 224),
    detector_backend="opencv",
    enforce_detection=True,
    align=True,
    grayscale=False,
)

'''
Returns:
返回一个包含人脸图像、人脸区域和置信度的字典列表。
face 键对应的值是提取的人脸图像
facial_area 键对应的值是人脸在原始图像中的位置和大小
confidence 键对应的值是人脸检测的置信度
'''

analyze方法

analyze方法函数的作用是分析图像中的人脸,并返回关于人脸的各种属性,如情绪、年龄、性别和种族。

'''
Args:
img_path:图像文件的路径。
actions:一个元组,包含要分析的属性名称。默认值为("emotion", "age", "gender", "race")。
enforce_detection:布尔值,表示是否强制检测人脸。默认值为True。
detector_backend:字符串,表示用于检测人脸的后端库。默认值为"opencv"。
align:布尔值,表示是否对齐人脸。默认值为True。
silent:布尔值,表示是否在执行过程中保持静默。默认值为False。
'''
dfs = DeepFace.analyze(
    img_path,
    actions=("emotion", "age", "gender", "race"),
    enforce_detection=True,
    detector_backend="opencv",
    align=True,
    silent=False,
)

'''
Returns:
"region":人脸在图像中的位置和大小,包括x坐标、y坐标、宽度和高度。
"age":人脸的年龄预测值。
"dominant_gender":人脸的主要性别,可能是"Woman"(女性)或"Man"(男性)。
"gender":一个字典,包含了各个性别的概率。
"dominant_emotion":人脸的主要情绪,可能是"neutral"(中性)、"sad"(悲伤)、"angry"(愤怒)、"surprise"(惊讶)、"fear"(恐惧)、"happy"(快乐)或"disgust"(厌恶)。
"emotion":一个字典,包含了各个情绪的概率。
"dominant_race":人脸的主要种族,可能是"indian"(印度裔)、"asian"(亚裔)、"latino hispanic"(拉丁裔西班牙裔)、"black"(黑人)、"middle eastern"(中东裔)或"white"(白人)。
"race":一个字典,包含了各个种族的概率。
'''

总结

deepface 库是一个用于人脸识别和面部属性分析的 Python 库。以下是该库的一些关键特点和功能总结:

  1. 支持多种模型: deepface 支持多种经典的人脸识别模型,包括 VGG-Face、Facenet、Facenet512、OpenFace、DeepFace、DeepID、Dlib、ArcFace、SFace 等。

  2. 人脸检测: 提供不同的人脸检测器后端,包括 opencv、retinaface、mtcnn、ssd、dlib 和 mediapipe。

  3. 距离度量: 提供不同的距离度量标准,包括 cosine、euclidean 和 euclidean_l2。

  4. 实时人脸识别: 提供了实时人脸识别功能,可以应用于网络摄像头或视频流。

  5. 面部属性分析: 支持对人脸进行面部属性分析,如性别、年龄、种族等。

  6. 集成了多个模型: 能够以简单的方式比较不同模型的性能,以便选择最适合特定任务的模型。

  7. 简化的 API 接口: 提供简单易用的 API 接口,方便用户进行人脸识别和分析。

  8. 支持图像和视频: 既可以处理静态图像,也可以应用于实时视频流。

  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值