【问题标题】:How to pass five sequences of images to tflite model in android如何将五个图像序列传递给android中的tflite模型
【发布时间】:2021-05-30 17:53:32
【问题描述】:

我的 tflite 模型具有输入形状:(5,128,256,3) 并且有 3 个类。

*注意:第一个维度 5 不是批量大小。如果考虑批量大小,则为 (None, 5, 128, 256, 3)

所以现在要在 android 中测试我的模型,我想给它提供 5 张图像。

所以我首先创建了 ByteBuffer 并分配了足够的存储空间,然后将其转换为 FloatBuffer。

val imageBuffer = ByteBuffer.allocateDirect(5 * 256 * 128 * 3 * 4).order(ByteOrder.nativeOrder()).asFloatBuffer()

我已读取图像,完成所有必要的预处理并使用 FloatBuffer 的put 方法将其存储到imageBuffer

现在尝试运行 interpreter.run(imageBuffer, output) 时出现如下所示的错误:

tensorflow/lite/kernels/unpack.cc:67 data->num != input_shape->data[axis] (5 != 128)

【问题讨论】:

  • 很难重现/回答您的问题,因为模型信息存在限制。如果可能,请考虑创建最小且可重复的步骤作为 CoLab 的格式,以获得其他人的帮助。
  • @JaesungChung 基本上该模型接受五张图片而不是一张。恐怕它不能作为 colab 笔记本共享,因为这是我无法使其工作的 Android 问题。在 python 中,一切都按预期工作。

标签: android tensorflow tensorflow-lite


【解决方案1】:

所以我通过简单地调整解释器的大小解决了这个问题

interpreter.resize(5, 128, 256, 3) -> interpreter.resize(1, 5, 128, 256, 3)

所以现在data->num = input_shape->data[axis] 是 5个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    相关资源
    最近更新 更多