From cebded134aacb501dfb9384c2e8340ed77ba4f6b Mon Sep 17 00:00:00 2001 From: nihui Date: Sun, 5 Aug 2018 17:04:35 +0800 Subject: [PATCH] enable pool allocator in sample project, display unscaled image --- examples/squeezencnn/jni/squeezencnn_jni.cpp | 28 +++++++++++++------ .../com/tencent/squeezencnn/MainActivity.java | 4 ++- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/examples/squeezencnn/jni/squeezencnn_jni.cpp b/examples/squeezencnn/jni/squeezencnn_jni.cpp index 10b790de2..f7e390b68 100644 --- a/examples/squeezencnn/jni/squeezencnn_jni.cpp +++ b/examples/squeezencnn/jni/squeezencnn_jni.cpp @@ -45,8 +45,11 @@ static void bench_end(const char* comment) __android_log_print(ANDROID_LOG_DEBUG, "SqueezeNcnn", "%.2fms %s", elasped, comment); } -static std::vector squeezenet_param; -static std::vector squeezenet_bin; +static ncnn::UnlockedPoolAllocator g_blob_pool_allocator; +static ncnn::PoolAllocator g_workspace_pool_allocator; + +static ncnn::Mat squeezenet_param; +static ncnn::Mat squeezenet_bin; static std::vector squeezenet_words; static ncnn::Net squeezenet; @@ -76,18 +79,18 @@ JNIEXPORT jboolean JNICALL Java_com_tencent_squeezencnn_SqueezeNcnn_Init(JNIEnv* // init param { int len = env->GetArrayLength(param); - squeezenet_param.resize(len); - env->GetByteArrayRegion(param, 0, len, (jbyte*)squeezenet_param.data()); - int ret = squeezenet.load_param(squeezenet_param.data()); + squeezenet_param.create(len, (size_t)1u); + env->GetByteArrayRegion(param, 0, len, (jbyte*)squeezenet_param); + int ret = squeezenet.load_param((const unsigned char*)squeezenet_param); __android_log_print(ANDROID_LOG_DEBUG, "SqueezeNcnn", "load_param %d %d", ret, len); } // init bin { int len = env->GetArrayLength(bin); - squeezenet_bin.resize(len); - env->GetByteArrayRegion(bin, 0, len, (jbyte*)squeezenet_bin.data()); - int ret = squeezenet.load_model(squeezenet_bin.data()); + squeezenet_bin.create(len, (size_t)1u); + env->GetByteArrayRegion(bin, 0, len, (jbyte*)squeezenet_bin); + int ret = squeezenet.load_model((const unsigned char*)squeezenet_bin); __android_log_print(ANDROID_LOG_DEBUG, "SqueezeNcnn", "load_model %d %d", ret, len); } @@ -100,6 +103,14 @@ JNIEXPORT jboolean JNICALL Java_com_tencent_squeezencnn_SqueezeNcnn_Init(JNIEnv* squeezenet_words = split_string(words_buffer, "\n"); } + ncnn::Option opt; + opt.lightmode = true; + opt.num_threads = 4; + opt.blob_allocator = &g_blob_pool_allocator; + opt.workspace_allocator = &g_workspace_pool_allocator; + + ncnn::set_default_option(opt); + return JNI_TRUE; } @@ -135,7 +146,6 @@ JNIEXPORT jstring JNICALL Java_com_tencent_squeezencnn_SqueezeNcnn_Detect(JNIEnv in.substract_mean_normalize(mean_vals, 0); ncnn::Extractor ex = squeezenet.create_extractor(); - ex.set_num_threads(4); ex.input(squeezenet_v1_1_param_id::BLOB_data, in); diff --git a/examples/squeezencnn/src/com/tencent/squeezencnn/MainActivity.java b/examples/squeezencnn/src/com/tencent/squeezencnn/MainActivity.java index 666aaee84..1243e09e4 100644 --- a/examples/squeezencnn/src/com/tencent/squeezencnn/MainActivity.java +++ b/examples/squeezencnn/src/com/tencent/squeezencnn/MainActivity.java @@ -146,7 +146,9 @@ public class MainActivity extends Activity // resize to 227x227 yourSelectedImage = Bitmap.createScaledBitmap(rgba, 227, 227, false); - imageView.setImageBitmap(yourSelectedImage); + rgba.recycle(); + + imageView.setImageBitmap(bitmap); } } catch (FileNotFoundException e)