使用我的自定义模型将Edge部署到Android中的例外

时间:2019-12-06 20:55:31

标签: android tensor flow automl

我已经在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,但是我不确定,我已经搜索了有关该错误的信息,但是没有发现任何东西。

0 个答案:

没有答案