Browse Source

enable pool allocator in sample project, display unscaled image

tags/20180830
nihui 8 years ago
parent
commit
cebded134a
2 changed files with 22 additions and 10 deletions
  1. +19
    -9
      examples/squeezencnn/jni/squeezencnn_jni.cpp
  2. +3
    -1
      examples/squeezencnn/src/com/tencent/squeezencnn/MainActivity.java

+ 19
- 9
examples/squeezencnn/jni/squeezencnn_jni.cpp View File

@@ -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<unsigned char> squeezenet_param;
static std::vector<unsigned char> 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<std::string> 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);



+ 3
- 1
examples/squeezencnn/src/com/tencent/squeezencnn/MainActivity.java View File

@@ -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)


Loading…
Cancel
Save