Tensorflow: 在 Android Camera Demo 中使用 Retrained 类别

创建于 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 成功地重新训练新数据。 获取retrained_graph.pb和retrained_labels.txt这两个retrained文件
    https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/index.html?index=..%2F..%2Findex#5
  2. 尝试在 Windows 上安装 Bazel,但失败了。 但是我找到了一个不需要 Bazel 的 Android Demo。 这个在 Windows 上运行良好。 它可以在 Android 实时摄像头中将图像识别为 ImageNet 提供的 1000 个类。
    https://github.com/miyosuda/TensorFlowAndroidDemo

    你试过什么?

参考; https://github.com/tensorflow/tensorflow/issues/1269
根据建议,我尝试了以下操作:
1.在 tensorflow 构建的 google/protobuf 部分中找到 coded_stream.h 并将以下行中的 64 修改为 256:
静态常量 int kDefaultTotalBytesLimit = 64 << 20; // 将 64 更改为 256 MB
2.在TensorflowImageListener.java中只修改input_size为299,image_mean为128
3.进入android demo中的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 =
“文件:///android_asset/retrained_labels.txt”;

  1. 构建安卓演示

日志或其他有用的输出

(如果日志很大,请作为附件上传)。
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 (ImageListener) 中的代码 -6

我知道这是由于 Inception v3 和 Inception 5h 的不兼容变量造成的问题。 我使用的 Android Demo 模型是 Inception 5h,但我用来训练我的新数据的模型是 Inception 3v。 我试图编辑这里提到的变量: https://github.com/tensorflow/tensorflow/issues/1269。
但我仍然得到同样的错误。 任何人都可以帮助我解释如何调整我在 Android Demo 中运行的新训练数据?

>所有评论

这类问题最好在 StackOverflow 上提出。 这个论坛是用于错误报告和类似的。 请在那里问你的问题,用“tensorflow”标记。

如果您在使用 bazel 时遇到问题,可以尝试tensorflow makefile

此页面是否有帮助?
0 / 5 - 0 等级