无法在 Flutter 上使用我的自定义模型 Tensor Flow Lite(形状错误)

问题描述 投票:0回答:1

我尝试在我的 flutter 应用程序上使用我的自定义模型。 这是一个使用此自定义模型通过相机实时检测物体的应用程序。

对于我的测试,我使用这个存储库: https://github.com/hiennguyen92/flutter_realtime_object_detection

Yolo、SSDMobileNet、MobileNet、PosetNet 模型运行良好。但是当我添加自定义模型时,我的 flutter 应用程序崩溃并出现以下错误:

E/AndroidRuntime(10367): FATAL EXCEPTION: AsyncTask #1
E/AndroidRuntime(10367): Process: com.hiennv.flutter_realtime_object_detection, PID: 10367
E/AndroidRuntime(10367): java.lang.RuntimeException: An error occurred while executing doInBackground()
E/AndroidRuntime(10367):    at android.os.AsyncTask$4.done(AsyncTask.java:399)
E/AndroidRuntime(10367):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
E/AndroidRuntime(10367):    at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
E/AndroidRuntime(10367):    at java.util.concurrent.FutureTask.run(FutureTask.java:271)
E/AndroidRuntime(10367):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
E/AndroidRuntime(10367):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/AndroidRuntime(10367):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/AndroidRuntime(10367):    at java.lang.Thread.run(Thread.java:929)
E/AndroidRuntime(10367): Caused by: java.lang.IllegalArgumentException: Cannot copy from a TensorFlowLite tensor (TFLite_Detection_PostProcess) with shape [1, 40, 4] to a Java object with shape [1, 16, 16, 55].
E/AndroidRuntime(10367):    at org.tensorflow.lite.TensorImpl.throwIfDstShapeIsIncompatible(TensorImpl.java:456)
E/AndroidRuntime(10367):    at org.tensorflow.lite.TensorImpl.copyTo(TensorImpl.java:215)
E/AndroidRuntime(10367):    at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:250)
E/AndroidRuntime(10367):    at org.tensorflow.lite.InterpreterImpl.runForMultipleInputsOutputs(InterpreterImpl.java:135)
E/AndroidRuntime(10367):    at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:80)
E/AndroidRuntime(10367):    at org.tensorflow.lite.InterpreterImpl.run(InterpreterImpl.java:128)
E/AndroidRuntime(10367):    at org.tensorflow.lite.Interpreter.run(Interpreter.java:80)
E/AndroidRuntime(10367):    at sq.flutter.tflite.TflitePlugin$RunYOLO.runTflite(TflitePlugin.java:759)
E/AndroidRuntime(10367):    at sq.flutter.tflite.TflitePlugin$TfliteTask.doInBackground(TflitePlugin.java:471)
E/AndroidRuntime(10367):    at sq.flutter.tflite.TflitePlugin$TfliteTask.doInBackground(TflitePlugin.java:445)
E/AndroidRuntime(10367):    at android.os.AsyncTask$3.call(AsyncTask.java:378)
E/AndroidRuntime(10367):    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
E/AndroidRuntime(10367):    ... 4 more

我用它来初始化我的自定义模型:

await Tflite.loadModel(
              model: 'assets/models/custom_model.tflite',
              labels: 'assets/models/custom_model.txt');

await Tflite.detectObjectOnFrame(
          bytesList: image.planes.map((plane) {
            return plane.bytes;
          }).toList(),
          model: "CustomModel",
          imageHeight: image.height,
          imageWidth: image.width,
          imageMean: 0,
          imageStd: 255.0,
          threshold: 0.2,
          numResultsPerClass: 1,
        );

我不知道如何解决这个问题,因为我不明白这个错误。

flutter tensorflow tensorflow-lite
1个回答
0
投票

我从 Teachable Machine 和 VERTEX AI Edge 定制的模型也遇到了同样的问题... 你的问题解决了吗?

© www.soinside.com 2019 - 2024. All rights reserved.