这是 FaceNet 的Keras实现 FaceNet: A Unified Embedding for Face Recognition and Clustering.
与 FaceNet 主要差别:
- 输入图片尺寸 139 -> 224。
- 训练数据集 CelebA -> VGGFACE2。
- 标定模型 Dlib -> MTCNN.
- Python 3.5
- Tensorflow 1.6.0
- Keras 2.2.0
VGGFACE2 是一个大型的人脸数据集,有9,000多个人物身份和330多万张人脸图像。
按照 说明 下载 VGGFACE2 数据集 vggface2_train.tar.gz 和 vggface2_test.tar.gz 放入 data 目录。
处理单个输入图像的工作流程如下:
- 人脸检测:使用 Dlib 中预先训练的模型检测面部。
- 人脸校准:使用 Dlib 的实时姿势估计与 OpenCV 的仿射变换来尝试使眼睛和下唇在每个图像上出现在相同位置。
- 卷积网络:使用深度神经网络把人脸图片映射为 128 维单位超球面上的一个点。
使用 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
执行下面命令标定人脸:
```bash
$ python align/align_dataset_mtcnn.py data/train data/train_aligned --image_size 200 --margin 24
$ python align/align_dataset_mtcnn.py data/test data/test_aligned --image_size 200 --margin 24
$ python train.py
要想可视化训练过程,执行下面命令:
$ tensorboard --logdir path_to_current_dir/logs
$ python demo.py
执行下面命令查看样本数据:
$ python data_generator.py
正(P) | 锚(A) | 反(N) |
---|---|---|
执行下面命令查看数据增强效果:
$ python data_generator.py
之前 | 之后 | 之前 | 之后 | 之前 | 之后 |
---|---|---|---|---|---|