From 613b0fa1917b5d81f1106128efff2cb27ff37590 Mon Sep 17 00:00:00 2001 From: jason Date: Wed, 22 May 2019 18:22:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- .../example/open_nsfw_android/MainActivity.kt | 11 +++++++- .../main/java/com/zwy/nsfw/Classifier.java | 28 +++++++++++++++---- .../java/com/zwy/nsfw/api/NsfwHelper.java | 10 ++++++- 4 files changed, 42 insertions(+), 9 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index dcecd355..25f24431 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -33,7 +33,7 @@ - + diff --git a/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt b/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt index 15b62a3e..0935be95 100644 --- a/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt +++ b/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt @@ -76,7 +76,7 @@ class MainActivity : AppCompatActivity(), View.OnClickListener { } private fun initNsfwHelper() { - nsfwHelper = NsfwHelper.getInstance(this, false, 1) + nsfwHelper = NsfwHelper.getInstance(this, true, 4) } private fun reScFromImgs(list: List) { @@ -117,4 +117,13 @@ class MainActivity : AppCompatActivity(), View.OnClickListener { } } } + + override fun onBackPressed() { + finish() + } + + override fun onDestroy() { + super.onDestroy() + nsfwHelper?.destroy() + } } diff --git a/nsfw/src/main/java/com/zwy/nsfw/Classifier.java b/nsfw/src/main/java/com/zwy/nsfw/Classifier.java index ba3fdd24..f1d13fb8 100644 --- a/nsfw/src/main/java/com/zwy/nsfw/Classifier.java +++ b/nsfw/src/main/java/com/zwy/nsfw/Classifier.java @@ -95,6 +95,25 @@ public class Classifier { } tfliteOptions.setNumThreads(numThreads); tflite = new Interpreter(tfliteModel, tfliteOptions); + + Tensor tensor = tflite.getInputTensor(tflite.getInputIndex("input")); + String stringBuilder = " \n" + +"dataType : " + + tensor.dataType() + + "\n" + + "numBytes : " + + tensor.numBytes() + + "\n" + + "numDimensions : " + + tensor.numDimensions() + + "\n" + + "numElements : " + + tensor.numElements() + + "\n" + + "shape : " + + tensor.shape().length; + Log.d(TAG, stringBuilder); + imgData = ByteBuffer.allocateDirect( DIM_BATCH_SIZE @@ -185,12 +204,6 @@ public class Classifier { long startTime = SystemClock.uptimeMillis(); // out float[][] outArray = new float[1][2]; - Tensor aa = tflite.getInputTensor(tflite.getInputIndex("input")); - Log.d(TAG, "dataType : " + aa.dataType()); - Log.d(TAG, "numBytes : " + aa.numBytes()); - Log.d(TAG, "numDimensions : " + aa.numDimensions()); - Log.d(TAG, "numElements : " + aa.numElements()); - Log.d(TAG, "shape : " + aa.shape().length); Log.d(TAG, "lastImgData : " + imgData); tflite.run(imgData, outArray); long endTime = SystemClock.uptimeMillis(); @@ -206,12 +219,15 @@ public class Classifier { if (tflite != null) { tflite.close(); tflite = null; + Log.d(TAG,"Tensorflow Lite Image Classifier close."); } if (gpuDelegate != null) { gpuDelegate.close(); + Log.d(TAG,"Tensorflow Lite Image gpuDelegate close."); gpuDelegate = null; } tfliteModel = null; + Log.d(TAG,"Tensorflow Lite destroyed."); } } diff --git a/nsfw/src/main/java/com/zwy/nsfw/api/NsfwHelper.java b/nsfw/src/main/java/com/zwy/nsfw/api/NsfwHelper.java index 3b77a5d2..2e94a577 100644 --- a/nsfw/src/main/java/com/zwy/nsfw/api/NsfwHelper.java +++ b/nsfw/src/main/java/com/zwy/nsfw/api/NsfwHelper.java @@ -14,6 +14,14 @@ public class NsfwHelper { private Activity activity; private Classifier classifier; + /** + * Creates a classifier with the provided configuration. + * + * @param activity The current Activity. + * @param isAddGpuDelegate Add gpu delegate + * @param numThreads The number of threads to use for classification. + * @return A classifier with the desired configuration. + */ public static NsfwHelper getInstance(Activity activity, Boolean isAddGpuDelegate, int numThreads) { synchronized (NsfwHelper.class) { if (nsfwHelper == null) { @@ -74,7 +82,7 @@ public class NsfwHelper { nsfwHelper = null; } - public static interface OnScanBitmapListener { + public interface OnScanBitmapListener { void onSuccess(float sfw, float nsfw); }