3

thisチュートリアルに従うとtensorflow servingのオブジェクト検出モデルを使用していました。私はtensorflow object detectionを使ってモデルを生成しています。 this輸出業者(生成されたフリーズモデルのpythonスクリプトを使用しています)を使用してフリーズモデルを作成しました。Tensorflow servingサービスのバージョンがありません<MODEL>ベースパスの下に

私は、次のコマンドを使用してモデルを提供しようとすると、凍結されたグラフのディレクトリは内容(variablesディレクトリ上の何もない)今

変数/

saved_model.pbを以下ました、

tensorflow_model_server --port=9000 --model_name=ssd --model_base_path=/serving/ssd_frozen/ 

それはいつも私

を...示し

tensorflow_serving/model_servers/server_core.cc:421](再) モデルを追加:SSD 2017年8月7日10:22:43.892834: W tensorflow_serving /ソース/ STORAGE_PATH/file_system_storage_path_source.cc:262] ベースパス/サービング/ ssd_frozen下にサービス提供可能なSSDのいかなるバージョンない/ 2017年8月7日10:22:44.892901: tensorflow_serving /ソースW/STORAGE_PATH/file_system_storage_path_source.cc :262] 基本パス/ serve/ssd_frozen/

の下にservable ssdのバージョンが見つかりません

...

私を助けてください。私はすでに多くの時間を費やしています。

答えて

6

同じ問題があったのは、オブジェクト検出apiが検出モデルをエクスポートするときにモデルのバージョンを割り当てないためです。ただしテンソルフローを使用するには、検出モデルのバージョン番号を割り当てる必要があります。これにより、使用するモデルの異なるバージョンを選択できるようになります。あなたの場合は、検出モデル(.pbファイルと変数フォルダ)をフォルダ /serving/ssd_frozen/1 /の下に置く必要があります。このようにしてモデルをバージョン1に割り当て、テンソルフローサービングは1つのバージョンしかないのでこのバージョンを自動的にロードします。デフォルトでは、テンソルフローサービングは自動的に最新のバージョン(つまり、最大数のバージョン)を提供します。

注:1 /フォルダを作成した後でも、model_base_pathは--model_base_path =/serving/ssd_frozen /に設定する必要があります。

+0

ありがとうございました。問題を解決しました。 :) – Ultraviolet

2

あなたが知っているように、それはもはや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!') 

上記のコードの主要部分は、tfの提供例で見つけることができます。 最後に、提供可能な形式でSavedModelを生成します。

enter image description here

+0

ありがとうございます。 「テンソルフローモデル」レポが大きな変化を遂げたようです。 – Ultraviolet

関連する問題