|
|
|
@@ -73,9 +73,29 @@ static std::vector<std::string> split_string(const std::string& str, const std:: |
|
|
|
|
|
|
|
extern "C" { |
|
|
|
|
|
|
|
JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) |
|
|
|
{ |
|
|
|
__android_log_print(ANDROID_LOG_DEBUG, "SqueezeNcnn", "JNI_OnLoad"); |
|
|
|
|
|
|
|
ncnn::create_gpu_instance(); |
|
|
|
|
|
|
|
return JNI_VERSION_1_4; |
|
|
|
} |
|
|
|
|
|
|
|
JNIEXPORT void JNI_OnUnload(JavaVM* vm, void* reserved) |
|
|
|
{ |
|
|
|
__android_log_print(ANDROID_LOG_DEBUG, "SqueezeNcnn", "JNI_OnUnload"); |
|
|
|
|
|
|
|
ncnn::destroy_gpu_instance(); |
|
|
|
} |
|
|
|
|
|
|
|
// public native boolean Init(byte[] param, byte[] bin, byte[] words); |
|
|
|
JNIEXPORT jboolean JNICALL Java_com_tencent_squeezencnn_SqueezeNcnn_Init(JNIEnv* env, jobject thiz, jbyteArray param, jbyteArray bin, jbyteArray words) |
|
|
|
{ |
|
|
|
// use vulkan compute |
|
|
|
if (ncnn::get_gpu_count() != 0) |
|
|
|
squeezenet.use_vulkan_compute = 1; |
|
|
|
|
|
|
|
// init param |
|
|
|
{ |
|
|
|
int len = env->GetArrayLength(param); |
|
|
|
@@ -114,9 +134,14 @@ JNIEXPORT jboolean JNICALL Java_com_tencent_squeezencnn_SqueezeNcnn_Init(JNIEnv* |
|
|
|
return JNI_TRUE; |
|
|
|
} |
|
|
|
|
|
|
|
// public native String Detect(Bitmap bitmap); |
|
|
|
JNIEXPORT jstring JNICALL Java_com_tencent_squeezencnn_SqueezeNcnn_Detect(JNIEnv* env, jobject thiz, jobject bitmap) |
|
|
|
// public native String Detect(Bitmap bitmap, boolean use_gpu); |
|
|
|
JNIEXPORT jstring JNICALL Java_com_tencent_squeezencnn_SqueezeNcnn_Detect(JNIEnv* env, jobject thiz, jobject bitmap, jboolean use_gpu) |
|
|
|
{ |
|
|
|
if (use_gpu == JNI_TRUE && ncnn::get_gpu_count() == 0) |
|
|
|
{ |
|
|
|
return env->NewStringUTF("no vulkan capable gpu"); |
|
|
|
} |
|
|
|
|
|
|
|
bench_start(); |
|
|
|
|
|
|
|
// ncnn from bitmap |
|
|
|
@@ -147,6 +172,8 @@ JNIEXPORT jstring JNICALL Java_com_tencent_squeezencnn_SqueezeNcnn_Detect(JNIEnv |
|
|
|
|
|
|
|
ncnn::Extractor ex = squeezenet.create_extractor(); |
|
|
|
|
|
|
|
ex.set_vulkan_compute(use_gpu); |
|
|
|
|
|
|
|
ex.input(squeezenet_v1_1_param_id::BLOB_data, in); |
|
|
|
|
|
|
|
ncnn::Mat out; |
|
|
|
|