Tensorflow: Use categorias retreinadas na demonstração da câmera Android

Criado em 1 ago. 2016  ·  1Comentário  ·  Fonte: tensorflow/tensorflow

Os problemas do GitHub são para bugs/problemas de instalação/solicitações de recursos.
Para obter suporte geral da comunidade, consulte StackOverflow .
Para facilitar a localização e organização de bugs e solicitações de recursos, encerramos os problemas considerados
fora do escopo dos problemas do GitHub e direcionar as pessoas para o StackOverflow.

Para bugs ou problemas de instalação, forneça as seguintes informações.
Quanto mais informações você fornecer, mais facilmente poderemos oferecer
ajuda e conselho.

Informações do ambiente

Sistema operacional: Docker no Windows

Versão instalada de CUDA e cuDNN:
(anexe a saída de ls -l /path/to/cuda/lib/libcud* ):

Se instalado a partir do pacote pip binário, forneça:

  1. Qual pacote pip você instalou.
  2. A saída de python -c "import tensorflow; print(tensorflow.__version__)" .

Se instalado a partir da fonte, forneça

  1. O hash de confirmação ( git rev-parse HEAD )
  2. A saída de bazel version

Passos para reproduzir

  1. Retreinar novos dados com sucesso com o Docker. Obtenha os dois arquivos retreinados retrained_graph.pb e retrained_labels.txt
    https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/index.html?index=..%2F..%2Findex#5
  2. Tente instalar o Bazel no Windows, mas falhou. Mas encontrei uma demonstração do Android que não precisa do Bazel. Este funciona bem no Windows. Ele pode reconhecer imagens em 1000 classes fornecidas pelo ImageNet em uma câmera Android em tempo real.
    https://github.com/miyosuda/TensorFlowAndroidDemo

    O que você tentou?

Referência; https://github.com/tensorflow/tensorflow/issues/1269
Com base nas sugestões, tentei as seguintes coisas:
1. Encontre o coded_stream.h na seção google/protobuf de sua compilação do tensorflow e modifique de 64 para 256 na linha a seguir:
static const int kDefaultTotalBytesLimit = 64 << 20; // Muda os 64 para 256 MB
2. Modifique apenas o input_size para 299 e o image_mean para 128 no TensorflowImageListener.java
3. Vá para tensorflow_jni.cc na demonstração do Android e modifique da seguinte forma:

  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. Faça as seguintes alterações em TensorflowImageListerner.java:
private static final String MODEL_FILE = "file:///android_asset/retrained_graph.pb";
private static final String LABEL_FILE =
"file:///android_asset/retrained_labels.txt";

  1. Construir a demonstração do Android

Logs ou outra saída que seria útil

(Se os logs forem grandes, faça o upload como anexo).
08-01 17:36:50.015 14978-15121/org.tensorflow.tensorflowdemo A/native: jni_utils.cc:107 Falha na verificação: mensagem->ParseFromZeroCopyStream(&adaptor)
08-01 17:36:50.015 14978-15121/org.tensorflow.tensorflowdemo A/libc: Fatal signal 6 (SIGABRT), código -6 no tid 15121 (ImageListener)

Eu sei que isso é um problema devido às variáveis ​​incompatíveis de Inception v3 e Inception 5h. O modelo de demonstração do Android que uso é o Inception 5h, mas o modelo que usei para treinar meus novos dados é o Inception 3v. Eu tentei editar as variáveis ​​mencionadas aqui: https://github.com/tensorflow/tensorflow/issues/1269.
Mas ainda recebo os mesmos erros. Alguém poderia me ajudar a explicar como adaptar meus novos dados treinados rodando no Android Demo?

>Todos os comentários

Esse tipo de pergunta é melhor feita no StackOverflow. Este fórum é para relatórios de bugs e similares. Por favor, faça sua pergunta lá, marcando com 'tensorflow'.

Se você está tendo problemas com o bazel, você pode tentar tensorflow makefile .

Esta página foi útil?
0 / 5 - 0 avaliações