1.简介
上一篇中我们已经搭建好了环境,下面就该进入正题了。要想通过TensorFlow实现人脸识别,并“认识我”,需要准备两个数据集:一个是自己的人脸,一个是其他人的人脸。
在准备好这两个数据集过后,我们便可以来训练神经网络,让她“认出我”。
仍然参考了http://tumumu.cn/2017/05/02/deep-learning-face/ 这篇博客。
其他人脸的数据集使用了这个,可以通过百度云下载,有20w张人脸
http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html
注意这里只需要下载img_align_celeba.zip这个压缩包就可以了,不用把整个20多G的文件下下来。用这个数据集的弊端就是不论是图片处理、训练还是运行程序都非常非常慢,一定要做好心理准备。。。
当然你也可以选择小的很多的LFW数据集,大概就1w多张人脸,跑起来特别快,但是测试下来准确率就一般般了。
2.获取本人的照片
这里需要大概10000张自己的照片,数量太少是会影响准确度的。我们通过opencv+dlib来实现图片处理与人脸识别。
这里用opencv来做文件处理,用dlib自带的dlib.get_frontal_face_detector()来检测正脸,并将其保存至my_faces文件夹。下面给出代码:
get_my_faces.py文件:
# -*- codeing: utf-8 -*-
import cv2
import dlib
import os
import sys
import random
#输出路径,同目录下的my_faces文件夹
output_dir = './my_faces'
#保存的图片为64*64
size = 64
#如果该路径不存在则创建一个
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 改变图片的亮度与对比度
def relight(img, light=1, bias=0):
#shape[1]是图片像素的列数(即width)
w = img.shape[