在我的人脸识别项目中,一个人脸被表示为128维嵌入(face_descriptor),如FaceNet所使用的那样。我可以通过两种方式从图像生成嵌入。
第一种方法是使用Tensorflow resnet模型v1。
即将多个带有同一张脸的图片转换为一张带有多张人脸的图片。 仍然需要的时间与连接的图片数量(即人脸数量)成正比,对单个图片进行迭代几乎需要相同的时间。
第一种方法是使用Tensorflow resnet模型v1。
emb_array = sess.run(embedding_layer,
{images_placeholder: images_array, phase_train_placeholder: False})
可以传递一组图像,并获得嵌入列表。这有点慢,需要1.6秒(尽管对于大量图像,时间几乎是恒定的)。注意:没有可用的GPU。
另一种方法是使用dlib。
dlib.face_recognition_model_v1.compute_face_descriptor(image, shape)
这可以快速得出结果,几乎只需要0.05秒。但是一次只能传递一个图像,随着图像数量的增加,时间会增加。
是否有任何方法可以传递图像数组以计算dlib中的嵌入或者改进dlib的速度?
或者是否有其他更快的方法来生成128维人脸嵌入?
更新:我将多个图像连接成单个图像并传递给dlib。
dlib.face_recognition_model_v1.compute_face_descriptor(big_image, shapes)
即将多个带有同一张脸的图片转换为一张带有多张人脸的图片。 仍然需要的时间与连接的图片数量(即人脸数量)成正比,对单个图片进行迭代几乎需要相同的时间。