2016-04-18 9 views
0

Ich teste einige Sachen mit Dlib und wähle Rechtecke um Instanzen eines Objekts, das ich erkennen möchte, mit dem kompilierten Werkzeug in tools/imglab/build/imglab. Mit dieser XML-Datei ein paar verschiedene Ansichten des Objekts beschreiben, möchte ich erkenne ich den Zug Objekt Prädiktor mit ein paar Änderungen auszuführen:Warum ist dlib so langsam, ein Objekt zu finden?

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

und im Verzeichnis images ausgeführt wird, eine detector.svm macht.

Jetzt habe ich einen modifizierten Objektdetektor für ein Bild, es erkennt viele der Objekte, die es sollte und legt ein Rechteck um sie, doch es dauert fast 2 Sekunden, um sie in einem 1920x1080 Screenshot zu finden! Das ist auf einer i5-3230M CPU @ 2.60GHz × 4, also frage ich mich, ob es eine Komprimierung oder einen anderen Schritt gibt, den ich vermisse, um es schneller zu machen oder an einem weniger leistungsfähigen Gerät zu arbeiten. Dies wird unter Ubuntu von dlib-18.16 kompiliert, wenn das wichtig ist.

Antwort

2

Ich verwende DLIB Objektdetektor für ähnliche Situation, und ich habe 20 fps auf 1920x1080 relotion mit dem ähnlichen Prozessor

Zunächst einmal - erhält neueste Version von Github Danach sicherzustellen, dass Sie AVX-Unterstützung aktiviert (-mavx) und Sie kompilieren optimierten Code (O3 oder -Ofast)

Wie ich sehe - Sie Python-Schnittstelle für DLIB verwenden. Um zu kompilieren, sollten Sie rufen:

python setup.py install --yes USE_AVX_INSTRUCTIONS

(folgen readme.txt Anweisung in DLIB Ordner)

+0

Die Standard Anweisungen nicht festgelegt, dass ? Ist AVX auch anwendbar wenn ich es auf einem Raspberry Pi (ARM Prozessor) laufen lasse? – NoBugs

+0

cat/proc/cpuinfo zeigt Ihnen, ob Ihre CPU AVX unterstützt oder nicht – Evgeniy

+0

Raspberry hat ARM-Prozessor im Inneren, einige ARM haben SIMD-Unterstützung, aber Sie sollten es überprüfen, und ich denke, dass Instrincts Differents werden. Die Standardunterstützung von SIMD in GCC aktiviert normalerweise SSE/SSE2 im x64-Modus und deaktiviert sie in x86. AVX/AVX2 sollte manuell aktiviert werden – Evgeniy