Dlib对象检测在iOS上始终返回零结果 [英] dlib object detection always return zero results on iOS

查看:0
本文介绍了Dlib对象检测在iOS上始终返回零结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Mac上成功地使用了dlib对象检测。现在,我想在iOS应用程序中使用它。然而,在花费了无数个小时之后,dlib对象检测器总是返回零个矩形。

        ifstream fin(dataDir + "/object_detector.svm", ios::binary);
        typedef dlib::scan_fhog_pyramid<dlib::pyramid_down<6> > image_scanner_type;
        dlib::object_detector<image_scanner_type> detector;
        dlib::deserialize(detector, fin);

        vector<dlib::rectangle> dets = detector(dlibImage);

为了确保不是由于不同的图像,我使用的是与检测器在Mac上返回1次命中的完全相同的图像。我还在Mac和iOS中从图像的一部分打印了uchar,并且返回了相同的值。所以图像数据是完全相同的。

可能没有为iOS正确构建dlib库。为此,我尝试了多种方法。从/Example/Build目录中调用了以下命令。

    cmake -G Xcode ..
    cmake --build . --config Release

它在dlib_Build目录中生成了dlib.xcodeproj项目。我在Xcode中打开了项目,将架构更改为iOS(ARMv7,arm64),并重新构建了库。这个库链接到了我的项目。用这种方法我没有得到任何结果。Dlib是在调试模式下生成的;我没有收到任何断言错误。

尝试的第二种方法是在我的项目中使用dlib/all/Soure.app。我使用了cmake或dlib.xcodeproj项目使用的所有预处理标志。没有错误,但仍然没有匹配项。

我将我的Xcode项目的构建设置与cmake生成的Examples.xcodeproj进行了比较,结果是相同的。我也检查了https://github.com/zweigraf/face-landmarking-ios中的Xcode项目,但没有帮助。

奇怪的是,探测器需要几秒钟的处理时间,然后返回的结果是零匹配。因此,它正在做一些事情。我希望有可以为检测器打开的调试日志。

我没有主意了。如果有人能帮上忙,我将不胜感激。Dlib是一个很棒的库,我只是希望它能更容易地在iOS上使用。

推荐答案

dlib在iOS上也运行得很好。我为此而自责,但我混淆了探测器的实例。我在其上调用下线的检测器未用于目标检测。

dlib::deserialize(detector, fin);

我只是在使用一个空的检测器实例,它返回0个检测。说到空检测器,我的意思是定义了它,但没有调用反序列化方法。如果使用未加载对象_检测器.svm文件的检测器进行检测,如果dlib返回错误或警告就更好了。

我也用形状检测器观察到了同样的行为。如果没有加载sp.dat,它会自动报告检测到0个部件。将此贴为答案,以防其他人也犯下这样愚蠢的错误。

这篇关于Dlib对象检测在iOS上始终返回零结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆