==================================================================
数据集来源网络搜索,我选取了几名大家认识的人物,有Biden、chenglong、mayun、Trump、yangmi、zhaoliying等。每个人物放入3-4张图片,如下图:
获得此图像数据集,我们将:
-
为数据集中的每个人脸创建 128 维嵌入
-
使用这些嵌入来识别图像和视频流中人物的面部
制作数据集的方法:
===================================================================
myface
├── dataset
├─dataset
│ ├─Biden
│ ├─chenglong
│ ├─mayun
│ ├─Trump
│ ├─yangmi
│ └─zhaoliying
├── encode_faces.py
├── recognize_faces_image.py
├── recognize_faces_video.py
└── encodings.pickle
我们的项目有 4 个顶级目录:
-
dataset/ :包含六个字符的面部图像,根据它们各自的名称组织到子目录中。 。
-
output/ :这是您可以存储处理过的人脸识别视频的地方。 我要把我的一个留在文件夹里——原侏罗纪公园电影中的经典“午餐场景”。
-
videos/ :输入视频应存储在此文件夹中。 该文件夹还包含“午餐场景”视频,但尚未经过我们的人脸识别系统。
我们在根目录下还有 6 个文件:
-
encode_faces.py :人脸的编码(128 维向量)是用这个脚本构建的。
-
identify_faces_image.py :识别单个图像中的人脸(基于数据集中的编码)。
-
identify_faces_video.py :识别来自网络摄像头的实时视频流中的人脸并输出视频。
-
encodings.pickle :面部识别编码通过 encode_faces.py 从您的数据集生成,然后序列化到磁盘。
创建图像数据集后(使用 search_bing_api.py ),我们将运行 encode_faces.py 来构建嵌入。 然后,我们将运行识别脚本来实际识别人脸。
=================================================================================
在识别图像和视频中的人脸之前,我们首先需要量化训练集中的人脸。 请记住,我们实际上并不是在这里训练网络——网络已经被训练为在大约 300 万张图像的数据集上创建 128 维嵌入。
当然可以从头开始训练网络,甚至可以微调现有模型的权重。一般情况。
使用预训练网络然后使用它为我们数据集中的 29张人脸中的每一张构建 128 维嵌入更容易。
然后,在分类过程中,我们可以使用一个简单的 k-NN 模型 + 投票来进行最终的人脸分类。 其他传统的机器学习模型也可以在这里使用。 要构建我们的人脸嵌入,
请新建 encode_faces.py: