Ich verwende einen HOG-Deskriptor in Verbindung mit einem SVM-Klassifikator, um Menschen in Bildern zu erkennen. Ich verwende die Python-Wrapper für OpenCV. Ich habe das hervorragende Tutorial bei pymagesearch verwendet , das erklärt, was der Algorithmus tut, und Hinweise zum Festlegen der Parameter der Methode detectMultiScale gibt .
Insbesondere tue ich
# initialize the HOG descriptor
hog = cv2.HOGDescriptor()
# Set the support vector machine to be pre-trained for people detection
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
# Detect people in the image
(rects, weights) = hog.detectMultiScale(image,
winStride=(4, 4),
padding=(8, 8),
scale=1.05)
Die Parameter werden gemäß einer Feinabstimmung sowohl der Genauigkeit als auch der Leistung gemäß den Erläuterungen im Lernprogramm selbst ausgewählt.
Mein Problem ist , dass diese Methode, die wie die derzeit beste Methode scheint die Menschen in einem Bild zu erkennen , nach Literatur (das Original Papier datiert 2005) scheint ziemlich schlecht auf meinen Bilder auszuführen. Ich habe Bilder mit Kleidung, sowohl mit als auch ohne Modell, und ich versuche diesen Ansatz, um diejenigen mit dem Modell zu erkennen. Bei einer Teilmenge von 300 Bildern, die ich manuell gescannt habe, um sie mit dem Modell zu versehen oder nicht, schlägt die Methode 30% der Fälle fehl.
Dies sind einige Bilder als Beispiele.
Hier entdeckte es einen vermissten Menschen:
Hier hat es nicht den vollen Menschen bekommen:
Hier hat es es überhaupt nicht erkannt:
Ich verstehe, dass der Detektor für aufrechte Menschen funktioniert. Sollten sie auch vollfigurig sein? Meine Bilder umfassen Halbfiguren, Figuren ohne Kopf oder Füße.
Zuvor habe ich einen auf Haar-Merkmalen basierenden Kaskadenklassifikator versucht, um das Gesicht in einem Bild zu erkennen, und die Genauigkeit für denselben Bildsatz betrug 90%. Daher habe ich versucht, dies zu verbessern. Ich bin auch daran interessiert zu verstehen, warum die Dinge hier nicht funktionieren.