本章介绍机器学习中人脸识别的历史以及从零开始如何构建一个人脸识别模型,含所有训练数据,源代码,不强制要求GPU。使用 docker 来管理库依赖项,提供与平台无关的一致环境。使用 Dlib 进行预处理,使用 Tensorflow + Scikit-learn 训练能够根据图像预测身份的分类器。
1、人脸识别简介
面部识别是一种生物识别解决方案,可以测量一个人面部的独特特征。今天可用的应用程序包括航班登记、在照片中标记朋友和家人。要执行面部识别,需要一种方法来唯一地表示一张脸。1960 年,伍德罗·布莱索 (Woodrow Bledsoe) 使用了一种涉及标记面部突出特征坐标的技术。这些特征包括发际线、眼睛和鼻子的位置。2015 年,Google 的研究人员发表了一篇论文FaceNet,该论文使用卷积神经网络,依靠图像像素作为特征,而不是手动提取它们。它在LFW 数据集上取得了 99.63% 的准确率新记录。
2、搭建数据处理环境
对图像进行预处理,解决一些问题包括光照差异、遮挡、对齐、分割。
首先,查找图像中最大的人脸来解决分割问题,这样训练后的数据不必再裁剪为人脸了。
其次,照片中,人脸与图像的中心不完美对齐是很常见的,为标准化输入,将应用变换以根据眼睛和下唇的位置将所有图像居中。
可以使用 docker 安装 tensorflow、opencv 和 Dlib。dlib 提供了一个库,可用于面部检测和对齐。
# 获取脚本文件<