人脸识别流程,主要包括人脸数据建档与识别两大部分,其中人脸数据建档主要实现对采集人员的人脸数据进行收集入库的过程,人脸识别主要实现对待识别人脸的数据采集与判定的过程。
从具体实现过程来划分,人脸识别整个过程主要包括人脸图特征检测,特征描述,特征对齐,数据库的处理(建立索引以及数据入库)等几个模块。
本文主要以facenet算法为基准来实现人脸识别过程,face算法见如下连接。
https://github.com/davidsandberg/facenet
1、人脸检测
采用mtcnn算法实现对图片的人脸进行检测,load_and_align_data 返回图片中最大人脸的坐标(因为最终目的是实现人脸识别,所以在人脸检测时只需要关注最大人脸即可)
def load_and_align_data(image_paths, image_size=160, margin=44, gpu_memory_fraction=1.0):
minsize = 20 # minimum size of face
threshold = [ 0.6, 0.7, 0.7 ]
factor = 0.709
print("Creating networks and loading parameters")
with tf.Graph().as_default():
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=gpu_memory_