实现识别视频中的人脸识别+面部动作识别
聚类目标:
- 不同的人做一样的面部动作各三次,识别是否是同一个人
- 一个人做不同的面部动作各三次,识别是否是同一面部动作
收集数据集:
10组不同的面部动作视频 x 人数 x 三次
比如两个人,每个人展示十个面部动作 ,每个动作录三次。每个人30个视频数据。
Person A ,A1_1~10, A2_1 ~10, A3_1 ~10
Person B, B1_1~10, B2_1 ~10, B3_1 ~10
关于两个聚类目标,这里给给两个例子。
- 不同的人做一样的面部动作各三次,识别是否是同一个人
输入:A1_4, A2_4, A3_4,B1_4, B2_4, B3_4
输出:A1_4, A2_4, A3_4 为一类, B1_4, B2_4, B3_4为另一类 - 一个人做不同的面部动作各三次,识别是否是同一面部动作
输入:A1_3, A2_3, A3_3 ,A1_4, A2_4, A3_4
输出:A1_3, A2_3, A3_3 为一类,A1_4, A2_4, A3_4为另一类
开始正式的代码
模型:
用于产生人脸68个特征点
shape_predictor_68_face_landmarks.dat
用于将68个特征点转换成128维向量
dlib_face_recognition_resnet_model_v1.dat:
detector = dlib.get_frontal_face_detector()
predictor_path = "68_face_landmark\shape_predictor_68_face_landmarks.dat"
predictor = dlib.shape_predictor(predictor_path)
recognizer_path = "dlib_face_recognition_resnet_model_v1\dlib_face_recognition_resnet_model_v1.dat"
recognizer = dlib.face_recognition_model_v1(recognizer_path)
导入测试数据路径和输出路径
face_folder = 'data\\test2'
faces= os.listdir(face_folder) #Get all file names under the folder
output_folder = 'data/output2/'
desarray = np.zeros( (1,128) )
descriptors = []
vedioss = []
这一部分就是视频人脸识别。上一篇提到过。这里保存了两个数据。视频路径和这个视频的1