Wenn der Personendetektor mit der Kombination von OpenCV + Python betrieben wird, Die Verarbeitungsgeschwindigkeit ist viel langsamer als von der Taktrate erwartet Ich habe es mit Raspberry Pi B + gespürt. Notieren Sie sich den Grund.
hog=cv2.HOGDescriptor() hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) hogParams = {'winStride': (8, 8), 'padding': (32, 32), 'scale': 1.05} human, r = hog.detectMultiScale(im, **hogParams)
Eine Methode namens detectMultiScale () wird von mehreren Threads auf Intels Multi-Core-CPUs verwendet. Daher funktioniert der Single-Core-Raspberry Pi B + von ARM nicht mit mehreren Threads.
Wenn Sie sich die Beschreibung von hog.cpp im eigentlichen Modul ansehen, können Sie sehen, dass die Erkennungsverarbeitung für jede Bildgröße parallel ausgeführt wird, wie unten gezeigt.
void HOGDescriptor::detectMultiScale(
const Mat& img, vector
In der Tat im Windows Task-Manager Leistung Betrachten Sie den Betriebsstatus jedes Kerns in Zum Zeitpunkt von detectMultiScale () können Sie sehen, dass mehrere Kerne funktionieren. Auf der anderen Seite macht detect () das nicht.
Dies gilt auch für C ++ und Python.
Weil es mit Intel Threading Building Blocks (TBB) implementiert wird Im Quad-Core von RaspberryPi2, es sei denn, Sie haben eine andere Multithread-Implementierung Es scheint, dass die Vorteile von Quad Core nicht genossen werden.
Nachtrag: cv::parallel_for_ Informationen zur Verwendung finden Sie im hinzugefügten Referenzmaterial. cv::parallel_for_ Scheint Threads in einem anderen Framework in Umgebungen zu verwalten, in denen Intel TBB nicht verfügbar ist. In TBB wird gesagt, dass das Erstellen und Beenden von Threads nicht explizit beschrieben wird.
Nachtrag: Parallele Verarbeitung durch OpenCV TBB Es wird beschrieben, wie TBB und Änderungen während CMake von OpenCV installiert werden.
Threading Building Blocks Es ist unverzichtbar, CMake nach dem Erhalten.
OpenCV-Memorandum Ich habe OpenCV 2.4.11 mit Raspberry Pi 2 erstellt [Erstellen von OpenCV 2.4.10 auf Raspberry Pi 2] (http://iwaki2009.blogspot.jp/2015/02/raspberry-pi-2-opencv-2410.html) Laut Raspberry Pi 2 können Sie TBB von der Quelle installieren. Der letztere Artikel beschreibt die CMake-Einstellungen.
** Verweise ** "Parallelisierung und Beschleunigung der Verarbeitung durch TBB" http://opencv.jp/opencv2-x-tips/opencv_performance_with_tbb
"Versuchen Sie es mit cv :: parallel_for_" https://github.com/atinfinity/lab/wiki/cv :: parallel_for_% E3% 82% 92% E4% BD% BF% E3% 81% A3% E3% 81% A6% E3% 81% BF% E3% 82% 8B
Recommended Posts