【问题标题】:Tensorflow for Android安卓版张量流
【发布时间】:2017-08-12 19:50:18
【问题描述】:

我正在尝试创建一个使用 tensorflow 进行对象分类的 android 应用程序。我已经使用 MobileNet-SSD 训练了一个简单的模型。我根据here 给出的指导线创建了应用程序。它适用于该示例中使用的模型,但是对于我创建的模型,它给了我以下错误:

Caused by: java.lang.RuntimeException: Node 'output' does not exist in model 'file:///android_asset/ssd_mobilenet_2classes.pb'
     at org.tensorflow.contrib.android.TensorFlowInferenceInterface.graphOperation(TensorFlowInferenceInterface.java:173)
     at com.mindorks.tensorflowexample.TensorFlowImageClassifier.create(TensorFlowImageClassifier.java:111)

尝试执行以下代码时出现异常:

classifier = TensorFlowImageClassifier.create(
                                    getAssets(),
                                    MODEL_FILE,
                                    LABEL_FILE,
                                    INPUT_SIZE,
                                    IMAGE_MEAN,
                                    IMAGE_STD,
                                    "input",
                                    "output");

但是当我使用 tensorflow object detection tutorial 测试模型时,它运行良好。

有人可以帮我解决这个问题吗?

谢谢。

【问题讨论】:

  • 你将模型文件放在项目中的什么位置?
  • 在 assets 文件夹中,就像示例模型的放置方式一样。
  • 确保文件名与代码中的一样。我猜你犯了一些拼写错误或资产文件夹在错误的位置。你能展示一下项目结构吗?

标签: java android tensorflow deep-learning


【解决方案1】:

每个 TensorFlow 模型都对计算图进行编码。输入和输出可以通过图中节点的名称来识别。在这种特殊情况下,错误消息表明您正在加载的模型中没有名为 output 的节点,因此出现了错误。

这个名字is coming from the last argument to TensorFlowImageClassifier.create在你上面的sn-p中。

此外,您提到的 Android 示例对完整图像进行分类。

另一方面,object detection python notebook 建议您希望加载的模型检测图像中的多个对象,并在名为 detection_scores 的张量中为每个检测到的对象提供分数。

因此,在将various constants 更新为与您创建的模型匹配的值之后,您可能希望从 TensorFlow android 示例中的“多个对象”检测示例 (TensorFlowMultiBoxDetector class) 中获得灵感。

希望对您有所帮助。

【讨论】:

  • 是的,那是我犯的错误,我应该遵循对象检测方法而不是分类。谢谢你的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
  • 2016-12-23
  • 1970-01-01
  • 2021-02-03
  • 2018-06-10
相关资源
最近更新 更多