【问题标题】:Why is dlib so slow finding an object?为什么 dlib 找对象这么慢?
【发布时间】:2016-08-09 14:26:33
【问题描述】:

我正在使用 Dlib 测试一些东西,并使用 tools/imglab/build/imglab 中包含的编译工具选择了我想要识别的对象实例周围的矩形。使用这个描述我想要检测的对象的几个不同视图的 xml 文件,我运行火车对象预测器并进行了一些更改:

training_xml_path = os.path.join(faces_folder, "cooldataset.xml")
testing_xml_path = os.path.join(faces_folder, "cooldataset.xml")

并在 images 目录中运行,生成一个检测器.svm。

现在我为一张图片运行一个经过修改的对象检测器,它检测到许多它应该检测到的对象并在它们周围放置一个矩形,但在 1920x1080 的屏幕截图中找到它们需要将近 2 秒!这是在 i5-3230M CPU @ 2.60GHz × 4 上,所以我想知道我是否缺少一些压缩或其他步骤以使其运行更快或在功能较弱的设备上工作。如果重要的话,这是在 Ubuntu 上从 dlib-18.16 编译的。

【问题讨论】:

    标签: image-recognition dlib dlib-python


    【解决方案1】:

    我在类似情况下使用 Dlib 的对象检测器,我在 1920x1080 分辨率下使用类似的处理器有 20 fps

    首先 - 从 github 获取最新版本 之后确保您启用了 AVX 支持 (-mavx) 并且您正在编译优化代码(-O3 或 -Ofast

    正如我所见 - 您正在为 Dlib 使用 Python 接口。要编译它,你应该调用:

    python setup.py install --yes USE_AVX_INSTRUCTIONS

    (按照 dlib 文件夹中的 readme.txt 说明进行操作)

    【讨论】:

    • 默认指令没有设置?如果我在 Raspberry Pi(ARM 处理器)上运行 AVX 是否也适用?
    • cat /proc/cpuinfo 会告诉你你的 CPU 是否支持 AVX
    • Raspberry 内部有 ARM 处理器,一些 ARM 有 SIMD 支持,但你应该检查一下,我认为本能会有所不同。 GCC 中对 SIMD 的默认支持通常在 x64 模式下启用 SSE/SSE2,在 x86 中禁用。 AVX/AVX2 应该手动启用
    • @Evgeniy dlib 的人脸检测器需要更多时间来检测人脸的边界框,而不是在地标点检测速度快的地方。它如何变得更快。
    • @Evgeniy 这个工作在哪个版本上?假设您使用的是 cmake,并且 compile_dlib_python_module.bat 我认为您必须在 dlib/cmake 文件中启用 option(USE_AVX_INSTRUCTIONS "Compile your program with AVX instructions" ON) 和类似的功能,并且在编译 Dlib 后,在 dlib/add_python_module 中设置 SET(Boost_USE_MULTITHREADED ON) 而不使用 # 注释它。
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 2021-09-03
    • 2016-09-28
    • 2020-02-08
    • 2012-07-17
    • 2011-11-07
    • 2015-08-24
    • 2013-08-06
    相关资源
    最近更新 更多