Tencent / ncnn

ncnn is a high-performance neural network inference framework optimized for the mobile platform
Other
20.13k stars 4.14k forks source link

mtcnn速度不稳定 #1144

Closed charles3349 closed 5 years ago

charles3349 commented 5 years ago

将caffe版本的mtcnn转换为ncnn调用,返回结果是正确的,但速度不稳定。同样是一个人100*100的图片,有时8-9ms有时100-200ms。同样的mtcnn,opencv的dnn模块速度快且稳定。

charles3349 commented 5 years ago

https://github.com/moli232777144/mtcnn_ncnn 借鉴的项目

nihui commented 5 years ago

你是在android上跑的?

charles3349 commented 5 years ago

是的@nihui

charles3349 commented 5 years ago

测试机器是华为nova3

nihui commented 5 years ago

多线程可以设少些 net.opt.num_threads = 2 这样

charles3349 commented 5 years ago

@nihui 之前写的太不通顺了,又重新写了一下 2019-08-07 13:37:09.961 27385-27534/? E/TIME--all-fd: 28 2019-08-07 13:37:10.012 27385-27534/? E/TIME--all-fd: 19 2019-08-07 13:37:10.060 27385-27534/? E/TIME--all-fd: 13 2019-08-07 13:37:10.479 27385-27534/? E/TIME--all-fd: 381 2019-08-07 13:37:10.539 27385-27534/? E/TIME--all-fd: 30 2019-08-07 13:37:10.584 27385-27534/? E/TIME--all-fd: 15 2019-08-07 13:37:10.688 27385-27534/? E/TIME--all-fd: 69 2019-08-07 13:37:10.732 27385-27534/? E/TIME--all-fd: 39 2019-08-07 13:37:10.789 27385-27534/? E/TIME--all-fd: 19 2019-08-07 13:37:10.809 27385-27534/? E/TIME--all-fd: 18 2019-08-07 13:37:10.850 27385-27534/? E/TIME--all-fd: 39 2019-08-07 13:37:10.899 27385-27534/? E/TIME--all-fd: 45 2019-08-07 13:37:10.919 27385-27534/? E/TIME--all-fd: 17 2019-08-07 13:37:10.944 27385-27534/? E/TIME--all-fd: 23 2019-08-07 13:37:10.971 27385-27534/? E/TIME--all-fd: 25 2019-08-07 13:37:10.985 27385-27534/? E/TIME--all-fd: 11 2019-08-07 13:37:11.009 27385-27534/? E/TIME--all-fd: 22 2019-08-07 13:37:11.023 27385-27534/? E/TIME--all-fd: 12 2019-08-07 13:37:11.033 27385-27534/? E/TIME--all-fd: 8 2019-08-07 13:37:11.045 27385-27534/? E/TIME--all-fd: 10 2019-08-07 13:37:11.053 27385-27534/? E/TIME--all-fd: 6 2019-08-07 13:37:11.097 27385-27534/? E/TIME--all-fd: 6 2019-08-07 13:37:11.228 27385-27534/? E/TIME--all-fd: 127 2019-08-07 13:37:11.402 27385-27534/? E/TIME--all-fd: 172 2019-08-07 13:37:11.417 27385-27534/? E/TIME--all-fd: 10 2019-08-07 13:37:11.499 27385-27534/? E/TIME--all-fd: 80 2019-08-07 13:37:11.533 27385-27534/? E/TIME--all-fd: 33 2019-08-07 13:37:11.539 27385-27534/? E/TIME--all-fd: 4 2019-08-07 13:37:11.548 27385-27534/? E/TIME--all-fd: 6 2019-08-07 13:37:11.567 27385-27534/? E/TIME--all-fd: 17 2019-08-07 13:37:11.579 27385-27534/? E/TIME--all-fd: 9 2019-08-07 13:37:11.598 27385-27534/? E/TIME--all-fd: 17 2019-08-07 13:37:11.661 27385-27534/? E/TIME--all-fd: 60 2019-08-07 13:37:11.692 27385-27534/? E/TIME--all-fd: 28 2019-08-07 13:37:11.699 27385-27534/? E/TIME--all-fd: 4 2019-08-07 13:37:11.727 27385-27534/? E/TIME--all-fd: 26 2019-08-07 13:37:11.740 27385-27534/? E/TIME--all-fd: 11 这是不用ex.set_num_threads设置线程后的时间,冒号后面是毫秒数,是实时单人脸图片的检测,每张都不一样。这也是我测试平均速度最快的设置线程的方式。 以上的时间是我对mtcnn通常所采用的网络结构做了改动,我将ONet神经元数量缩小为原来的一半参考的项目是https://github.com/szad670401/Fast-MTCNN 它的RNet为半精度的,转换后只有bin文件只有1kb,无法使用

参考项目:https://github.com/moli232777144/mtcnn_ncnn,直接使用原项目的模型,加上您最新编好的android库跑速度也是不稳定的也会出现同一张100*100的图片100-200ms的情况 之前参考过Fast-MTCNN的项目在opencv下使用,速度很快,在华为nova3平均速度在14ms左右。Fast-MTCNN对3个stage都做了改动,我测试的结果是只按照该项目改动ONet最快,RNet为半精度,转化后只有1kb,无法使用,PNet改动后,速度反而变慢,可能是放过的框太多,造成整体变慢。我看您说半精度目前的硬件是不支持的,不知道opencv为什么做的如此之快。但他们的问题是库太大了!!!ios无法应用! 我想了解的是这是正常的情况吗?我还有什么办法提高速度吗?

nihui commented 5 years ago

cpu.h 中可以设置 set_cpu_powersave(2) 减轻因为系统线程调度引起的耗时抖动

wangyangneu commented 4 years ago

在mat里面有一个线程的bug,需要修复一下就可以稳定了

hegc commented 1 year ago

在mat里面有一个线程的bug,需要修复一下就可以稳定了

具体什么bug啊?