Tensorflow: Use categorías reentrenadas en Android Camera Demo

Creado en 1 ago. 2016  ·  1Comentario  ·  Fuente: tensorflow/tensorflow

Los problemas de GitHub son para errores/problemas de instalación/solicitudes de funciones.
Para obtener asistencia general de la comunidad, consulte StackOverflow .
Para que los errores y las solicitudes de funciones sean más fáciles de encontrar y organizar, cerramos los problemas que se consideran
fuera del alcance de los problemas de GitHub y dirija a las personas a StackOverflow.

Para errores o problemas de instalación, proporcione la siguiente información.
Cuanta más información proporcione, más fácilmente podremos ofrecerle
ayuda y consejo.

Información del entorno

Sistema Operativo: Docker en Windows

Versión instalada de CUDA y cuDNN:
(adjunte la salida de ls -l /path/to/cuda/lib/libcud* ):

Si se instala desde el paquete binario pip, proporcione:

  1. Qué paquete pip instaló.
  2. La salida de python -c "import tensorflow; print(tensorflow.__version__)" .

Si se instala desde la fuente, proporcione

  1. El hash de confirmación ( git rev-parse HEAD )
  2. La salida de bazel version

pasos para reproducir

  1. Vuelva a entrenar correctamente los nuevos datos con Docker. Obtenga los dos archivos reentrenados retrained_graph.pb y retrained_labels.txt
    https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/index.html?index=..%2F..%2Findex#5
  2. Intente instalar Bazel en Windows pero falló. Pero encontré una demostración de Android que no necesita Bazel. Este funciona bien en Windows. Puede reconocer imágenes en 1000 clases proporcionadas por ImageNet en una cámara en tiempo real de Android.
    https://github.com/miyosuda/TensorFlowAndroidDemo

    ¿Qué has probado?

Referencia; https://github.com/tensorflow/tensorflow/issues/1269
Según las sugerencias, probé lo siguiente:
1. Busque coded_stream.h en la sección google/protobuf de su compilación de tensorflow y modifique el 64 a 256 en la siguiente línea:
static const int kDefaultTotalBytesLimit = 64 << 20; // Cambiar los 64 a 256 MB
2. Modifique solo input_size a 299 y image_mean a 128 en TensorflowImageListener.java
3. Vaya a tensorflow_jni.cc en la demostración de Android y modifíquelo de la siguiente manera:

  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", tensor_de_entrada}});

std::vectorstd::string output_names({"softmax"});
4. Realice los siguientes cambios en TensorflowImageListerner.java:
Cadena final estática privada MODEL_FILE = "file:///android_asset/retrained_graph.pb";
Cadena final estática privada LABEL_FILE =
"archivo:///android_asset/retrained_labels.txt";

  1. Cree la demostración de Android

Registros u otros resultados que serían útiles

(Si los registros son grandes, cárguelos como archivo adjunto).
08-01 17:36:50.015 14978-15121/org.tensorflow.tensorflowdemo A/native: jni_utils.cc:107 Comprobación fallida: mensaje->ParseFromZeroCopyStream(&adaptor)
08-01 17:36:50.015 14978-15121/org.tensorflow.tensorflowdemo A/libc: Señal fatal 6 (SIGABRT), código -6 en tid 15121 (ImageListener)

Sé que esto es un problema debido a las variables incompatibles de Inception v3 e Inception 5h. El modelo de demostración de Android que uso es Inception 5h, pero el modelo que usé para entrenar mis nuevos datos es Inception 3v. Intenté editar las variables mencionadas aquí: https://github.com/tensorflow/tensorflow/issues/1269.
Pero sigo teniendo los mismos errores. ¿Alguien podría ayudarme a explicar cómo adaptar mis nuevos datos entrenados que se ejecutan en la demostración de Android?

>Todos los comentarios

Este tipo de pregunta se hace mejor en StackOverflow. Este foro es para informes de errores y similares. Haga su pregunta allí, etiquetando con 'tensorflow'.

Si tiene problemas con bazel, puede probar el makefile de tensorflow .

¿Fue útil esta página
0 / 5 - 0 calificaciones