即使在释放模式下,带QT MinGW的dlib速度也很慢

即使在释放模式下,带QT MinGW的dlib速度也很慢,qt,mingw,dlib,Qt,Mingw,Dlib,我正在Windows 10上编译dlib 18.18,用于QT 5.6和MinGW 4.9.2 我已经阅读了所有建议():AVX或SSE4说明,发布模式 “webcam\u face\u pose\u ex.exe”这个例子很有魅力,速度也很快 问题: DIR_DLIB = "$${LIBSDIR}dlib/dlib18.18/" DEFINES += DLIB_ENABLE_ASSERTS LIBS += -luser32 -lws2_32 -lgdi32 -lcomctl32 -limm32

我正在Windows 10上编译
dlib 18.18
,用于
QT 5.6
MinGW 4.9.2

我已经阅读了所有建议():AVX或SSE4说明,发布模式

“webcam\u face\u pose\u ex.exe”这个例子很有魅力,速度也很快

问题:

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
但当我在QT下使用正面面部检测器时,帧率非常低

  • 640x480~170毫秒

  • 1920x1080~1100ms

系统配置:Windows 10(x64)、Intel Core 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 face detector基于头,不依赖于用于编译Dlib.lib本身的编译器标志

Dlib有一个记录在案的选项“-DUSE_AVX_INSTRUCTIONS=ON”,但如果您不使用CMAKE进行构建并将Dlib/CMAKE文件包含到您的CMakeLists.txt中,则该选项将不起作用

您应该将编译器的AVX启用标志添加到项目中,以使其快速工作

解决方案是在.pro文件中添加一个显式参数:

QMAKE\u cxflags\u RELEASE+=-mavx


在QtCreator中编译项目时,可以看到它如何调用编译器以及使用了哪些标志。确保您具有-mavx标志-msse2的工作速度将降低约20%

Dlib人脸检测器基于头,不依赖于用于编译Dlib.lib本身的编译器标志

Dlib有一个记录在案的选项“-DUSE_AVX_INSTRUCTIONS=ON”,但如果您不使用CMAKE进行构建并将Dlib/CMAKE文件包含到您的CMakeLists.txt中,则该选项将不起作用

您应该将编译器的AVX启用标志添加到项目中,以使其快速工作

解决方案是在.pro文件中添加一个显式参数:

QMAKE\u cxflags\u RELEASE+=-mavx


在QtCreator中编译项目时,可以看到它如何调用编译器以及使用了哪些标志。确保您具有-mavx标志-msse2的工作速度将降低约20%

是!明亮的现在1920x1080可以运行400毫秒,640x480-60毫秒是的!明亮的现在1920x1080可用于400毫秒,640x480-60毫秒