【人脸识别系列】从知名DeepFace人脸识别库入手详解人脸识别---第一部分人脸识别任务介绍
人脸识别系列其他文章
【人脸识别系列】从知名DeepFace人脸识别库入手详解人脸识别—第二部分DeepFace库使用介绍之数据集介绍
概述
人脸识别技术已经十分成熟,在工业上已经涌现出诸多成熟的应用,比如:人脸检测、关键点定位、人脸识别、人脸聚类、大规模检索、活体判断、人脸属性等。
这些应用为城市治理、楼宇园区管理、实名认证、通行考勤等业务场景提供高效、准确的技术。
本系列文章以DeepFace库的使用为例,尝试对人脸识别做一个简单的介绍,以帮助大家更加清晰的认知人脸识别。
本系列文章将以人脸识别任务为开始,后续文章依托人脸识别的各类任务,对每一类任务的发展历程以及对应模型情况进行介绍,然后从经典模型的构建、训练、推理、部署等几个方面进行深入讲解,力争让读者对人脸识别有跟家深刻的认知。
人脸识别任务介绍
人脸识别任务繁多,如上文中提到的人脸检测、人脸识别、人脸关键点检测、人脸验证、人脸聚类、人脸属性、活体判断等都属于人脸识别任务。
每一类人脸识别任务介绍如下:
1. 人脸检测: 人脸检测任务是指通过检测算法,对图片或者视频帧进行分析挖掘,确定图片中是否有人脸,如果存在人脸则确定人脸的位置坐标。网络中经常能看到许多将人脸框出来的图片,那通常便是在人脸检测任务中产出的图片,如下图所示便是人脸检测任务中最常见的图:
2. 人脸验证: 人脸验证任务是指将一张具有人脸的图片与另一张具有人脸的图片进行比较,以验证前一张图片中的人脸是否和后一张图片中的人脸匹配。人脸验证通常用于将候选人的面部与另一个候选人的面部进行比较。例如确认物理人脸是否与身份证件中的人脸匹配。人脸验证可以不关注需要验证的人脸具体是谁,叫什么名字等,这也是其和人脸识别任务的差异之处。具体案例如下图所示:
3. 人脸识别: 人脸识别任务是指识别一张图片中的人脸,是否在某个人脸数据库(例如你自己构建的人脸数据库)中存在,通常需要关注这个人是谁,叫什么名字等身份信息。具体案例见下图:
4. 人脸属性: 人脸属性任务是指通过对图片中的人脸进行分析以分析任务的年龄、性别、情绪或种族/民族等。具体案例如下:
5. 人脸聚类: 人脸聚类任务是指对大量图片进行分析,将相似的人脸聚合为一个类别,例如在手机相册中,手机利用人脸聚类,将相同人物的图片分类存放到一起,具体案例如下:
6. 活体判断: 活体判断任务目的是要判断捕捉到的人脸是真实人脸,还是伪造的人脸(如:彩色纸张打印人脸图,电子设备屏幕中的人脸数字图像以及人脸面具等)攻击。在金融支付,门禁等应用场景,活体检测一般是嵌套在人脸检测与人脸识别或验证中的模块,用来验证是否用户是真实存在的物理生命体。活体检测对应的计算机视觉问题本质上就是分类问题,可看成二分类(真 or 假);也可看成多分类(真人,纸张攻击,屏幕攻击,面具攻击),具体案例如下:
8. 人脸关键点检测: 也称为人脸关键点定位或者人脸对齐,是在人脸检测获取到人脸在图像中具体位置的基础上,进一步定位人脸器官的位置。 这些人脸器官位置信息,是一些具有明确语议定义的离散点,因此称为人脸关键点。 通常,人脸关键点定义在人脸的脸颊、嘴巴、眼睛、鼻子和眉毛区域,将人脸关键点连接起来,能够描绘人脸的几何特征。具体案例如下:
DeepFace库介绍
DeepFace库被称为是Python上最轻量级的人脸识别和面部属性分析库。由于其也封装了Dlib、OpenCV、Ultralytics等计算机视觉库所以他囊括了绝大部分用于人脸识别的各类传统模型和AI模型。
DeepFace提供的人脸识别算法,主要可用于解决如下任务:
- 人脸检测
- 人脸验证
- 人脸识别
- 人脸属性分析
- 人脸特征提取
- 人脸实时分析
DeepFace优势在于编码极其简单,完成人脸识别的各类任务需要代码量极少,例如进行人脸检测,其只需要一句代码便可完成,具体案例如下所示:
- 原图如下,我希望检测并提取人脸
- 利用DeepFace检测并提取人脸,利用matplotlib打印检测到的人脸,代码和结果如下所示:
from deepface import DeepFace
import matplotlib.pyplot as plt
# 检测人脸,并将检测到的人脸存储到img1中
img1 = DeepFace.detectFace(r'./data/2.JPG', detector_backend='mtcnn')
# 画出检测到的人脸
plt.imshow(img1)
检测到的人脸如下图所示:
是不是很简单!
到此,人脸识别任务的简单介绍便完成了,希望具体了解DeepFace如何使用的朋友,请阅读我后面的博客,有不足之处欢迎大家批评指正。