flutter_tflite
flutter_tflite copied to clipboard
PlaftformException even after loading model
I have loaded model with Tflite.loadModel method and then after success Tflite.runModelOnFrame.
@override
void initState() {
super.initState();
// To display the current output from the camera,
// create a CameraController.
_controller = CameraController(
// Get a specific camera from the list of available cameras.
widget.camera,
// Define the resolution to use.
ResolutionPreset.medium,
);
_loadModel();
// Next, initialize the controller. This returns a Future.
_initializeControllerFuture = _controller.initialize().then((value) {
_controller.startImageStream((image) {
if (!_modelLoaded || !_detect) {
return;
}
try {
_startProcessing(image);
} catch (e) {}
});
});
}
_loadModel() async {
final res = await Tflite.loadModel(
model: "assets/models/car_detection/model_unquant.tflite",
labels: "assets/models/car_detection/labels.txt",
numThreads: 5, // defaults to 1
isAsset: true, // defaults to
);
print(res);
setState(() {
_modelLoaded = true;
});
}
_startProcessing(CameraImage image) async {
try {
Tflite.runModelOnFrame(
bytesList: image.planes.map((plane) {
return plane.bytes;
}).toList(),
imageHeight: image.height,
imageWidth: image.width,
numResults: 1,
asynch: true,
threshold: 0.5,
).then((value) => print(value));
} on PlatformException {}
}
I get below errors:
Error 1 /MethodChannel#tflite(29734): Failed to handle method call E/MethodChannel#tflite(29734): java.lang.IllegalArgumentException: Unsupported value: java.lang.RuntimeException: Interpreter busy E/MethodChannel#tflite(29734): at io.flutter.plugin.common.StandardMessageCodec.writeValue(StandardMessageCodec.java:278) E/MethodChannel#tflite(29734): at io.flutter.plugin.common.StandardMethodCodec.encodeErrorEnvelope(StandardMethodCodec.java:69) E/MethodChannel#tflite(29734): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.error(MethodChannel.java:236) E/MethodChannel#tflite(29734): at sq.flutter.tflite.TflitePlugin.onMethodCall(TflitePlugin.java:114) E/MethodChannel#tflite(29734): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:226) E/MethodChannel#tflite(29734): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85) E/MethodChannel#tflite(29734): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:631) E/MethodChannel#tflite(29734): at android.os.MessageQueue.nativePollOnce(Native Method) E/MethodChannel#tflite(29734): at android.os.MessageQueue.next(MessageQueue.java:336) E/MethodChannel#tflite(29734): at android.os.Looper.loop(Looper.java:174) E/MethodChannel#tflite(29734): at android.app.ActivityThread.main(ActivityThread.java:7356) E/MethodChannel#tflite(29734): at java.lang.reflect.Method.invoke(Native Method) E/MethodChannel#tflite(29734): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) E/MethodChannel#tflite(29734): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) W/System (29734): A resource failed to call destroy.
Error 2
E/flutter (29734): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(error, Unsupported value: java.lang.RuntimeException: Interpreter busy, null)
E/flutter (29734): #0 StandardMethodCodec.decodeEnvelope
package:flutter/…/services/message_codecs.dart:569
E/flutter (29734): #1 MethodChannel._invokeMethod
package:flutter/…/services/platform_channel.dart:156
E/flutter (29734):
i was getting the same error. type in flutter run on the console and make sure your model it's loaded
@innerk Yes. I tried same earlier following one of the issue. My model loading returns success using Tflite.loadModel as mentioned in above code but no luck yet.
I have same issue. Here's my code
const IMAGE_MEAN = 127.5;
const IMAGE_STD = 127.5;
void runTfLiteTest(BuildContext context) async {
String res = await Tflite.loadModel(
model: "assets/tflite/deeplabv3_257_mv_gpu.tflite",
labels: "assets/tflite/labels.txt",
numThreads: 1,
isAsset: true,
useGpuDelegate: true
);
print("Model loaded $res"); //prints success
var result = await Tflite.runSegmentationOnImage( //crash on this line
path: "assets/tflite/256_test_0.png",
imageMean: IMAGE_MEAN,
imageStd: IMAGE_STD,
outputType: "png",
asynch: true
);
print(result);
}
And stacktrace:
E/flutter (27066): [ERROR:flutter/shell/common/shell.cc(213)] Dart Error: Unhandled exception:
E/flutter (27066): PlatformException(error, Unsupported value: java.lang.RuntimeException: Interpreter busy, null)
E/flutter (27066): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter (27066): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:156:18)
E/flutter (27066): <asynchronous suspension>
E/flutter (27066): #2 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:329:12)
E/flutter (27066): #3 Tflite.runSegmentationOnImage (package:tflite/tflite.dart:288:27)
E/flutter (27066): #4 runTfLiteTest (package:sticked/tflite_test.dart:27:29)
E/flutter (27066): <asynchronous suspension>
E/flutter (27066): #5 _StickersEmptyScreenState.build (package:sticked/feature/sticker/stickers_empty_ui.dart:33:5)
E/flutter (27066): #6 StatefulElement.build (package:flutter/src/widgets/framework.dart:4619:28)
E/flutter (27066): #7 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4502:15)
E/flutter (27066): #8 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4675:11)
E/flutter (27066): #9 Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (27066): #10 StatefulElement.update (package:flutter/src/widgets/framework.dart:4707:5)
E/flutter (27066): #11 Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (27066): #12 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (27066): #13 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4675:11)
E/flutter (27066): #14 Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (27066): #15 StatefulElement.update (package:flutter/src/widgets/framework.dart:4707:5)
E/flutter (27066): #16 Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (27066): #17 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5837:14)
E/flutter (27066): #18 Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (27066): #19 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (27066): #20 Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (27066): #21 StatelessElement.update (package:flutter/src/widgets/framework.dart:4583:5)
E/flutter (27066): #22 Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (27066): #23 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5837:14)
E/flutter (27066): #24 Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (27066): #25 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5837:14)
E/flutter (27066): #26 Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (27066): #27 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (27066): #28 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4675:11)
E/flutter (27066): #29 Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (27066): #30 StatefulElement.update (package:flutter/src/widgets/framework.dart:4707:5)
E/flutter (27066): #31 Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (27066): #32 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5837:14)
E/flutter (27066): #33 Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (27066): #34 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5837:14)
E/flutter (27066): #35 Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (27066): #36 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (27066): #37 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4675:11)
E/flutter (27066): #38 Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (27066): #39 StatefulElement.update (package:flutter/src/widgets/framework.dart:4707:5)
E/flutter (27066): #40 Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (27066): #41 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (27066): #42 Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (27066): #43 StatelessElement.update (package:flutter/src/widgets/framework.dart:4583:5)
E/flutter (27066): #44 Element.updateChild (packa
I have loaded model with Tflite.loadModel method and then after success Tflite.runModelOnFrame.
@override void initState() { super.initState(); // To display the current output from the camera, // create a CameraController. _controller = CameraController( // Get a specific camera from the list of available cameras. widget.camera, // Define the resolution to use. ResolutionPreset.medium, ); _loadModel(); // Next, initialize the controller. This returns a Future. _initializeControllerFuture = _controller.initialize().then((value) { _controller.startImageStream((image) { if (!_modelLoaded || !_detect) { return; } try { _startProcessing(image); } catch (e) {} }); }); } _loadModel() async { final res = await Tflite.loadModel( model: "assets/models/car_detection/model_unquant.tflite", labels: "assets/models/car_detection/labels.txt", numThreads: 5, // defaults to 1 isAsset: true, // defaults to ); print(res); setState(() { _modelLoaded = true; }); } _startProcessing(CameraImage image) async { try { Tflite.runModelOnFrame( bytesList: image.planes.map((plane) { return plane.bytes; }).toList(), imageHeight: image.height, imageWidth: image.width, numResults: 1, asynch: true, threshold: 0.5, ).then((value) => print(value)); } on PlatformException {} }
I get below errors:
Error 1 /MethodChannel#tflite(29734): Failed to handle method call E/MethodChannel#tflite(29734): java.lang.IllegalArgumentException: Unsupported value: java.lang.RuntimeException: Interpreter busy E/MethodChannel#tflite(29734): at io.flutter.plugin.common.StandardMessageCodec.writeValue(StandardMessageCodec.java:278) E/MethodChannel#tflite(29734): at io.flutter.plugin.common.StandardMethodCodec.encodeErrorEnvelope(StandardMethodCodec.java:69) E/MethodChannel#tflite(29734): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.error(MethodChannel.java:236) E/MethodChannel#tflite(29734): at sq.flutter.tflite.TflitePlugin.onMethodCall(TflitePlugin.java:114) E/MethodChannel#tflite(29734): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:226) E/MethodChannel#tflite(29734): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85) E/MethodChannel#tflite(29734): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:631) E/MethodChannel#tflite(29734): at android.os.MessageQueue.nativePollOnce(Native Method) E/MethodChannel#tflite(29734): at android.os.MessageQueue.next(MessageQueue.java:336) E/MethodChannel#tflite(29734): at android.os.Looper.loop(Looper.java:174) E/MethodChannel#tflite(29734): at android.app.ActivityThread.main(ActivityThread.java:7356) E/MethodChannel#tflite(29734): at java.lang.reflect.Method.invoke(Native Method) E/MethodChannel#tflite(29734): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) E/MethodChannel#tflite(29734): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) W/System (29734): A resource failed to call destroy.
Error 2 E/flutter (29734): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(error, Unsupported value: java.lang.RuntimeException: Interpreter busy, null) E/flutter (29734): #0 StandardMethodCodec.decodeEnvelope package:flutter/…/services/message_codecs.dart:569 E/flutter (29734): #1 MethodChannel._invokeMethod package:flutter/…/services/platform_channel.dart:156 E/flutter (29734): E/flutter (29734): #2 MethodChannel.invokeMethod package:flutter/…/services/platform_channel.dart:329 E/flutter (29734): #3 Tflite.runModelOnFrame package:tflite/tflite.dart:73 E/flutter (29734): #4 _CameraScreenState._startProcessing package:ai_model/camera.dart:63 E/flutter (29734): #5 _CameraScreenState.initState.. package:ai_model/camera.dart:41 E/flutter (29734): #6 CameraController.startImageStream. package:camera/camera.dart:412 E/flutter (29734): #7 _rootRunUnary (dart:async/zone.dart:1192:38) E/flutter (29734): #8 _CustomZone.runUnary (dart:async/zone.dart:1085:19) E/flutter (29734): #9 _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7) E/flutter (29734): #10 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11) E/flutter (29734): #11 _DelayedData.perform (dart:async/stream_impl.dart:594:14) E/flutter (29734): #12 _StreamImplEvents.handleNext (dart:async/stream_impl.dart:710:11) E/flutter (29734): #13 _PendingEvents.schedule. (dart:async/stream_impl.dart:670:7) E/flutter (29734): #14 _rootRun (dart:async/zone.dart:1180:38) E/flutter (29734): #15 _CustomZone.run (dart:async/zone.dart:1077:19) E/flutter (29734): #16 _CustomZone.runGuarded (dart:async/zone.dart:979:7) E/flutter (29734): #17 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:1019:23) E/flutter (29734): #18 _rootRun (dart:async/zone.dart:1184:13) E/flutter (29734): #19 _CustomZone.run (dart:async/zone.dart:1077:19) E/flutter (29734): #20 _CustomZone.runGuarded (dart:async/zone.dart:979:7) E/flutter (29734): #21 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:1019:23) E/flutter (29734): #22 _microtaskLoop (dart:async/schedule_microtask.dart:43:21) E/flutter (29734): #23 _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5) E/flutter (29734):
Hi dear i face the same issue i solved by adding the following lines to my android/app/build.gradle aaptOptions { noCompress 'tflite' noCompress 'lite' }
@aditya21 have you found any solution?
somebody found any solution for this problem ?
Same issue is on my side too,
Same issue is on my side too,
my code is running fine but result are not damn sure
Use Hawaii ml kit or google ml kit segmentation .
On Wed, Jan 4, 2023, 3:39 PM Vikas Sharma @.***> wrote:
Same issue is on my side too,
my code is running fine but result are not damn sure
— Reply to this email directly, view it on GitHub https://github.com/shaqian/flutter_tflite/issues/125#issuecomment-1370758252, or unsubscribe https://github.com/notifications/unsubscribe-auth/AVWX46OL7F7OGUHNXQZDCY3WQVHOLANCNFSM4N2BMNCA . You are receiving this because you commented.Message ID: @.***>
setting a flag isDetecting can slove PR
class Camera extends StatefulWidget {
final List<CameraDescription> cameras;
final Callback setRecognitions;
final String model;
const Camera(this.cameras, this.model, this.setRecognitions, {super.key});
@override
State<Camera> createState() => _CameraState();
}
class _CameraState extends State<Camera>
{
late CameraController controller;
bool isDetecting = false;
....
if (!isDetecting) {
isDetecting = true;
Tflite.runModelOnFrame(
bytesList: image.planes.map((plane) {
return plane.bytes;
}).toList(),
imageHeight: image.height,
imageWidth: image.width,
numResults: 1,
asynch: true,
threshold: 0.5,
).then()=>{ isDetecting = false}