-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
测试MTCNN结果完全不一样 #52
Comments
score_data = score.data+score.cstep |
col-major 的模型? |
我也遇到了类似的问题。 |
确实是col-major 的模型 |
copy_cut_border ? |
ncnn 的转换器是读 row-major 的模型,col-major 需要把 weights transpose 下才行,转换器工具还不支持,暂时得手工转... |
@nihui 多谢倪神! |
手工改了下MTCNN caffemodel转row-major, |
@ElegantGod ,大神有没有实现MTCNNv2?我试了你的MTCNNv1的代码,效果不错,给你点赞!但是,我在你的代码基础上,加上LNet后,预测的5个特征点的位置更不准确了。向大神求助。 |
@wangkgege 我没试过v2版本,不过应该还是没有转成row-major模型的问题吧 |
@ElegantGod ,应该是这个问题。但是不知该如何转成row-major模型?无从下手,能否指导一下? |
@wangkgege 在caffe2ncnn.cpp里,要把caffemodel读出来并保持到bin文件中,对卷积核和全连接权重转置,如3x3卷积核[[1,2,3],[4,5,6],[7,8,9]],保存成[[1,4,7],[2,5,8],[3,6,9]],我用的比较笨的手工方法0.0,周末改一下 |
@ElegantGod ,我对比了你写的caffe2ncnn_mtcnn.cpp跟caffe2ncnn.cpp,的确是这两处的权重修改了。学习了。给你大大的赞!! |
mtcnn caffe 版本与 ncnn 版本运行结果有一些差别。输入保证一致的情况下,输出有轻微差别。是caffe模型转换成ncnn 模型有差异,还是前馈网络计算有差异。你们感觉到没? |
@guozhongluo 有差异,有可能是resize和opencv的resize不一样导致的 |
@ElegantGod 我使用的是你转换后的网络模型,用的是opencv的resize,但感觉和caffe的输出差异很大,而且模型每次的输出也会有些许差别,最后出现人脸框抖动,预测不准的问题,请问这有可能是什么原因呢? |
@jasminezz 我猜不到是什么原因,你可以用我的mtcnn.cpp,和caffe输出一致 |
@ElegantGod 我修改了threshold和nms的阈值,稳定了许多。模型的输出和resize的scale关系很大,将数值类型从double替换为float就好了 |
@ElegantGod 你在arm上跑了没?我再PC上跑结果正常,拿到arm上,输出就不对了,改了改ceil和round相关的部分,arm上Pnet的输出结果对了,Rnet的输入也是正常,只是Rnet的输出prob都是0.5。。。 |
@ElegantGod 请教下大神一个问题,我下载了你的ncnn repo,mtcnn.cpp对着opencv3.3 最后编译通过,运行发现 |
@zhenglaizhang 跟opencv应该没关系,在mtcnn目录下../build/mtcnn/mtcnn 1.jpg,你可能是没有加载模型 |
@ElegantGod 谢谢回复,模型我应该加载成功了, 应该是在预测的时候出错了:
另外,请教你,你的repo里面代码拉下来就可以直接build么?我遇到一个错误:
我在上方加了一个声明 编译步骤:
|
@ElegantGod 啊呀,我知道原因了,现在有时间看了下代码,应该这样改,谢谢你哈,可以pc上面跑起来了:
|
@ElegantGod 大神,还有个问题请教下,似乎检测出来的bbox人脸矩形宽度比人脸宽一些,会带上一些背景? |
@zhenglaizhang 我不是大神哦,菜鸟一个,这个输出的是正方形框,和官方有点不一样 |
@ElegantGod 第三次box regression的时候可以去掉square,这样看起来更准确了?试了下,另外mtcnn ncnn在安卓上面跑效果很不错,感谢!! |
@zhenglaizhang 大神 请教一下mtcnn ncnn在安卓上面跑的代码可以分享一下吗? 或者具体开发步骤 万分感激! |
谢谢大家 我已经用JNI 把MTCNN编译出来了 效果还不不错 4线程下780x1040的图片手机上大约耗时150 ms |
我发现这个版本的检测结果和标准CAFFE的不一样,我有一张图片,这个版本的就检测不出来出来,标准的CAFFE就可以,最小图片都是24,参数也基本是一致的 |
我也遇到类似的问题,请问这个问题你解决了吗? |
跑了下MTCNN的PNet和RNet结果与标准结果相差很大,拿一张人脸给RNet的得分也很低
const float mean_vals[3] = {127.5f, 127.5f, 127.5f};
const float norm_vals[3] = {0.0078125, 0.0078125, 0.0078125};
int hs = ceil(img_hscales[i]);
int ws = ceil(img_wscales[i]);
ncnn::Mat pnet_img = ncnn::Mat::from_pixels_resize(bgr.data, ncnn::Mat::PIXEL_BGR, img_w, img_h, ws, hs);
pnet_img.substract_mean_normalize(mean_vals,norm_vals);
ncnn::Extractor Pnet_ex = Pnet.create_extractor();
Pnet_ex.set_light_mode(true);
Pnet_ex.input("data", pnet_img);
ncnn::Mat score, loc;
Pnet_ex.extract("prob1", score);
Pnet_ex.extract("conv4-2", loc);
if(*(score_data+i)>=thresh)。。。
The text was updated successfully, but these errors were encountered: