我已经在AutoML中训练了自己的模型,我已经导出并下载了它。 我已按照此链接(https://cloud.google.com/vision/automl/docs/tflite-android-tutorial?hl=en)中的说明对示例应用程序使用了自己的模型。
我已将示例文件(graph.lite和labels.txt)替换为我的文件,并且更改了上一链接中指示的代码段。
运行应用程序时,出现此异常。
java.nio.BufferOverflowException
,并在此行中显示日志标记错误。
imgData.putFloat ((byte) ((((val >> 16) & 0xFF) -IMAGE_MEAN) / IMAGE_STD));
因此,更改此行
imgData =
ByteBuffer.allocateDirect (
DIM_BATCH_SIZE * DIM_IMG_SIZE_X * DIM_IMG_SIZE_Y * DIM_PIXEL_SIZE);
为此。
imgData =
ByteBuffer.allocateDirect (
4 * DIM_BATCH_SIZE * DIM_IMG_SIZE_X * DIM_IMG_SIZE_Y * DIM_PIXEL_SIZE);
不再崩溃,但现在标记此异常。
无法在307200字节的TensorFlowLite缓冲区和602112字节的ByteBuffer之间进行转换。
并且日志显示错误在这里。
tflite.run (imgData, labelProbArray);
我认为该方法应该是错误,convertBitmapToByteBuffer
,但是我不确定,我已经搜索了有关该错误的信息,但是没有发现任何东西。