2016-05-12 5 views
1

Ich kompiliere dlib 18.18 unter Windows 10 für QT 5.6 mit MinGW 4.9.2.dlib mit QT MinGW langsam auch im Freigabemodus

Ich habe alle Empfehlungen gelesen (http://dlib.net/faq.html#Whyisdlibslow): AVX oder SSE4 Anweisungen, Release-Modus.

Das Beispiel "webcam_face_pose_ex.exe" funktioniert wie ein Charme und wirklich schnell.

Das Problem:

Aber wenn ich den frontal_face_detector unter QT der Framerate ist niedrig wirklich nutzen.

  • 640x480 ~ 170 ms

  • 1920x1080 ~ 1100 ms

Systemkonfiguration: Windows 10 (x64), Intel Core i5-3550, QT 5.6, OpenCV 3.1.0, MinGW 4.9.2

Alle Varianten der Verwendung von AVX/SSE4-Anweisungen in dlib und opencv getestet. Aber ich denke, dass es etwas anderes ist - da das Beispiel schnell ist. Der in QT verwendete Code wird auch aus dem Beispiel kopiert, auch ohne GUI.

Im Debug-Modus dauert die Verarbeitung von 640x480 Frames 6-7 Sekunden.

.proDatei dump:

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 

Antwort

0

DLIB Gesichtsdetektor ist Kopfbasis und hängt nicht von dem Compiler-Flags verwendet dlib.lib selbst zu kompilieren.

DLIB verfügt über eine dokumentierte Option „-DUSE_AVX_INSTRUCTIONS = ON“, aber es wird nicht funktionieren, wenn Sie nicht mit CMAKE Bau und einschließlich DLIB/cmake-Datei in Ihre CMakeLists.txt

Sie sollten AVX ermöglicht Fahnen hinzufügen für Compiler in Ihr Projekt, um es schnell zu machen arbeiten

Die Lösung einen expliziten Parameter auf Ihre .proDatei ist hinzuzufügen:

QMAKE_CXXFLAGS_RELEASE + = -mavx

Wenn Sie in Qt Creator ein Projekt kompilieren, können Sie sehen, wie es den Compiler aufruft und welche Flags verwendet werden. Stellen Sie sicher, dass Sie die Markierung -maxx haben. -msse2 arbeitet etwa 20% langsamer

+0

Ja! Brillant! Jetzt 1920x1080 geht für 400 ms, 640x480 - 60 ms –