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:
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.
la source
Réponses:
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:
Et renvoie la classe correcte (Humain / Aucun humain).
la source
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.
la source
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 .
la source
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
la source