这是 FaceNet 的Keras实现 FaceNet: A Unified Embedding for Face Recognition and Clustering.
CelebFaces Attributes Dataset (CelebA) 是一个大型的人脸数据集,有10,177个身份和202,599张人脸图像。
按照 说明 下载 CelebFaces Attributes (CelebA) 数据集.
处理单个输入图像的工作流程如下:
- 人脸检测:使用 Dlib 中预先训练的模型检测面部。
- 人脸校准:使用 Dlib 的实时姿势估计与 OpenCV 的仿射变换来尝试使眼睛和下唇在每个图像上出现在相同位置。
- 卷积网络:使用深度神经网络把人脸图片映射为 128 维单位超球面上的一个点。
下载预训练模型,放在 models 目录下:
- Dlib 人脸校准模型 shape_predictor_5_face_landmarks.dat.bz2
- FaceNet 人脸识别模型 model.10-0.0156.hdf5
使用 Labeled Faces in the Wild (LFW) 数据集做性能评估:
- 13233 人脸图片
- 5749 人物身份
- 1680 人有两张以上照片
下载 LFW database 放在 data 目录下:
$ wget http://vis-www.cs.umass.edu/lfw/lfw-funneled.tgz
$ tar -xvf lfw-funneled.tgz
$ wget http://vis-www.cs.umass.edu/lfw/pairs.txt
$ wget http://vis-www.cs.umass.edu/lfw/people.txt$ python lfw_eval.py准确度: 89.27 %.
提取训练图像:
$ python pre-process.py总共 202,599张人脸图像中,5600张无法被 dlib 标定。因此 202599 - 5600 = 196999 张被用于训练。
$ python train.py要想可视化训练过程,执行下面命令:
$ tensorboard --logdir path_to_current_dir/logs$ python demo.py执行下面命令查看样本数据:
$ python data_generator.py| 正(P) | 锚(A) | 反(N) |
|---|---|---|
执行下面命令查看数据增强效果:
$ python data_generator.py| 之前 | 之后 | 之前 | 之后 | 之前 | 之后 |
|---|---|---|---|---|---|