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

See*_*ing 9 android tensorflow tensorflow-lite

Tensorflow-Lite Android演示版可与其提供的原始模型配合使用:mobilenet_quant_v1_224.tflite.请参阅:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite

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

不过,我下载了一些较小的型号,从上面的链接,例如,mobilenet_v1_0.25_224.tflite,以及与此模型演示程序仅通过改变取代了原来的模型MODEL_PATH = "mobilenet_v1_0.25_224.tflite";ImageClassifier.java.该应用程序崩溃:

12-11 12:52:34.222 17713-17729 /?E/AndroidRuntime:FATAL EXCEPTION:CameraBackground进程:android.example.com.tflitecamerademo,PID:17713 java.lang.IllegalArgumentException:无法获取输入维度.第0个输入应该有602112个字节,但是找到150528个字节.在org.tensorflow.lite.NativeInterpreterWrapper.getInputDims(本机方法)在org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:82)在org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:112)在组织.tensorflow.lite.Interpreter.run(Interpreter.java:93)在com.example.android.tflitecamerademo.ImageClassifier.classifyFrame(ImageClassifier.java:108)在com.example.android.tflitecamerademo.Camera2BasicFragment.classifyFrame(Camera2BasicFragment.java :663)在com.example.android.tflitecamerademo.Camera2BasicFragment.access $ 900(Camera2BasicFragment.java:69)在com.example.android.tflitecamerademo.Camera2BasicFragment $ 5.run(Camera2BasicFragment.java:558)在android.os.Handler. handleCallback(Handler.java:751)位于android.os.HandlerThread.run(HandlerThread.java)的android.os.Handler.dispatchMessage(Handler.java:95)android.os.Looper.loop(Looper.java:154) :61)

原因似乎是模型所需的输入尺寸是图像尺寸的四倍.所以我修改DIM_BATCH_SIZE = 1DIM_BATCH_SIZE = 4.现在的错误是:

致命异常:CameraBackground工艺:android.example.com.tflitecamerademo,PID:18241 java.lang.IllegalArgumentException异常:不能与FLOAT32类型转换的TensorFlowLite张量类型的Java对象[[B(其是与TensorFlowLite类型UINT8兼容)在org.tensorflow.lite.Tensor.copyTo(Tensor.java:36)在org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:122)在org.tensorflow.lite.Interpreter.run(Interpreter.java:93 )在com.example.andfl.Cfl/2中,com.example.andin.Bilic文件中,com.example.andis.Ffl.cfl.获得$ 900在android.os.Handler(Camera2BasicFragment.java:69)在com.example.android.tflitecamerademo.Camera2BasicFragment $ 5.run(Camera2BasicFragment.java:558)在android.os.Handler.handleCallback(Handler.java:751) android.os.Loop上的.dispatchMessage(Handler.java:95)er.loop(Looper.java:154)在android.os.HandlerThread.run(HandlerThread.java:61)

我的问题是如何使用简化的MobileNet tflite模型来使用TF-lite Android Demo.

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

Ash*_*tch 4

Tensorflow-Lite Android 演示中包含的 ImageClassifier.java 需要一个量化模型。截至目前,仅以量化形式提供一种 Mobilenets 模型:Mobilenet 1.0 224 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

进行比较,您会发现实现中有几个重要的差异。

另一个需要考虑的选择是使用 TOCO 将浮点模型转换为量化: https: //github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/toco/g3doc/cmdline_examples.md