Die Verbesserung der Genauigkeit OpenCV HOG Menschen-Detektor
Ich arbeite in einem Projekt. Ein Teil des Projekts zu integrieren, die SCHWEIN-Menschen-Detektor von OpenCV mit einer Kamera-streaming .
Derzeit funktioniert die Kamera und die grundlegenden HOG-Detektor (CPP detectMultiScale -> http://docs.opencv.org/modules/gpu/doc/object_detection.html). Aber nicht sehr gut funktionieren... Die Funde sind sehr lärmend und der Algorithmus ist nicht sehr Genauigkeit...
Warum?
Mein Bild der Kamera ist 640 x 480 Pixel.
Snippet-code, den ich verwende, ist:
std::vector<cv::Rect> found, found_filtered;
cv::HOGDescriptor hog;
hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());
hog.detectMultiScale(image, found, 0, cv::Size(8,8), cv::Size(32,32), 1.05, 2);
Warum nicht richtig? Was brauchen Sie für die Genauigkeit verbessern? Notwendig ist einige Bild-Größe?
PS: wissen Sie, einige Menschen präzise Erkennung-Algorithmus, schneller und entwickelt in cpp ??
Vielen Dank für Ihre Antwort Micka! Sie sagen: "mindestens die Größe der HOG-Deskriptor"... aber Was ist das für eine Größe? wissen Sie, andere Möglichkeiten oder existiert nur "getDefaultPeopleDetector"?? Vielen Dank!!
Diese website könnte dir helfen: geocities.ws/talh_davidc
InformationsquelleAutor Ricardo | 2014-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Größe des Standard-Menschen-Detektor ist 64x128, das bedeutet, dass die Menschen, die Sie möchten, um zu erkennen, müssen mindestens 64x128. Für Ihr Kamera-Auflösung, das würde bedeuten, dass eine person würde annehmen müssen, einiges an Platz, bevor man richtig erkannt.
Abhängig von Ihrer spezifischen situation, die Sie könnten versuchen, Ihre hand auf die Ausbildung der eigenen HOG-Deskriptor, mit einer kleineren Größe. Sie konnte werfen Sie einen Blick auf diese Antwort und die referenzierten Bibliothek wenn Sie möchten, trainieren Sie Ihren eigenen HOG-Deskriptor.
Für die Parameter:
win_stride:
Angesichts Ihrer input-Bild hat eine Größe von 640 x 480, und die defaultpeopleDetector hat eine Fenstergröße von 64x128, können Sie die HOG-Detection-Fenster ( 64x128 Fenster) mehrfach in der Eingabe Bild.
Die winstride sagt HOG zu bewegen, die Fenster Erkennung einen bestimmten Betrag pro Zeit.
Wie funktioniert das:
Hog Orte der Erkennung Fenster oben Links Ihre Eingabe Bild.
und verschiebt das Fenster Erkennung jedes mal durch die win_stride.
Wie diese (kleine win_stride):
oder wie diese (große win_stride)
Einem kleineren winstride sollte die Genauigkeit erhöhen, jedoch sinkt die Performance, und die andere Weise herum
Polsterung
Polsterung fügt eine bestimmte Menge von zusätzlichen Pixel auf jeder Seite des eingangsbildes. So wird die Erkennung der Fenster liegt etwas außerhalb des Eingabe-Bildes. Es ist, weil der Polsterung, die HOG erkennen können, Menschen, die sehr nah an den Rand des eingangsbildes.
group_threshold
Die group_treshold wird ein Wert ermittelt, indem, wenn erkannt Teile sollten in einer Gruppe.
Niedrigen Wert liefert kein Ergebnis Gruppierung, einen höheren Wert liefert Ergebnis gruppieren, wenn die Höhe der Schwelle gefunden wurde, im inneren der Erkennung von windows. (in meiner eigenen Erfahrung, ich habe noch nie benötigt, um den Standardwert zu ändern)
Ich hoffe, das macht ein bisschen Sinn für Sie.
Ich arbeite mit dem HOG für die letzten paar Wochen und lese viel Zeitungen, aber ich verlor einige der Referenzen, so kann ich nicht verlinken Sie die Seiten, wo diese info herkommt, tut mir Leid.
Vielen Dank für deine Antwort Timmynator0! Woher wissen Sie es? Kennen Sie eine Dokumentation zu diesem Algorithmus und seiner Parameter? Nun weiß ich nicht, interessiert in der Ausbildung meiner eigenen HOG-Deskriptor. Vielen Dank! 🙂
Ich aktualisiert meine Antwort zu reflektieren, Ihre neue Frage zu den Parametern. Wenn dies war hilfsbereit, markieren Sie bitte meine Antwort als die richtige Antwort.
InformationsquelleAutor Timmynator0