String classifyFrame(Bitmap bitmap) {
if (tflite == null) {
Log.e(TAG, "Image classifier has not been initialized; Skipped.");
return "Uninitialized Classifier.";
}
convertBitmapToByteBuffer(bitmap);
// Here's where the magic happens!!!
long startTime = SystemClock.uptimeMillis();
tflite.run(imgData, outData);
long endTime = SystemClock.uptimeMillis();
Log.d(TAG, "Timecost to run model inference: " + Long.toString(endTime - startTime));
// String textToShow = printTopKLabels();
// textToShow = Long.toString(endTime - startTime) + "ms" + textToShow;
String textToShow = "";
return textToShow;
}
01-01 07:45:53.678 7731-7757/android.example.com.tflitecamerademo E/AndroidRuntime: FATAL EXCEPTION: CameraBackground Process: android.example.com.tflitecamerademo, PID: 7731 java.lang.IllegalArgumentException: Invalid handle to Interpreter. at org.tensorflow.lite.NativeInterpreterWrapper.getInputDims(Native Method) at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:82) at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:112) at org.tensorflow.lite.Interpreter.run(Interpreter.java:93) at com.example.android.tflitecamerademo.ImageClassifier.classifyFrame(ImageClassifier.java:111) at com.example.android.tflitecamerademo.Camera2BasicFragment.classifyFrame(Camera2BasicFragment.java:666) at com.example.android.tflitecamerademo.Camera2BasicFragment.access$900(Camera2BasicFragment.java:71) at com.example.android.tflitecamerademo.Camera2BasicFragment$5.run(Camera2BasicFragment.java:560) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.os.HandlerThread.run(HandlerThread.java:61)import tensorflow as tf
import tempfileimport subprocess
tf.contrib.lite.tempfile = tempfiletf.contrib.lite.subprocess = subprocess
tf.reset_default_graph()eval_graph = tf.Graph()
config = tf.ConfigProto()config.gpu_options.allow_growth = True
with eval_graph.as_default() as g, tf.Session(config=config, graph=eval_graph) as sess: tf.saved_model.loader.load(sess, [tf.saved_model.tag_constants.SERVING], "models") inputs = g.get_tensor_by_name("inputs:0") outputs = g.get_tensor_by_name("outputs:0")
tflite_model = tf.contrib.lite.toco_convert(sess.graph_def, [inputs], [outputs]) open("test.tflite", "wb").write(tflite_model)