选自pyimagesearch
作者:AdrianRosebrock
机器之心编译
参与:GeekAI、路
本文介绍了构建自定义人脸识别数据集的三种方法:使用OpenCV和webcam工具收集人脸图像数据;以编程的方式下载人脸图像;手动收集人脸图像。
在接下来的几篇博文中,作者将带领大家训练一个「计算机视觉+深度学习」的模型来执行人脸识别任务。但是,要想训练出能够识别图像或视频流中人脸的模型,我们首先得收集人脸图像的数据集。
如果你使用的是「LabeledFacesintheWild」(LFW)这样预先准备好的数据集,那么你可以不用进行这项困难的工作了。你可以使用我们博文中的方法创建自己的人脸识别应用。
然而,对于大多数人来说,我们希望识别出的人脸往往不包含在任何现有数据集中,例如:我们自己的、朋友的、家人或者同事的人脸图像。
为了完成这个任务,我们需要收集我们想要识别的人脸样本,并且以某种方式量化它们。
这个过程通常被称为「人脸识别注册」(facialrecognitionenrollment)。我们称之为「注册」是因为在这个过程中,我们会将用户注册、登记为我们的数据集和应用中的一个真人样本。
本文将介绍注册过程的第一步:创建自定义人脸识别数据集。
如何创建自定义人脸识别数据集
本教程中,我们将介绍3种创建自定义人脸识别数据集的方法。第一种方法使用OpenCV和webcam工具完成两个任务:(1)在视频中检测出人脸;(2)将人脸图像或视频帧的样本保存到磁盘上。
第二种方法将讨论如何以编程的方式下载人脸图像。
最后,我们将讨论如何手动收集人脸图像,以及这种方法何时是适用的。
让我们开始构建人脸识别数据集吧!
方法1:通过OpenCV和webcam进行人脸注册
图1:通过使用OpenCV和webcam,我们可以检测出视频流中的人脸,并且将样本存储到磁盘上。这个过程可用于创建一个本地人脸识别数据集。
这种方法适用于以下情况:
1.你要创建一个」能现场使用的」人脸识别系统;
2.你需要拥有接触特定人的物理途径,以收集他们的人脸图像数据。
这样的系统尤其适用于公司、学校或者其他人们每天亲自出现在现场的组织。
为了收集这些人的人脸图像样本,我们可能需要将他们置于一个特殊的房间中,房间中事先安装好了视频摄影机,用于:(1)检测视频流中人脸的(x,y)坐标;(2)将包含用户人脸的视频帧写入磁盘。我们可能甚至需要好几天或者几周的时间执行上述操作,以收集下列几种情况下的人脸样本:
不同的光照条件一天中不同的时间不同的情绪和情感状态
通过收集不同情况下的人脸样本,我们可以创建一个更加多样化、更具代表性的特定用户人脸图像数据集。
接下来,我们使用一个简单的Python脚本构建自定义人脸识别数据集。这个Python脚本可以完成以下任务:
1.连接到我们的webcam;
2.检测人脸;
3.将包含人脸的视频帧写入磁盘。
想要获取本文中使用的代码,请滚动到本文的「Downloads」部分。
准备好之后,请打开build_face_dataset.py文件,然后我们来一步一步解读这份代码:
在2-7行中,我们导入了所需程序包。尤其是我们所需要的Opencv和imutils包。安装Opencv的方法请参考我提供的这篇安装指南(