首页 > 解决方案 > 使用 tflite 插件将 TFLITE 自定义模型与颤振集成时遇到问题

问题描述

我使用 Keras 构建了一个自定义模型并将其转换为 TFLITE 模型。CNN 模型的输入形状为 60*60*3,因此数据类型为 int,所需的缓冲区为 60*60*3*4=43200。现在在使用函数将模型与Flutter集成时-

    recognitions = await Tflite.runModelOnImage(
          path: widget.imagePath,
          imageMean: 127.5,
          imageStd: 127.5,
          numResults: 2,
          threshold: 0.1,
          asynch: true);
      print(recognitions);
    } 

我收到了这个错误-

    E/AndroidRuntime(21412): Caused by: java.lang.IllegalArgumentException: Cannot convert between a TensorFlowLite buffer with 21600 bytes and a Java Buffer with 43200 bytes.
E/AndroidRuntime(21412):    at org.tensorflow.lite.Tensor.throwIfShapeIsIncompatible(Tensor.java:332)
E/AndroidRuntime(21412):    at org.tensorflow.lite.Tensor.throwIfDataIsIncompatible(Tensor.java:305)
E/AndroidRuntime(21412):    at org.tensorflow.lite.Tensor.setTo(Tensor.java:123)
E/AndroidRuntime(21412):    at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:150)
E/AndroidRuntime(21412):    at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:311)
E/AndroidRuntime(21412):    at org.tensorflow.lite.Interpreter.run(Interpreter.java:272)
E/AndroidRuntime(21412):    at sq.flutter.tflite.TflitePlugin$RunModelOnImage.runTflite(TflitePlugin.java:452)
E/AndroidRuntime(21412):    at sq.flutter.tflite.TflitePlugin$TfliteTask.doInBackground(TflitePlugin.java:419)
E/AndroidRuntime(21412):    at sq.flutter.tflite.TflitePlugin$TfliteTask.doInBackground(TflitePlugin.java:393)
E/AndroidRuntime(21412):    at android.os.AsyncTask$2.call(AsyncTask.java:333)
E/AndroidRuntime(21412):    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
E/AndroidRuntime(21412):    ... 4 more

关于如何解决此错误的任何建议?

标签: flutterdarttensorflow-lite

解决方案


推荐阅读