我尝试在我的 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,
);
我不知道如何解决这个问题,因为我不明白这个错误。
我从 Teachable Machine 和 VERTEX AI Edge 定制的模型也遇到了同样的问题... 你的问题解决了吗?