代码在我的github:
https://github.com/FortiLeiZhang/model_zoo/blob/master/TensorFlow/mtcnn/mtcnn_client.py
MTCNN TensorFLow Serving
上一节用 Keras 实现了 mtcnn,下一步就是在 TF Serving 上将这个服务起来。本来以为很简单,就是把 model 导出来,在 TF model server 上跑起来就完事。TF 官方提供了一个能用的 参考版本。但是,真正用到实际中,问题又来了。首先,在向 serving model 传递输入的时候,使用到了 tf.make_tensor_proto
tp = tf.make_tensor_proto(image, dtype=tf.float32, shape=image.shape)
而在实际的应用程序一侧,使用 tf 里面的函数需要 import tensorflow,这会耗费大量的内存。另外,serving model 的输入是 numpy array,这在进行大量调用的时候,效率很低,根据以往在做 object detection 时的经验,传递参数为 bytes 最好。所以要解决的问题为:
- 改造模型,使其输入为 bytes 而非 numpy array。
- 在 client 中避免使用 tf.make_tensor_proto。
改造 MTCNN 模型
原始的模型输入是形如 (None,None,None,3) 的 tf.float32 数组
data = tf.placeholder(tf.float32, (None,