简单推理示例 tflite + kotlin

Simple inference example tflite + kotlin

我正在尝试调整 simple example 的 tflite 和 android。

val inputArray = arrayOf(initInputArray(bitmap))
val outputMap = initOutputMap(getInterpreter())
getInterpreter().runForMultipleInputsOutputs(inputArray, outputMap)

因为我的模型只有一个输出。我将 outputMap 更改为 outputArray

val inputArray = arrayOf(initInputArray(bitmap))
val outputArray = Array(1){ Array(height) { Array(width) { FloatArray( channels }}}
getInterpreter().run(inputArray, outputArray)

然而,当将其提供给推理方法时,我得到:

DataType error: cannot resolve DataType of [Ljava.nio.ByteBuffer;

知道出了什么问题吗?

发现错误:

val inputArray = arrayOf(initInputArray(bitmap))

是罪魁祸首。当使用 run 而不是 runForMultipleInputsOutputs 时,这不能是数组!所以将行更改为

val inputArray = initInputArray(bitmap)

修复了问题。

所需数据格式的良好文档会有所帮助...

  • 运行 -> 需要“DirectByteBuffer”作为输入
  • 运行ForMultipleInputsOutputs -> 需要“ByteBuffer”作为输入