Lorsque le détecteur de personne est utilisé avec la combinaison OpenCV + Python, La vitesse de traitement est beaucoup plus lente que prévu à partir de la vitesse d'horloge Je l'ai ressenti avec Raspberry Pi B +. Notez la raison.
hog=cv2.HOGDescriptor() hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) hogParams = {'winStride': (8, 8), 'padding': (32, 32), 'scale': 1.05} human, r = hog.detectMultiScale(im, **hogParams)
Une méthode appelée detectMultiScale () est utilisée par plusieurs threads sur les processeurs multicœurs d'Intel. En conséquence, le Raspberry Pi B + monocœur d'ARM ne fonctionne pas avec plusieurs threads.
Si vous regardez la description de hog.cpp dans le module actuel, vous pouvez voir que le traitement de détection est effectué en parallèle pour chaque taille d'image comme indiqué ci-dessous.
void HOGDescriptor::detectMultiScale(
const Mat& img, vector
En fait, dans le Gestionnaire des tâches de Windows, les performances En regardant l'état de fonctionnement de chaque cœur Au moment de detectMultiScale (), vous pouvez voir que plusieurs cœurs fonctionnent. D'un autre côté, detect () ne fait pas cela.
C'est la même chose pour C ++ et Python.
Parce qu'il est implémenté à l'aide de blocs de construction Intel Threading (TBB) Dans le quad core de RaspberryPi2, sauf si vous avez une autre implémentation multithread Il semble que les avantages du quad core ne seront pas appréciés.
Post-scriptum: cv::parallel_for_ Veuillez vous référer au matériel de référence ajouté pour savoir comment l'utiliser. cv::parallel_for_ Semble gérer les threads dans un autre cadre dans des environnements où Intel TBB n'est pas disponible. Dans TBB, on dit que la création et l'arrêt des threads ne sont pas explicitement décrits.
Post-scriptum: Dans Traitement parallèle par OpenCV TBB Il décrit comment installer TBB et les modifications pendant CMake d'OpenCV.
Threading Building Blocks Il est indispensable à CMake après avoir obtenu.
Mémorandum OpenCV J'ai construit OpenCV 2.4.11 avec Raspberry Pi 2 [Construire OpenCV 2.4.10 sur Raspberry Pi 2] (http://iwaki2009.blogspot.jp/2015/02/raspberry-pi-2-opencv-2410.html) Selon Raspberry Pi 2, vous pouvez installer TBB à partir de la source. Le dernier article décrit les paramètres de CMake.
** Les références ** "Parallélisation et accélération du traitement par TBB" http://opencv.jp/opencv2-x-tips/opencv_performance_with_tbb
"Essayez d'utiliser 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