如何将TensorImage数组或单个TensorImage缓冲区输入到tensorflow lite模型中?

时间:2020-03-22 16:38:00

标签: java android android-studio tensorflow tensorflow-lite

信息

从keras转换了一个简单的模型,该模型将输入 N张图像并输出M张图像。从Android应用程序(java)中,我将图像作为位图加载,并将位图转换为TensorImages,然后将它们合并为 TensorImage数组

案例1

inputArray tflite.run(inputArray, outputArray)时,尝试使用TensorImage inputArray[] = new TensorImage[]{tensorImage1, tensorImage2, tensorImage3}将TensorImage数组输入模型时,会导致以下DataType错误:DataType error: cannot resolve DataType of org.tensorflow.lite.support.image.TensorImage,我认为有与输入缓冲区限制有关。

案例2

尝试使用tflite.run(tensorImage1.getBuffer(), output.getBuffer())输入单个TensorImage的缓冲区会导致非法参数异常:IllegalArgumentException: Both buffer and bitmap data are obsolete.

情况3

将输出更改为TensorBuffer并创建一个float32缓冲区,如下所示:TensorBuffer result = TensorBuffer.createFixedSize(new int[]{1, 1, 10}, DataType.FLOAT32)由于模型应用于单个图像(尽管它提供了输出),因此无法正常工作。

问题

那么应该如何将图像作为tflite模型的输入?

0 个答案:

没有答案