8000 googlenet在ncnn上的应用 · Issue #355 · Tencent/ncnn · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

googlenet在ncnn上的应用 #355

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
TonyTangYu opened this issue Apr 16, 2018 · 12 comments
Closed

googlenet在ncnn上的应用 #355

TonyTangYu opened this issue Apr 16, 2018 · 12 comments

Comments

@TonyTangYu
Copy link

我想在ncnn上部署googlenet,使用的模型是caffe中的bvlc_googlenet.caffemodel(http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel ),配置文件是https://github.com/BVLC/caffe/blob/master/models/bvlc_googlenet/deploy.prototxt ,使用这些文件转化为ncnn的模型为googlenet.param.bin和googlenet.bin,但是在使用这两个文件的时候出错,在java文件中使用如下:
private void initGoogleNetNcnn() throws IOException
{
byte[] param = null;
byte[] bin = null;
byte[] words = null;

    {
        InputStream assetsInputStream = getAssets().open("googlenet.param.bin");
        int available = assetsInputStream.available();
        param = new byte[available];
        int byteCode = assetsInputStream.read(param);
        assetsInputStream.close();
    }
    {
        InputStream assetsInputStream = getAssets().open("googlenet.bin");
        int available = assetsInputStream.available();
        bin = new byte[available];
        int byteCode = assetsInputStream.read(bin);
        assetsInputStream.close();
    }
    {
        InputStream assetsInputStream = getAssets().open("synset_mobilenet.txt");
        int available = assetsInputStream.available();
        words = new byte[available];
        int byteCode = assetsInputStream.read(words);
        assetsInputStream.close();
    }
    googlenetNcnn.Init(param, bin, words);
}

安卓程序会闪退,在logcat中查看信息,发现是init成功的,报错是:A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 28438 (Thread-4128) 不知道是为什么。把googlenet.param.bin和googlenet.bin换成生成的mobilenet的相应文件,就可以正确执行,但是在detect的时候程序也会闪退,不知道为什么。
除了这些问题,我有几个自己的思考:googlenet转化为ncnn模型的时候需要进行旧版caffe模型转新caffe模型这一步吗?detect闪退是so文件生成有问题吗?

@WenguoLi
Copy link

@nihui ,
googlenet 在目前的NCNN版本上有问题, 在PC上也无法跑出正确的结果!
$ ./googlenet dog.jpg
time: 256224 us
1919248742 = 18394614727878753029980160.000000
0 = 0.000002
0 = 0.000000
用以前的老版本的ncnn结果是正确的, 不知道原因在哪里?

@TonyTangYu
Copy link
Author

@WenguoLi 请问你现在googlenet在当前的ncnn版本上测试成功了吗?

@nihui
Copy link
Member
nihui commented Apr 25, 2018

@WenguoLi 检查输入预处理,以及 prob blob 取值
https://github.com/Tencent/ncnn/wiki/FAQ-ncnn-produce-wrong-result

@nihui
Copy link
Member
nihui commented Apr 27, 2018

经测试没有问题,示例代码如下

static int detect_googlenet(const cv::Mat& bgr, std::vector<float>& cls_scores)
{
    ncnn::Net googlenet;
    googlenet.load_param("googlenet.param");
    googlenet.load_model("googlenet.bin");

    ncnn::Mat in = ncnn::Mat::from_pixels_resize(bgr.data, ncnn::Mat::PIXEL_BGR, bgr.cols, bgr.rows, 224, 224);

    const float mean_vals[3] = {104.f, 117.f, 123.f};
    in.substract_mean_normalize(mean_vals, 0);

    ncnn::Extractor ex = googlenet.create_extractor();
    ex.set_light_mode(true);

    ex.input("data", in);

    ncnn::Mat out;
    ex.extract("prob", out);

    cls_scores.resize(out.w);
    for (int j=0; j<out.w; j++)
    {
        cls_scores[j] = out[j];
    }

    return 0;
}

@nihui nihui closed this as completed Apr 27, 2018
@ronyuzhang
Copy link

在多线程环境下 ncnn::Extractor ex 能做成static或者单例的吗

< 8000 /div>
@ronyuzhang
Copy link

@nihui

@nihui
Copy link
Member
nihui commented Oct 16, 2018

在多线程环境下 ncnn::Extractor ex 能做成static或者单例的吗

ncnn::Extractor 每次都用新的

@ronyuzhang
Copy link

我在jni 执行这一句是应用崩溃 in.substract_mean_normalize(mean_vals, norm_vals);

54:08.701 4726-4726/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2018-10-16 12:54:08.701 4726-4726/? A/DEBUG: Build fingerprint: 'Android/sl3399/sl3399:7.1.2/NHG47K/pengbi08140945:userdebug/test-keys'
2018-10-16 12:54:08.702 4726-4726/? A/DEBUG: Revision: '0'
2018-10-16 12:54:08.702 4726-4726/? A/DEBUG: ABI: 'arm'
2018-10-16 12:54:08.702 4726-4726/? A/DEBUG: pid: 4614, tid: 4614, name: ao.mobilenetssd >>> com.example.mm.mobilenetssd <<<
2018-10-16 12:54:08.702 4726-4726/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
2018-10-16 12:54:08.702 4726-4726/? A/DEBUG: r0 00000000 r1 00001206 r2 00000006 r3 00000008
2018-10-16 12:54:08.702 4726-4726/? A/DEBUG: r4 eb29b58c r5 00000006 r6 eb29b534 r7 0000010c
2018-10-16 12:54:08.702 4726-4726/? A/DEBUG: r8 ffd69e5c r9 ffd69bf8 sl 00030005 fp c5ba72d8
2018-10-16 12:54:08.702 4726-4726/? A/DEBUG: ip 0000000b sp ffd69b68 lr e91585f7 pc e915ae54 cpsr 20050010
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: backtrace:
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #00 pc 00049e54 /system/lib/libc.so (tgkill+12)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #1 pc 000475f3 /system/lib/libc.so (pthread_kill+34)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #2 pc 0001d8a5 /system/lib/libc.so (raise+10)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #3 pc 000193f1 /system/lib/libc.so (__libc_android_abort+34)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #4 pc 00017034 /system/lib/libc.so (abort+4)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #5 pc 0008f487 /data/app/com.example.zhangyao.mobilenetssd-1/lib/arm/libnative-lib.so (__kmp_abort_process+30)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #6 pc 0008a98d /data/app/com.example.zhangyao.mobilenetssd-1/lib/arm/libnative-lib.so (__kmp_msg+300)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #7 pc 00093d5d /data/app/com.example.zhangyao.mobilenetssd-1/lib/arm/libnative-lib.so (_Z30__kmp_register_library_startupv+340)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #8 pc 0008e609 /data/app/com.example.zhangyao.mobilenetssd-1/lib/arm/libnative-lib.so
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #9 pc 0008e5cb /data/app/com.example.zhangyao.mobilenetssd-1/lib/arm/libnative-lib.so (__kmp_get_global_thread_id_reg+90)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #10 pc 0007ee6d /data/app/com.example.zhangyao.mobilenetssd-1/lib/arm/libnative-lib.so (__kmpc_fork_call+32)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #11 pc 0001cea9 /data/app/com.example.zhangyao.mobilenetssd-1/lib/arm/libnative-lib.so
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #12 pc 0001ad77 /data/app/com.example.zhangyao.mobilenetssd-1/lib/arm/libnative-lib.so (Java_com_example_zhangyao_mobilenetssd_nativeobj_NativeSSDHelper_testdetect+370)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #13 pc 000ae399 /system/lib/libart.so (art_quick_generic_jni_trampoline+40)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #14 pc 000a99c1 /system/lib/libart.so (art_quick_invoke_stub_internal+64)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #15 pc 00405281 /system/lib/libart.so (art_quick_invoke_stub+232)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #16 pc 000b0c55 /system/lib/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+136)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #17 pc 001ed0d5 /system/lib/libart.so (_ZN3art11interpreter34ArtInterpreterToCompiledCodeBridgeEPNS_6ThreadEPNS_9ArtMethodEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+200)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #18 pc 001e7685 /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+492)
2018-10-16 12:54:09.249 4726-4726/? A/DEBUG: #19 pc 003fccb7 /system/lib/libart.so (MterpInvokeVirtual+430)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #20 pc 0009c814 /system/lib/libart.so (ExecuteMterpImpl+14228)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #21 pc 001ca9af /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+290)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #22 pc 001cf481 /system/lib/libart.so (_ZN3art11interpreter30EnterInterpreterFromEntryPointEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameE+92)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #23 pc 003f4787 /system/lib/libart.so (artQuickToInterpreterBridge+706)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #24 pc 000ae413 /system/lib/libart.so (art_quick_to_interpreter_bridge+34)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #25 pc 01e20239 /system/framework/arm/boot-framework.oat (offset 0x15b4000) (android.view.View.performClick+76)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #26 pc 01e93c35 /system/framework/arm/boot-framework.oat (offset 0x15b4000) (android.view.View$PerformClick.run+40)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #27 pc 01628efd /system/framework/arm/boot-framework.oat (offset 0x15b4000) (android.os.Handler.handleCallback+48)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #28 pc 01628f5b /system/framework/arm/boot-framework.oat (offset 0x15b4000) (android.os.Handler.dispatchMessage+54)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #29 pc 01bdbdd9 /system/framework/arm/boot-framework.oat (offset 0x15b4000) (android.os.Looper.loop+716)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #30 pc 0163a2cf /system/framework/arm/boot-framework.oat (offset 0x15b4000) (android.app.ActivityThread.main+426)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #31 pc 000a99c1 /system/lib/libart.so (art_quick_invoke_stub_internal+64)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #32 pc 00405389 /system/lib/libart.so (art_quick_invoke_static_stub+228)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #33 pc 000b0c7f /system/lib/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+178)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #34 pc 00315e81 /system/lib/libart.so (_ZN3artL18InvokeWithArgArrayERKNS_33ScopedObjectAccessAlreadyRunnableEPNS_9ArtMethodEPNS_8ArgArrayEPNS_6JValueEPKc+56)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #35 pc 00317213 /system/lib/libart.so (_ZN3art12InvokeMethodERKNS_33ScopedObjectAccessAlreadyRunnableEP8_jobjectS4_S4_j+766)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #36 pc 002bd4ed /system/lib/libart.so (ZN3artL13Method_invokeEP7_JNIEnvP8_jobjectS3_S3+40)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #37 pc 005aed49 /system/framework/arm/boot.oat (offset 0x51b000) (java.lang.reflect.Method.invoke+116)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #38 pc 020d1179 /system/framework/arm/boot-framework.oat (offset 0x15b4000) (com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run+100)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #39 pc 020d214d /system/framework/arm/boot-framework.oat (offset 0x15b4000) (com.android.internal.os.ZygoteInit.main+1536)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #40 pc 000a99c1 /system/lib/libart.so (art_quick_invoke_stub_internal+64)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #41 pc 00405389 /system/lib/libart.so (art_quick_invoke_static_stub+228)
2018-10-16 12:54:09.250 4726-4726/? A/DEBUG: #42 pc 000b0c7f /system/lib/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+178)
2018-10-16 12:54:09.251 4726-4726/? A/DEBUG: #43 pc 00315e81 /system/lib/libart.so (_ZN3artL18InvokeWithArgArrayERKNS_33ScopedObjectAccessAlreadyRunnableEPNS_9ArtMethodEPNS_8ArgArrayEPNS_6JValueEPKc+56)
2018-10-16 12:54:09.251 4726-4726/? A/DEBUG: #44 pc 00315c93 /system/lib/libart.so (_ZN3art17InvokeWithVarArgsERKNS_33ScopedObjectAccessAlreadyRunnableEP8_jobjectP10_jmethodIDSt9__va_list+266)
2018-10-16 12:54:09.251 4726-4726/? A/DEBUG: #45 pc 00277b97 /system/lib/libart.so (_ZN3art3JNI21CallStaticVoidMethodVEP7_JNIEnvP7_jclassP10_jmethodIDSt9__va_list+426)
2018-10-16 12:54:09.251 4726-4726/? A/DEBUG: #46 pc 00066665 /system/lib/libandroid_runtime.so
2018-10-16 12:54:09.251 4726-4726/? A/DEBUG: #47 pc 00067f37 /system/lib/libandroid_runtime.so (_ZN7android14AndroidRuntime5startEPKcRKNS_6VectorINS_7String8EEEb+498)
2018-10-16 12:54:09.251 4726-4726/? A/DEBUG: #48 pc 00001947 /system/bin/app_process32
2018-10-16 12:54:09.251 4726-4726/? A/DEBUG: #49 pc 00016c4d /system/lib/libc.so (__libc_init+48)
2018-10-16 12:54:09.251 4726-4726/? A/DEBUG: #50 pc 00001564 /system/bin/app_process32
2018-10-16 12:54:10.030 598-648/syste

我把jni 代码一行一行粘进去。 发现到这一行报错了@nihui 能帮助看下吗 谢谢

@DolbyYu
Copy link
DolbyYu commented Apr 25, 2019

我在jni 执行这一句是应用崩溃 in.substract_mean_normalize(mean_vals, norm_vals);

解决了吗?我也遇到了这个问题

@YuGongCharley
Copy link

您好,请问这个问题解决了吗?我在使用googlenet的模型推断的时候在ex.extract("softmax", out);这里会出现signal 11的问题,caffemodel也升到新版本的了,不明白是什么问题导致的

@liguiyuan
Copy link

您好,请问这个问题解决了吗?我在使用googlenet的模型推断的时候在ex.extract("softmax", out);这里会出现signal 11的问题,caffemodel也升到新版本的了,不明白是什么问题导致的

你好,我也遇到跟你一样的问题,请问一下你最后是怎么解决的,哪里出的问题?

@YuGongCharley
Copy link

您好,请问这个问题解决了吗?我在使用googlenet的模型推断的时候在ex.extract("softmax", out);这里会出现signal 11的问题,caffemodel也升到新版本的了,不明白是什么问题导致的

你好,我也遇到跟你一样的问题,请问一下你最后是怎么解决的,哪里出的问题?

解决了,因为ncnn是基于较早的caffe版本做的,所以我把caffe降回到41的版本再训练模型就好了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants
0