即使在发布模式下,使用 QT MinGW 的 dlib 也很慢
dlib with QT MinGW slow even in Release mode
我正在 dlib 18.18
上 Windows 10 编译 QT 5.6
和 MinGW 4.9.2
。
我已阅读所有建议 (http://dlib.net/faq.html#Whyisdlibslow):AVX 或 SSE4 说明,发布模式。
示例 "webcam_face_pose_ex.exe" 非常有效,非常快。
问题:
但是当我在 QT 下使用 frontal_face_detector 时,帧率真的很低。
640x480 ~170 毫秒
1920x1080 ~1100 毫秒
系统配置:Windows10 (x64),英特尔酷睿 i5-3550,QT 5.6,OpenCV 3.1.0,MinGW 4.9.2
尝试了在 dlib 和 opencv 中使用 AVX/SSE4 指令的所有变体。
但我认为这是不同的——因为这个例子很快。
QT 中使用的代码也是从示例中复制粘贴的,即使没有 GUI。
在调试模式下,处理 640x480 帧需要 6-7 秒。
.pro 文件转储:
DIR_DLIB = "$${LIBSDIR}dlib/dlib18.18/"
DEFINES += DLIB_ENABLE_ASSERTS
LIBS += -luser32 -lws2_32 -lgdi32 -lcomctl32 -limm32 -lwinmm
INCLUDEPATH += "$${DIR_DLIB}include"
DEPENDPATH += "$${DIR_DLIB}include"
LIBS += -L"$${DIR_DLIB}lib"
LIBS += -ldlib
Dlib 人脸检测器 header-based 并且不依赖于用于编译 dlib.lib 本身的编译器标志。
Dlib 有一个已记录的选项“-DUSE_AVX_INSTRUCTIONS=ON”,但如果您没有使用 CMAKE 构建并将 dlib/cmake 文件包含到您的 CMakeLists.txt[=10 中,它就不会工作=]
您应该将编译器的 AVX 启用标志添加到您的项目中以使其快速运行
解决方案是在您的 .pro 文件中添加一个显式参数:
QMAKE_CXXFLAGS_RELEASE += -mavx
当您在Qt Creator 中编译项目时,您可以看到它是如何调用编译器的以及使用了哪些标志。确保您有 -mavx 标志。 -msse2 会慢 20%
我正在 dlib 18.18
上 Windows 10 编译 QT 5.6
和 MinGW 4.9.2
。
我已阅读所有建议 (http://dlib.net/faq.html#Whyisdlibslow):AVX 或 SSE4 说明,发布模式。
示例 "webcam_face_pose_ex.exe" 非常有效,非常快。
问题:
但是当我在 QT 下使用 frontal_face_detector 时,帧率真的很低。
640x480 ~170 毫秒
1920x1080 ~1100 毫秒
系统配置:Windows10 (x64),英特尔酷睿 i5-3550,QT 5.6,OpenCV 3.1.0,MinGW 4.9.2
尝试了在 dlib 和 opencv 中使用 AVX/SSE4 指令的所有变体。 但我认为这是不同的——因为这个例子很快。 QT 中使用的代码也是从示例中复制粘贴的,即使没有 GUI。
在调试模式下,处理 640x480 帧需要 6-7 秒。
.pro 文件转储:
DIR_DLIB = "$${LIBSDIR}dlib/dlib18.18/"
DEFINES += DLIB_ENABLE_ASSERTS
LIBS += -luser32 -lws2_32 -lgdi32 -lcomctl32 -limm32 -lwinmm
INCLUDEPATH += "$${DIR_DLIB}include"
DEPENDPATH += "$${DIR_DLIB}include"
LIBS += -L"$${DIR_DLIB}lib"
LIBS += -ldlib
Dlib 人脸检测器 header-based 并且不依赖于用于编译 dlib.lib 本身的编译器标志。
Dlib 有一个已记录的选项“-DUSE_AVX_INSTRUCTIONS=ON”,但如果您没有使用 CMAKE 构建并将 dlib/cmake 文件包含到您的 CMakeLists.txt[=10 中,它就不会工作=]
您应该将编译器的 AVX 启用标志添加到您的项目中以使其快速运行
解决方案是在您的 .pro 文件中添加一个显式参数:
QMAKE_CXXFLAGS_RELEASE += -mavx
当您在Qt Creator 中编译项目时,您可以看到它是如何调用编译器的以及使用了哪些标志。确保您有 -mavx 标志。 -msse2 会慢 20%