Détection de personnes par le haut

16

J'essaie de trouver une méthode pour détecter les personnes utilisant une seule caméra à 3 mètres du sol. Ceci est un cadre retourné par la caméra:

entrez la description de l'image ici

MISE À JOUR: Test vidéo -> http://dl.dropbox.com/u/5576334/top_head_shadow.avi

Pour ce faire, je comprends d'abord que je dois effectuer une segmentation arrière-plan au premier plan. C'est la partie facile.

Avec le masque de premier plan, je suis capable de faire des opérations simples telles que Hough transformer pour trouver des cercles, mais de cette façon, ne détecte que 60% des têtes, y compris de nombreux faux positifs.

Je pourrais utiliser d'autres techniques simples comme la segmentation des couleurs, mais j'ai trouvé que les têtes des gens sont très différentes vu d'en haut en raison de leur coiffure, couleur, quantité de cheveux, ...

Une autre option que j'ai à ce sujet est la possibilité d'utiliser des descripteurs HOG ou des fonctionnalités de type Haar, mais j'aurais besoin d'une base de données complète de personnes vues d'en haut pour former les modèles. Je n'ai rien trouvé de tel.

Je pensais que ce serait un problème très récurrent, mais je ne trouve pas grand-chose à ce sujet dans la littérature ou sur Internet. Toute aide pour résoudre cette tâche sera appréciée :-)

MISE À JOUR: Pour plus d'informations, l'objectif est de mettre en œuvre une méthode générique pour effectuer le suivi des flux piétons. Le premier prototype sera testé dans un centre commercial.

emepetres
la source
1
Si vous pouvez publier des vidéos, il est possible que quelqu'un écrive un prototype. Pouvez-vous poster s'il vous plaît?
Andrey Rubshtein
@Andrey, j'ai téléchargé un test vidéo montrant le problème.
emepetres
@emepetres Si vous avez des ressources pour tester ce problème, vous avez peut-être aussi des ressources pour trouver une caméra secondaire? Combiner des vues de deux caméras (une vue de dessus et une frontale ou sous un angle) et utiliser des informations des deux sons intéressants et comme une approche plausible du suivi du flux des piétons (selon la précision dont vous avez besoin)
penelope
4
cette tâche est appelée «compter les gens» dans la littérature.
mrgloom
Pouvez-vous fournir un lien pour cette vidéo. Il n'est plus disponible dans le lien fourni
Garvita Tiwari

Réponses:

11

Y a-t-il d'autres objets qui peuvent se déplacer à côté des gens? S'il n'y en a pas, vous pouvez simplement trouver les blobs (composants connectés) dans votre masque de premier plan, et ce sont vos gens.

Ils peuvent également "entrer en collision" les uns avec les autres, créant un blob au lieu de deux. Dans ce cas, vous pouvez effectuer un suivi de mouvement et résoudre l'ambiguïté en utilisant le fait que la trajectoire et la vitesse sont lisses.

S'il y a d'autres objets (comme des chiens, des voitures), vous devez créer un classificateur qui obtient des paramètres de blob comme:

  • Statistiques de blob (taille, solidité, etc.)
  • Couleur
  • Informations sur les bords
  • Vitesse (en cas de suivi)

Et renvoie la classe correcte (Humain / Aucun humain).

Andrey Rubshtein
la source
1
Je suis à la recherche d'une méthode robuste qui puisse également distinguer entre humain / non humain. De cette façon, après avoir réfléchi à votre réponse, je pense que l'utilisation des paramètres de blob comme vous l'avez suggéré, combinée à certaines fonctionnalités de suivi et à certaines informations statistiques du blob devrait être suffisamment robuste.
emepetres
8

J'ai été dans le "afin d'utiliser des méthodes bien testées, j'aurais besoin d'une vaste base de données d'exemples que je n'ai pas" position dans une très petite entreprise qui "ne pouvait pas se le permettre". Je regrette beaucoup de ne pas avoir fait tout ce qui était nécessaire pour obtenir autant de données que possible. Je pense que cela aurait finalement fait une différence pour eux.

Toute sorte de détection de vision dans le monde réel a un million de choses auxquelles vous n'avez pas pensé jusqu'à ce que vous l'essayiez et que cela échoue. C'est un vieux problème beaucoup, beaucoup plus difficile qu'il n'y paraît. Je recommanderais de m'en tenir à la méthode newtons de "se tenir sur les épaules des géants" (ou, presque aussi bien, au sommet d'un grand tas de nains). Autrement dit, utilisez une méthode que vous connaissez déjà et qui est robuste. Tout ce qui semble être "assez bon" échouera misérablement.

État de l'art en matière de détection des piétons dernier lieu que je connaissais était le HOG qui a été initialement testé exactement dans ce cadre. Vous voulez un suivi , vous devrez donc jouer un peu dans google scholar pour le trouver. Acheter mon point principal est que j'ai été dans une position similaire et que je vous recommanderais d'obtenir votre base de données, quoi que vous ayez à faire, et d'utiliser quelque chose que vous savez fonctionner, qui est déjà testé avec un taux d'échec connu, pas quelque chose qui sonne juste bien. La marche vers la mort de 40 ans des algorithmes de vision par ordinateur qui "semblent fonctionner" n'est pas quelque chose dont vous voulez faire partie.

PS Ne cherche pas à critiquer la vision par ordinateur. C'est l'un de mes domaines préférés. Mais son histoire suggère qu'il y a mille mauvaises mesures à prendre et pas beaucoup de bonnes. Il vaut mieux suivre quelqu'un qui a déjà trouvé certaines de ces bonnes étapes.

John Robertson
la source
Vous avez peut-être raison, et je devrais passer un peu de temps à créer une bonne base de données pour former et tester un descripteur HOG. De cette façon, savez-vous quelle taille minimale aurait cette base de données pour effectuer correctement la formation?
emepetres
1
Je ne sais pas. Une variété aussi large que possible. De plus, HOG est un détecteur, il renvoie une réponse "oui il y a une personne" ou "non personne" pour une image et rien d'autre. Il ne dit rien sur l'endroit où se trouve la personne (emplacement), sur les pixels de la personne (segmentation) ou sur le fait qu'il y ait plusieurs personnes contre une seule. Je pense que certaines adaptations au HOG ont été apportées (certaines brevetées), mais l'essentiel est ce que vous voulez, c'est le suivi des personnes et le HOG en l'état ne concerne que la détection , pas même l'emplacement. Je ne l'ai jamais fait, mais le suivi des personnes est un sujet de longue date. Consultez les documents sur le suivi des personnes.
John Robertson
1
@John Robertson HOG n'est pas un détecteur, c'est juste un descripteur et il est utilisé avec un classificateur (SVM + HOG par exemple) et il peut retourner l'emplacement de l'objet.
mrgloom
1
@mrgloom Vous avez raison. Il retourne l'emplacement en faisant une recherche fenêtrée. Cela n'est cependant rapide qu'avec une méthode brevetée par une grande entreprise. Je ne voulais pas utiliser le mot détecteur dans le sens technique ici, juste dans le sens anglais que c'est quelque chose qui détecte. Il fournit uniquement un emplacement dans un sens lâche que dans cette fenêtre, il y a quelqu'un à environ 80-90% de l'échelle de la fenêtre, mais sans aucune identification de quelles parties de la fenêtre peuvent appartenir à la personne. Je connais la distinction technique descripteur / détecteur.
John Robertson
3

Je pense que tu pourrais commencer en combinant quelques réponses d'ici.

Il y a deux approches différentes mentionnées dans ce réponse, avec la différence majeure qu'il vous est impossible de faire la détection de visage car vous ne voyez pas les visages. Mais l'autre approche est toujours applicable: décider que la météo est un piéton ou non en fonction de ses actions (mouvements) .

Comme vous l'aviez prédit, cela suggérerait d'utiliser une sorte de segmentation avant-plan-arrière-plan. Une recherche très rapide sur Google cet article récent qui semblait assez prometteur, mais comme je ne l'ai jamais fait personnellement, vous ou quelqu'un d'autre pourriez avoir de meilleures suggestions d'algorithme spécifique à utiliser dans cette étape.

Maintenant, la première réponse que j'ai liée donne juste une idée d'approche très générale. Cette réponse pourrait cependant vous donner une idée de vos prochaines étapes: suivre les objets et essayer de les distinguer en fonction de la vitesse ou de la direction de déplacement .

Enfin, je n'ai jamais abordé le problème que vous aviez, donc je ne suis probablement pas d'une grande aide, mais peut-être que les réponses auxquelles j'ai lié peuvent vous donner une idée générale par où commencer. Cela m'a également surpris de ne pas avoir trouvé d'ouvrages et d'articles précédents lors de la recherche d'une réponse à votre problème, mais alors, peut-être avez-vous juste besoin de quelqu'un pour vous dire les mots clés corrects pour décrire ce problème .

Pénélope
la source
Merci pour votre réponse. L'article sur la segmentation de premier plan semble très intéressant. Comme vous et @Andrey l'avez suggéré, je suivrai l'approche de l'analyse des taches pour déterminer le nombre d'humains dans chaque goutte.
emepetres
@emepetres Ce serait bien si vous nous faites part de vos résultats et du succès de l'approche une fois que vous l'avez essayée et testée
penelope
1

J'ai une sorte de tâche telle que décrite ici, compter les gens. Mais mon exigence est que la caméra doit faire face aux gens du côté gauche / droit, pas au-dessus de la tête.

Cela étant dit, en explorant une solution possible pour mon cas, je tombe sur une méthode intéressante pour votre cas (détection des frais généraux). Ces solutions utilisent une caméra stéréo afin que vous puissiez gérer les blobs (les personnes se rapprochant trop près les unes des autres) en voyant la profondeur (par exemple, ne voir les blobs qu'au niveau moyen de la tête des personnes).

Ce produit pourrait vous donner une meilleure explication: digiop . Voir la brochure pour plus d'explications techniques.

PS Je ne représente pas l'entreprise, je ne fais que souligner une solution bien documentée

bonchenko
la source
Merci du partage, cela semble être un moyen intéressant de résoudre le problème.
emepetres