error ->错误图片
当我尝试处理我的模型时,我有一个错误"java.lang.IncompatibleClassChangeError:找到接口org.tensorflow.lite。张量,但类是预期的">
我有一个我训练的mobilenet tflite模型,我创建了一个函数来将位图转换为字节缓冲,我试图处理我的模型,但我有这个错误,我不能解决它,你能帮我解决这个问题吗?
错误在这一行"val output = model.process(inputFeature0)">
outputgenerator函数代码的一部分——>您可以单击并查看导致此错误的行
val byteBuffer = convertBitmapToByteBuffer(bitmap)
byteBuffer!!.rewind()
bitmap.copyPixelsToBuffer(byteBuffer)
val inputFeature0 =
TensorBuffer.createFixedSize(intArrayOf(1, 224, 224, 3), DataType.FLOAT32)
inputFeature0.loadBuffer(byteBuffer)
val outputs = model.process(inputFeature0)
val outputFeature0 = outputs.outputFeature0AsTensorBuffer
convertBitmapToByteBuffer函数
val byteBuffer =
ByteBuffer.allocateDirect( 4 * 1 * 224 * 224 * 3)
byteBuffer.order(ByteOrder.nativeOrder())
val intValues = IntArray(224 * 224 )
bitmap.getPixels(intValues, 0, bitmap.width, 0, 0, bitmap.width, bitmap.height)
var pixel = 0
for (i in 0 until 224) {
for (j in 0 until 224) {
val `val` = intValues[pixel++]
byteBuffer.putFloat(((`val` shr 16 and 0xFF) - 1) / 255.0f)
byteBuffer.putFloat(((`val` shr 8 and 0xFF) - 1) / 255.0f)
byteBuffer.putFloat(((`val` and 0xFF) - 1) / 255.0f)
}
}
return byteBuffer
}
在我的例子中,这与使用旧版本的支持和元数据api有关。
implementation 'org.tensorflow:tensorflow-lite-metadata:0.1.0'
implementation 'org.tensorflow:tensorflow-lite-metadata:0.1.0'
从0.1.0
升级到0.4.3
解决了这个问题。
通常,当您的运行时类路径与编译时类路径不同时,可能会发生这种情况。