当前位置: 首页 > 知识库问答 >
问题:

TensorFlow-Lite预训练模型在Android演示中不起作用

卫宁
2023-03-14

TensorFlow-Lite Android演示与它提供的原始模型mobileNet_quant_v1_224.tflite一起工作。参见:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite

他们还在这里提供了其他预训练的lite模型:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/g3doc/models.md

但是,我从上面的链接下载了一些较小的模型,例如MobileNet_V1_0.25224.tflite,并在演示应用程序中通过更改ImageClassifier.java中的model_path=“MobileNet_V1_0.25224.tflite”;来替换原始模型。应用程序崩溃的原因是:

12-11 12:52:34.222 177 13-17729/?E/AndroidRuntime:致命异常:CameraBackground进程:Android.example.com.TFLiteCamerademo,pid:17713 java.lang.IllegalArgumentException:无法获取输入维度。第0个输入应为602112字节,但发现为150528字节。在org.tensorflow.lite.nativeInterpreterwraper.getInputDims(原生方法)在org.tensorflow.lite.interpreterwraper.run(NativeInterpreterwraper.82)在org.tensorflow.lite.interpreter.runFormultipleInputsOutputs(interpreter.java:112)在org.tensorflow.liteinterpreter.run(interpreter.java:93)在com.example.android.tflitecamerademo.imageclassifier.classifyFrame(imageclassifier.java:108)在ple.android.TFLiteCamerademo.Camera2BasicFragment.Access$900(Camera2BasicFragment.java:69)在com.example.android.TFLiteCamerademo.Camera2BasicFragment$5。运行(Camera2BasicFragment.java:558)在android.os.handler.HandleCallback(Handler.java:751)在android.os.handler.DispatchMessage(Handler.java:95)在android.os.looper.loop(looper.java:154)在android.os.handlerthread.run(Handlerthread.java:61)

原因似乎是模型所需的输入维度比图像大小大四倍。因此,我将DIM_BATCH_SIZE=1修改DIM_BATCH_SIZE=4。现在的错误是:

致命异常:CameraBackground进程:Android.example.com.TFLiteCamerademo,pid:18241 Java.lang.IllegalArgumentException:无法将类型为FLOAT32的TensorFlowLite张量转换为类型为[[B(与TensorFlow.Lite.tensor.CopyTo(tensor.Java:36)的Java对象(位于org.TensorFlow.Lite.Interpreter.RunFormultipleInputsOutputs(Interpreter.Java:122)的Java对象(位于org.TensorFlow.Lite.Interpreter.Run(Interpreter.Java:93)的Java对象:108)在com.example.android.TFLiteCamerademo.Camera2BasicFragment.ClassifyFrame(Camera2BasicFragment.Java:663)在com.example.android.TFLiteCamerademo.Camera2BasicFragment.访问$900(Camera2BasicFragment.Java:69)在com.example.android.TFLiteCamerademo.Camera2BasicFragment$5.运行(Camera2BasicFragment.Java:558)在android.os.handler.handleCallback(Handler.Java:751)在android.os.handler.DispatchMessage(Handler.Java:95)在android.os.looper.loop(looper.java:154)位于android.os.handlerthread.run(handlerthread.java:61)

我的问题是如何让一个精简的MobileNet tflite模型与TF-lite Android演示一起工作。

(我实际上尝试了其他方法,例如使用提供的工具将TF冻结图转换为TF-lite模型,甚至使用与https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/toco/g3doc/cmdlineexamples.md中完全相同的示例代码,但转换后的tflite模型仍然不能在Android演示中工作。)

共有1个答案

祝俊雄
2023-03-14

Tensorflow-Lite Android演示中包含的ImageClassifier.java期望一个量化模型。到目前为止,只有一个Mobilenets模型是以量化形式提供的:MobileNet1.0224 Quant。

要使用其他浮点模型,可以从Tensorflow for Poets TF-Lite演示源交换ImageClassifier.java。这是为浮点模型编写的。https://github.com/googlecodelabs/tensorflow-for-poets-2/blob/master/android/tflite/app/src/main/java/com/example/android/tfliteCamerademo/imageClassifier.java

做一个diff,您会看到在实现中有几个重要的差异。

另一个可考虑的选项是使用toco:html" target="_blank">https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/toco/g3doc/cmdlineexamples.md将浮点模型转换为量化的

 类似资料:
  • 我们在转换预应变张量流模型时遇到问题,我们将该模型作为以下文件 snapshot_140.ckpt.index snapshot_140.ckpt.meta snapshot_140.ckpt.data-00000-of-00001 当我们使用转换后的tflie文件进行预测时,所有的预测在加载正常的张量流模型时都给出了正确的回归预测 我们得到了上面的这些文件,从ckpt文件到张量流.pb图的转换是

  • 问题内容: 我一直在尝试使用Google发布的经过预先训练的inception_resnet_v2模型。我正在使用他们的模型定义(https://github.com/tensorflow/models/blob/master/slim/nets/inception_resnet_v2.py)和给定的检查点(http://download.tensorflow.org/models/incepti

  • 我使用预先训练好的mobilenet模型构建了Tensorflow Lite演示摄像头应用程序,如所述https://www.tensorflow.org/lite/convert/cmdline_examples. 据我所知,AndroidNNAPI(神经网络api)支持高通六边形数字信号处理器。如果可能的话,我想让Tensorflow Lite的演示应用程序在我手机上的六边形数字信号处理器芯片

  • 错误为: 谁能帮帮我吗?

  • 文章信息 通过本教程,你可以掌握技能:使用预先训练的词向量和卷积神经网络解决一个文本分类问题 本文代码已上传到Github 本文地址:http://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html 本文作者:Francois Chollet 什么是词向量? ”词向量”(词嵌入)是将一类将词的语义映射到向量空间

  • 我希望使用AWS Sagemaker工作流部署一个预训练的模型,用于实时行人和/或车辆检测,我特别想使用Sagemaker Neo编译模型并将其部署在边缘。我想从他们的模型动物园中使用OpenVino的预构建模型之一,但是当我下载模型时,它已经是他们自己的优化器的中间表示(IR)格式。 > 如果没有,是否有任何免费的预训练模型(使用任何流行的框架,如pytorch,tenorflow,ONXX等)