1. ホーム
  2. tensorflow

[解決済み】TensorFlowで*.pbファイルを使用する方法とその動作は?

2022-02-08 16:09:55

質問内容

顔認識を行うための実装として、以下のものを使用しています。 このファイル :

"facenet.load_model("20170512-110547/20170512-110547.pb")"

このファイルは何に使うのですか?どのように機能するのかよくわかりません。

コンソールログ :

Model filename: 20170512-110547/20170512-110547.pb
distance = 0.72212267

実際のコード所有者のGithubリンク https://github.com/arunmandal53/facematch

解決方法は?

pb はprotobufの略です。TensorFlowでは、protbufファイルにはグラフの定義だけでなく、モデルの重みも含まれています。そのため pb ファイルさえあれば、学習済みモデルを実行することができます。

与えられた pb ファイルを読み込むには、次のようにします。

def load_pb(path_to_pb):
    with tf.gfile.GFile(path_to_pb, "rb") as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
    with tf.Graph().as_default() as graph:
        tf.import_graph_def(graph_def, name='')
        return graph

グラフを読み込むと、基本的に何でもできるようになります。例えば、以下のようにして興味のあるテンソルを取得することができる。

input = graph.get_tensor_by_name('input:0')
output = graph.get_tensor_by_name('output:0')

のように、通常のTensorFlowのルーチンを使用します。

sess.run(output, feed_dict={input: some_data})