最新在学习人脸识别模型,
我想尝试将其应用在 web 服务上,
其中用到了 facenet
在 facenet 中有一个load_model()
方法。 Link
经过确认,这里面的saver.restore
等是最耗时的,
每次加载都会消耗大约 14 秒,这明显是不能接受的,我不能每次请求都要等这么久。
所以我想将让其只在开启时加载一次,不知这个想法可行?
我搜集了资料 比较贴近的有这么几个
我按照上面的文章多次测试,要么 RuntimError,要么 graph is None,或者其他更可怕的错误
主要的运行原代码
# compare.py
origin_data_path = ''
img_path = ''
args = parse_arguments(['./face/src/20180408-102900', img_path])
images = load_and_align_data(args.image_files, args.image_size, args.margin, args.gpu_memory_fraction)
with tf.Graph().as_default():
with tf.Session() as sess:
# 加载模型 这里耗时是最多的
facenet.load_model(args.model)
images_placeholder = tf.get_default_graph().get_tensor_by_name("input:0")
embeddings = tf.get_default_graph().get_tensor_by_name("embeddings:0")
phase_train_placeholder = tf.get_default_graph().get_tensor_by_name("phase_train:0")
# 获取特征向量
feed_dict = {images_placeholder: images, phase_train_placeholder: False}
emb = sess.run(embeddings, feed_dict=feed_dict)
# 保存到本地
np.savetxt('', emb[0])
我需要将其改写,小白初次接触,提前谢谢各位了!~
1
tankeco 2019-06-01 12:49:34 +08:00
糙快猛的话你就把 facenet 改成全局变量呗…好好搞的话 compare.py 做成 service
|
2
askfermi 2019-06-01 12:56:34 +08:00
可以的,我是写成了类的成员。可供参考: https://github.com/cvmodel/Face_Utility/blob/master/face_utility/solver.py ,如果写成类似的格式,直接通过 cvpm 就可以调用- - 当然写成 flask 的也可以
|
3
Huelse OP 通过不断地测试,总算找到比较合适的方法了,最后时间基本在 1 秒内,还是感谢二位了
|
4
Huelse OP 不知道为啥,我不能 @了,说是注册时间不满 360 天,其实这是我小号。。。
|