未定义函数或变量 'nms_mex'。 出错 nms (line 43) pick = nms_mex(double(boxes), double(overlap));

通过阅读Finding Tiny Faces文章,实际上自己都没懂。。。。
当自己运行那个例子的时候,也就是tiny_face_detector.m的时候,出现了如下错误:

未定义函数或变量 'nms_mex'。

出错 nms (line 43)
    pick = nms_mex(double(boxes), double(overlap));

出错 tiny_face_detector (line 172)
ridx = nms(bboxes(:,[1:4 end]), nms_thresh);

当时我找到那个错误的位置,就在nms.m文件下面的第42行到45行,如下:

if size(boxes, 1) < 1000000
    pick = nms_mex(double(boxes), double(overlap));
    return;
end

当时觉得,自己反正也不懂,直接注释掉了。。。然后可以运行成功的,好像对结果没什么影响。虽然自己不理解,但是总觉得随便注释语句,这方法有点歧途,然后就查了查关于这个的错误。解决方法如下:
在window中,需要把toolbox/nms文件下添加到路径,在nms文件夹下面找到nms_mex.cpp这个文件,然后在matlab中运行:

>> cd toolbox
>> cd nms
>> mex nms_mex.cpp
使用 'Microsoft Visual C++ 2015' 编译。
MEX 已成功完成。

出现上面的就表示成功了。然后再运行tiny_face_detector.m,就可以出现人脸检测带有框框的图啦。
这个就是那个结果,默认的好像是cpu运行的。
之后我又试了试GPU运行,代码别人给出来的:bboxes = tiny_face_detector('data/demo/selfie.jpg', './selfie.png', 0.5, 0.1, 1),最后那一个数字,用1代表gpu运行,0代表cpu运行。然后结果如下:

这个是gpu运行的
cpu大概需要48.7秒,gpu需要3.2秒,可以看出gpu还是比较快的。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百年孤独百年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值