Tensorflow: Verwenden Sie neu trainierte Kategorien in der Android-Kamera-Demo

Erstellt am 1. Aug. 2016  ·  1Kommentar  ·  Quelle: tensorflow/tensorflow

GitHub-Probleme beziehen sich auf Fehler / Installationsprobleme / Funktionsanfragen.
Allgemeine Unterstützung durch die Community finden Sie unter StackOverflow .
Damit Fehler und Funktionsanfragen leichter gefunden und organisiert werden können, schließen wir berücksichtigte Probleme
außerhalb des Geltungsbereichs für GitHub-Probleme liegen und Personen auf StackOverflow verweisen.

Bei Fehlern oder Installationsproblemen geben Sie bitte die folgenden Informationen an.
Je mehr Informationen Sie uns zur Verfügung stellen, desto einfacher können wir anbieten
Hilfe und Rat.

Umgebungsinformationen

Betriebssystem: Docker unter Windows

Installierte Version von CUDA und cuDNN:
(Bitte fügen Sie die Ausgabe von ls -l /path/to/cuda/lib/libcud* an):

Wenn aus dem binären Pip-Paket installiert, geben Sie Folgendes an:

  1. Welches Pip-Paket Sie installiert haben.
  2. Die Ausgabe von python -c "import tensorflow; print(tensorflow.__version__)" .

Wenn von der Quelle installiert, stellen Sie bereit

  1. Der Commit-Hash ( git rev-parse HEAD )
  2. Die Ausgabe von bazel version

Schritte zum Reproduzieren

  1. Trainieren Sie erfolgreich neue Daten mit Docker. Holen Sie sich die beiden neu trainierten Dateien retrained_graph.pb und retrained_labels.txt
    https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/index.html?index=..%2F..%2Findex#5
  2. Versuchen Sie, Bazel unter Windows zu installieren, ist jedoch fehlgeschlagen. Aber ich habe eine Android-Demo gefunden, die Bazel nicht benötigt. Dieser funktioniert gut unter Windows. Es kann Bilder in 1000 Klassen erkennen, die von ImageNet in einer Android-Echtzeitkamera bereitgestellt werden.
    https://github.com/miyosuda/TensorFlowAndroidDemo

    Was hast du versucht?

Referenz; https://github.com/tensorflow/tensorflow/issues/1269
Basierend auf den Vorschlägen habe ich folgende Dinge ausprobiert:
1. Suchen Sie die coded_stream.h im Abschnitt google/protobuf Ihres Tensorflow-Builds und ändern Sie die 64 in 256 in der folgenden Zeile:
statische Konstante int kDefaultTotalBytesLimit = 64 << 20; // Ändern Sie die 64 auf 256 MB
2.Ändern Sie in TensorflowImageListener.java nur input_size auf 299 und image_mean auf 128
3. Gehen Sie in der Android-Demo zu tensorflow_jni.cc und ändern Sie wie folgt:

  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. Nehmen Sie die folgenden Änderungen in TensorflowImageListener.java vor:
privater statischer finaler String MODEL_FILE = "file:///android_asset/retrained_graph.pb";
privater statischer abschließender String LABEL_FILE =
"file:///android_asset/retrained_labels.txt";

  1. Erstellen Sie die Android-Demo

Protokolle oder andere Ausgaben, die hilfreich wären

(Wenn die Protokolle groß sind, laden Sie sie bitte als Anhang hoch).
01.08 17:36:50.015 14978-15121/org.tensorflow.tensorflowdemo A/native: jni_utils.cc:107 Prüfung fehlgeschlagen: message->ParseFromZeroCopyStream(&adaptor)
01.08. 17:36:50.015 14978-15121/org.tensorflow.tensorflowdemo A/libc: Schwerwiegendes Signal 6 (SIGABRT), Code -6 in Tid 15121 (ImageListener)

Ich weiß, dass dies ein Problem aufgrund der inkompatiblen Variablen von Inception v3 und Inception 5h ist. Das Android-Demomodell, das ich verwende, ist Inception 5h, aber das Modell, mit dem ich meine neuen Daten trainiert habe, ist Inception 3v. Ich habe versucht, die hier erwähnten Variablen zu bearbeiten: https://github.com/tensorflow/tensorflow/issues/1269.
Aber ich bekomme immer noch die gleichen Fehler. Kann mir jemand erklären, wie ich meine neu trainierten Daten anpassen kann, die in der Android-Demo ausgeführt werden?

>Alle Kommentare

Diese Art von Frage wird besser auf StackOverflow gestellt. Dieses Forum ist für Fehlerberichte und ähnliches gedacht. Bitte stellen Sie Ihre Frage dort und markieren Sie sie mit 'tensorflow'.

Wenn Sie Probleme mit Bazel haben, versuchen Sie es mit tensorflow makefile .

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen