J'utilise un descripteur HOG, couplé à un classificateur SVM, pour reconnaître les humains dans les images. J'utilise les wrappers Python pour OpenCV. J'ai utilisé l'excellent tutoriel de pymagesearch , qui explique ce que fait l'algorithme et fournit des conseils sur la façon de définir les paramètres de la méthode detectMultiScale .
Plus précisément, je fais
# 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)
Les paramètres sont choisis en fonction d'un réglage fin de la précision et des performances, en suivant les explications du didacticiel lui-même.
Mon problème est que cette méthode, qui semble être la meilleure méthode actuellement pour reconnaître les humains dans une image selon la littérature (l' article original est daté de 2005) semble fonctionner assez mal sur mes images. J'ai des images contenant des vêtements, avec et sans modèle et j'essaie cette approche pour reconnaître ceux qui ont le modèle. Sur un sous-ensemble de 300 images que j'ai scanné manuellement pour les étiqueter pour contenir le modèle ou non, la méthode échoue 30% des fois.
Ce sont quelques images comme exemples.
Ici, il a détecté un humain disparu:
Ici, il n'a pas obtenu l'humain complet:
Ici, il ne l'a pas reconnu du tout:
Je comprends que le détecteur fonctionne pour les humains debout. Doivent-ils également être complets? Mes images englobent des demi-figures, des figures sans tête ni pieds.
Avant cela, j'ai essayé un classificateur en cascade basé sur les fonctionnalités de Haar pour reconnaître le visage dans une image et la précision sur le même ensemble d'image a été de 90%, alors j'essayais d'améliorer cela. De plus, je suis intéressé à comprendre pourquoi les choses ne fonctionnent pas ici.