TensorFlow CRNN モデルの変換

危険

ここで説明されているコードは非推奨になりました。従来のソリューションの適用を避けるため使用しないでください。下位互換性を確保するためにしばらく保持されますが、最新のアプリケーションでは使用してはなりません

このガイドでは、非推奨となった変換方法について説明します。新しい推奨方法に関するガイドは、Python チュートリアルに記載されています。

このチュートリアルでは、CRNN モデルを OpenVINO 中間表現 (IR) に変換する方法について説明します。

TensorFlow CRNN モデル実装の公開バージョンが GitHub で入手できます。このチュートリアルでは、モデルを CRNN Tensorflow リポジトリーから IR に変換する方法について説明します。Python 3.7、TensorFlow 1.15.0、および protobuf 3.19.0 で検証されています。別の CRNN モデルの実装がある場合は、同様の方法で OpenVINO IR に変換できます。推論グラフを取得し、そのモデル変換を実行する必要があります。

モデルを IR に変換するには:

ステップ 1. この GitHub リポジトリーのクローンを作成し、コミットをチェックアウトします。

  1. リポジトリーのクローンを作成します。

    git clone https://github.com/MaybeShewill-CV/CRNN_Tensorflow.git
    
  2. クローン化されたリポジトリーの CRNN_Tensorflow ディレクトリーに移動します。

    cd path/to/CRNN_Tensorflow
    
  3. 必要なコミットを確認してください。

    git checkout 64f1f1867bffaacfeacc7a80eebf5834a5726122
    

ステップ 2. このリポジトリーで提供されるフレームワーク、または事前トレーニング済みチェックポイントを使用してモデルをトレーニングします。

ステップ 3. 推論グラフを作成します。

  1. CRNN_Tensorflow フォルダーを PYTHONPATH に追加します。

    • Linux*:

      export PYTHONPATH="${PYTHONPATH}:/path/to/CRNN_Tensorflow/"
      
    • Windows* の場合、PYTHONPATH 環境変数に /path/to/CRNN_Tensorflow/ を追加します。

  2. tools/demo_shadownet.py スクリプトを編集します。saver.restore(sess=sess, save_path=weights_path) 行の後に、次のコードを追加します。

    from tensorflow.python.framework import graph_io
    frozen = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['shadow/LSTMLayers/transpose_time_major'])
    graph_io.write_graph(frozen, '.', 'frozen_graph.pb', as_text=False)
    
  3. 次のコマンドを使用してデモを実行します。

    python tools/demo_shadownet.py --image_path data/test_images/test_01.jpg --weights_path model/shadownet/shadownet_2017-10-17-11-47-46.ckpt-199999
    

    チェックポイントを使用する場合、--weights_pathh パラメーターのパスをチェックポイントへのパスに置き換えます。

  4. CRNN_Tensorflow ディレクトリーに、推論 CRNN グラフ frozen_graph.pb があります。このグラフを OpenVINO で使用してモデルを IR に変換し、推論を実行できます。

ステップ 4. モデルを IR に変換します。

mo --input_model path/to/your/CRNN_Tensorflow/frozen_graph.pb