Tensorflow: Androidカメラデモで再トレーニングされたカテゴリを使用する

作成日 2016年08月01日  ·  1コメント  ·  ソース: tensorflow/tensorflow

GitHubの問題は、バグ/インストールの問題/機能のリクエストに関するものです。
コミュニティからの一般的なサポートについては、 StackOverflowを参照してください。
バグや機能のリクエストを見つけて整理しやすくするために、みなされた問題をクローズします
GitHubの問題の範囲外であり、StackOverflowをユーザーに示します。

バグやインストールの問題については、次の情報を提供してください。
あなたが提供する情報が多ければ多いほど、私たちはより簡単に提供できるようになります
ヘルプとアドバイス。

環境情報

オペレーティングシステム:Windows上のDocker

インストールされているバージョンのCUDAとcuDNN:
ls -l /path/to/cuda/lib/libcud*の出力を添付してください):

バイナリpipパッケージからインストールする場合は、以下を提供します。

  1. インストールしたpipパッケージ。
  2. python -c "import tensorflow; print(tensorflow.__version__)"からの出力。

ソースからインストールする場合は、

  1. コミットハッシュ( git rev-parse HEAD
  2. bazel versionの出力

再現する手順

  1. Dockerを使用して新しいデータを正常に再トレーニングします。 再トレーニングされた2つのファイルretrained_graph.pbとretrained_labels.txtを取得します
    https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/index.html?index=..%2F..%2Findex#5
  2. WindowsにBazelをインストールしようとしましたが、失敗しました。 しかし、私はBazelを必要としないAndroidデモを見つけました。 これはWindowsでうまく機能します。 AndroidのリアルタイムカメラでImageNetが提供する1000のクラスに画像を認識できます。
    https://github.com/miyosuda/TensorFlowAndroidDemo

    何を試しましたか?

リファレンス; https://github.com/tensorflow/tensorflow/issues/1269
提案に基づいて、私は次のことを試みました:
1.テンソルフロービルドのgoogle/protobufセクションでcoded_stream.hを見つけ、次の行で64を256に変更します。
static const int kDefaultTotalBytesLimit = 64 << 20; //64を256MBに変更します
2. TensorflowImageListener.javaでinput_sizeのみを299に、image_meanのみを128に変更します。
3. androidデモのtensorflow_jni.ccに移動し、次のように変更します。

  input_tensor_mapped(0, i, j, 0) =
      (static_cast<float>(src->red) - g_image_mean)/g_image_mean;
  input_tensor_mapped(0, i, j, 1) =
      (static_cast<float>(src->green) - g_image_mean)/g_image_mean;
  input_tensor_mapped(0, i, j, 2) =
      (static_cast<float>(src->blue) - g_image_mean)/g_image_mean;
  ++src;

std :: vector <:pair i = "47">> input_tensors(
{{"Mul"、input_tensor}});

std :: vectorstd :: string output_names({"softmax"});
4.TensorflowImageListerner.javaで次の変更を行います。
private static final String MODEL_FILE = "file:///android_asset/retrained_graph.pb";
プライベート静的最終文字列LABEL_FILE=
"file:///android_asset/retrained_labels.txt";

  1. Androidデモをビルドする

役立つログまたはその他の出力

(ログが大きい場合は、添付ファイルとしてアップロードしてください)。
08-01 17:36:50.015 14978-15121 / org.tensorflow.tensorflowdemo A / native:jni_utils.cc:107チェックに失敗しました:message-> ParseFromZeroCopyStream(&adaptor)
08-01 17:36:50.015 14978-15121 / org.tensorflow.tensorflowdemo A / libc:致命的なシグナル6(SIGABRT)、tid 15121のコード-6(ImageListener)

これは、Inceptionv3とInception5hの互換性のない変数が原因で問題になることを私は知っています。 私が使用しているAndroidデモモデルはInception5hですが、新しいデータのトレーニングに使用したモデルはInception3vです。 ここに記載されている変数を編集しようとしました: https://github.com/tensorflow/tensorflow/issues/1269。
しかし、それでも同じエラーが発生します。 Androidデモで実行されている新しいトレーニング済みデータを適応させる方法を説明するのを手伝ってくれる人はいますか?

>すべてのコメント

この種の質問は、StackOverflowでよく尋ねられます。 このフォーラムは、バグレポートなどを対象としています。 「tensorflow」でタグ付けして、そこで質問してください。

bazelで問題が発生した場合は、 tensorflowmakefileを試してみてください。

このページは役に立ちましたか?
0 / 5 - 0 評価