Ult*_*let 22 object-detection deep-learning tensorflow tensorflow-serving
我正在按照本教程tensorflow serving使用我的对象检测模型.我正在使用tensorflow对象检测来生成模型.我创建了使用冷冻模型这个出口(生成的冷冻模型作品使用python脚本).
冻结的图形目录具有以下内容(目录上没有任何内容variables)
变量/
saved_model.pb
现在,当我尝试使用以下命令提供服务时,
tensorflow_model_server --port=9000 --model_name=ssd --model_base_path=/serving/ssd_frozen/
Run Code Online (Sandbox Code Playgroud)
它总是告诉我
...
tensorflow_serving/model_servers/server_core.cc:421](重新)添加模型:ssd 2017-08-07 10:22:43.892834:W tensorflow_serving/sources/storage_path/file_system_storage_path_source.cc:262]在基础下找不到任何版本的servable ssd path/serving/ssd_frozen/2017-08-07 10:22:44.892901:W tensorflow_serving/sources/storage_path/file_system_storage_path_source.cc:262]在基本路径/ serving/ssd_frozen /下找不到servable ssd的版本
...
Xin*_*ang 47
我有同样的问题,原因是因为对象检测api在导出检测模型时没有分配模型的版本.但是,tensorflow服务需要您指定检测模型的版本号,以便您可以选择要提供的不同版本的模型.在您的情况下,您应将检测模型(.pb文件和变量文件夹)放在文件夹:/ serving/ssd_frozen/1 /下.通过这种方式,您可以将模型分配给版本1,并且tensorflow服务将自动加载此版本,因为您只有一个版本.默认情况下,tensorflow服务将自动提供最新版本(即最大数量的版本).
注意,在创建1 /文件夹之后,仍需要将model_base_path设置为--model_base_path =/serving/ssd_frozen /.
对于新版本的tf服务,如您所知,它不再支持SessionBundle导出的模型格式,而是现在SavedModelBuilder.
我想最好从旧的模型格式恢复会话,然后通过SavedModelBuilder导出它.您可以使用它指示模型的版本.
def export_saved_model(version, path, sess=None):
tf.app.flags.DEFINE_integer('version', version, 'version number of the model.')
tf.app.flags.DEFINE_string('work_dir', path, 'your older model directory.')
tf.app.flags.DEFINE_string('model_dir', '/tmp/model_name', 'saved model directory')
FLAGS = tf.app.flags.FLAGS
# you can give the session and export your model immediately after training
if not sess:
saver = tf.train.import_meta_graph(os.path.join(path, 'xxx.ckpt.meta'))
saver.restore(sess, tf.train.latest_checkpoint(path))
export_path = os.path.join(
tf.compat.as_bytes(FLAGS.model_dir),
tf.compat.as_bytes(str(FLAGS.version)))
builder = tf.saved_model.builder.SavedModelBuilder(export_path)
# define the signature def map here
# ...
legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op')
builder.add_meta_graph_and_variables(
sess, [tf.saved_model.tag_constants.SERVING],
signature_def_map={
'predict_xxx':
prediction_signature
},
legacy_init_op=legacy_init_op
)
builder.save()
print('Export SavedModel!')
Run Code Online (Sandbox Code Playgroud)
您可以在服务示例中找到上面代码的主要部分.最后,它将以可以提供的格式生成SavedModel.
| 归档时间: |
|
| 查看次数: |
6478 次 |
| 最近记录: |