diff options
Diffstat (limited to 'tensorflow/examples/android/src/org/tensorflow/demo/TensorflowClassifier.java')
-rw-r--r-- | tensorflow/examples/android/src/org/tensorflow/demo/TensorflowClassifier.java | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/tensorflow/examples/android/src/org/tensorflow/demo/TensorflowClassifier.java b/tensorflow/examples/android/src/org/tensorflow/demo/TensorflowClassifier.java new file mode 100644 index 0000000000..84a7596ecb --- /dev/null +++ b/tensorflow/examples/android/src/org/tensorflow/demo/TensorflowClassifier.java @@ -0,0 +1,62 @@ +package org.tensorflow.demo; + +import android.content.res.AssetManager; +import android.graphics.Bitmap; +import android.util.Log; + +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +/** + * JNI wrapper class for the Tensorflow native code. + */ +public class TensorflowClassifier implements Classifier { + private static final String TAG = "TensorflowClassifier"; + + // jni native methods. + public native int initializeTensorflow( + AssetManager assetManager, + String model, + String labels, + int numClasses, + int inputSize, + int imageMean); + + private native String classifyImageBmp(Bitmap bitmap); + + private native String classifyImageRgb(int[] output, int width, int height); + + static { + System.loadLibrary("tensorflow_demo"); + } + + @Override + public List<Recognition> recognizeImage(final Bitmap bitmap) { + final ArrayList<Recognition> recognitions = new ArrayList<Recognition>(); + for (final String result : classifyImageBmp(bitmap).split("\n")) { + Log.i(TAG, "Parsing [" + result + "]"); + + // Clean up the string as needed + final StringTokenizer st = new StringTokenizer(result); + if (!st.hasMoreTokens()) { + continue; + } + + final String id = st.nextToken(); + final String confidenceString = st.nextToken(); + final float confidence = Float.parseFloat(confidenceString); + + final String title = + result.substring(id.length() + confidenceString.length() + 2, result.length()); + + if (!title.isEmpty()) { + recognitions.add(new Recognition(id, title, confidence, null)); + } + } + return recognitions; + } + + @Override + public void close() {} +} |