【发布时间】:2020-12-12 19:01:00
【问题描述】:
我在颤振中使用 tflite 时遇到了困难
问题是应用程序无法加载模型,但我确实在 pubspec.yaml 文件中提到了资产,而且我确实正确拼写了模型名称和标签文本,但我仍然收到错误
Pubspeck.yaml
assets:
- asset/fruit.txt
- asset/model.tflite
- asset/model_unquant.tflite
- asset/labels2.txt
加载模型
loadModel() async {
String res = await Tflite.loadModel(
labels: "asset/labels2.txt",
model: "asset/model_unquant.tflite",
);
print(res);
}
预测
predict(String path) async {
var recognitions = await Tflite.runModelOnImage(
path: path,
threshold: 0.3,
imageMean: 0.0,
imageStd: 255.0,
numResults: 292
);
setState(() {
_recognitions = recognitions;
char = _recognitions[0]["labels"];
item = _recognitions[0];
});
}
追溯
*E/flutter (18543): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: PlatformException(Failed to load model, flutter_assets/asset/model_unquant.tflite, java.io.FileNotFoundException: flutter_assets/asset/model_unquant.tflite*
E/flutter (18543): at android.content.res.AssetManager.nativeOpenAssetFd(Native Method)
E/flutter (18543): at android.content.res.AssetManager.openFd(AssetManager.java:899)
E/flutter (18543): at sq.flutter.tflite.TflitePlugin.loadModel(TflitePlugin.java:207)
E/flutter (18543): at sq.flutter.tflite.TflitePlugin.onMethodCall(TflitePlugin.java:95)
E/flutter (18543): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/flutter (18543): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/flutter (18543): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
E/flutter (18543): at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter (18543): at android.os.MessageQueue.next(MessageQueue.java:336)
E/flutter (18543): at android.os.Looper.loop(Looper.java:197)
E/flutter (18543): at android.app.ActivityThread.main(ActivityThread.java:8107)
E/flutter (18543): at java.lang.reflect.Method.invoke(Native Method)
E/flutter (18543): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
E/flutter (18543): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
E/flutter (18543): , null)
E/flutter (18543): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:582:7)
E/flutter (18543): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:159:18)
E/flutter (18543): <asynchronous suspension>
E/flutter (18543): #2 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:332:12)
E/flutter (18543): #3 Tflite.loadModel (package:tflite/tflite.dart:16:27)
E/flutter (18543): #4 ResPicState.loadModel (package:respic/main.dart:53:31)
E/flutter (18543): #5 ResPicState.initState (package:respic/main.dart:48:5)
E/flutter (18543): #6 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4765:58)
E/flutter (18543): #7 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter (18543): #8 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (18543): #9 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (18543): #10 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (18543): #11 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (18543): #12 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (18543): #13 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18543): #14 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18543): #15 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
E/flutter (18543): #16 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter (18543): #17 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (18543): #18 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (18543): #19 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (18543): #20 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (18543): #21 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (18543): #22 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (18543): #23 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (18543): #24 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (18543): #25 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18543): #26 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18543): #27 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18543): #28 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
E/flutter (18543): #29 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4791:11)
E/flutter (18543): #30 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter (18543): #31 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (18543): #32 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (18543): #33 SingleChildRenderObjec
D/ViewRootImpl@6337ccf[MainActivity](18543): ViewPostIme pointer 0
D/ViewRootImpl@6337ccf[MainActivity](18543): ViewPostIme pointer 1
我不知道是什么导致了这个错误,我也尝试过使用不同版本的 tflite 和不同类型的模型并进行清理,但问题仍然存在。 谢谢阅读, 问候, 肉山
【问题讨论】:
-
你的 build.gradle 中有
aaptOptions { noCompress 'tflite' noCompress 'lite' }吗? -
感谢您的提问,是的,我在 android 下的应用级别 build.gradle 中这样做
-
检查stackoverflow.com/questions/63306627/… .我认为它与TFlite无关
标签: android flutter tensorflow-lite