IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Utilisation de cvHaarClassifierCascade


Sujet :

OpenCV

  1. #1
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut Utilisation de cvHaarClassifierCascade
    Salut,

    Je regarde comment fonctionne le CvHaarClassifierCascade dans l'exemple facedetect mais j'ai un peu de mal a comprendre le fonctionnement. Comment puis je creer mon propre classifieur ? En guise d'exemple on trouve la detection du visage, des yeux .... si je veu faire pour la bouche par exemple, comment puis je proceder ?

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut
    salut

    j'ai fait un tuto sur la génération d'un classifier tu peux la trouver
    de même j'ai commencé à bosser sur un projet qui la met en oeuvre :
    http://www.deb-indus.org/concombre
    c'est un petit programme qui permet de remplacer des objets détectés dans un flux webcam et de les remplacer par autre chose
    tu peux regarder les sources si tu veux d'autres exemples

  3. #3
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut
    Cool, je regarde ca de suite

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut
    Salut AntalGeek,

    Merci pour ton tutoriel qui m'a beaucoup aidé á comprendre certains paramétrages d'OpenCV.

    J'ai lancé l'apprentissage avec tes propres fichiers et les paramètres que tu as utilisés (j'ai copier-coller ta même ligne de commande).
    Mais pourtant après 3 apprentissage, le nombres de stages du classifier abouti est différent : la première fois 19 en 2 jours, la seconde je l'ai arrêté á 22 parce que ca faisait près de 10 jours qu'il tournait, la je l'ai relancé et il est au 17e stage en une demi-journée (j'attends donc pour voir)...

    Pour le premier apprentissage :
    Je ne sais pas trop a quoi m'attendre comme résultat avec le haartraining. Peut-etre suis-je trop exigeant mais je trouve que 2-4 fausses positives par images en lancant le classfier sur le TRAINING set ca fait un peu beaucoup, surtout pour un modèle d'objet aussi simple que la bouteille.
    En plus, je me demande s'il se base pas sur le fond blanc de l'imagette insérée de la bouteille pour la détecter. Ca serait trop facile de détecter la bordure de l'imagette insérée.

    Pour le deuxieme apprentissage (que j'ai moi meme stopper car ca faisait qd meme 10 jours qu'il tournait et 2 jours sur le meme stage) :
    Il n'y avait quasiment aucun faux positifs mais le taux de faux negatifs etait pres de 40 % si c'est pas plus. C'est que le classifier etait trop restrictif et je ne pense pas que cela aurait arrangé les choses si je l'avais laissé continuer l'apprentissage.

    Sinon, pourrais-tu m'expliquer ce qu'opèrent les parametres suivants ? Je n'ai toujours pas compris malgré dse recherches sur Internet :
    [-nsplits <number_of_splits = 1>] le nombre de splits dans le decision tree... ? Le decision tree c'est le weak classifier ? Du coup, il y aurait deux tests à passer pour le weak classifier ? Comment sachant que : Haarfeature=PoidsRectNoir*SumPixelsRectNoir+PoidsRectBlanc*SumPixelsRectBlanc
    Je ne vois vraiment pas a quoi cela pourrait correspondre.

    Et par curiosité ceux la aussi :

    [-weighttrimming <weight_trimming = 0.950000>]

    [-eqw]

    [-err <misclass (default) | gini | entropy>]

    [-maxtreesplits <max_number_of_splits_in_tree_cascade = 0>]

    [-minpos <min_number_of_positive_samples_per_cluster = 500>]

    Une derniere question :
    Supposons que l'objet a detecter fait 50*100 pixels. Afin d'extraire le plus d'info possibles de l'objet
    a detecter, il fautdrait une taille des fenetres : sample_width = 50 et sample_height = 100, non ? Mais comme cela impliquerait de creer tellement de features que l'apprentissage durerait une eternite on prefere se limite a des tailles de fenetres plus petites... ?

    Cependant, j'ai l'impression que j'ai plus de fausses positives (en testant avec mes propres positives/negtatives) en augmentant la taille des fenetres (-w -h) (en faisant varier que ce parametre) . Cela te parait-il logique ?

    Merci d'avance pour toute ton aide et a tous ceux qui y contriburont.
    Je sais que ca en aidera surement pas mal d'autres aussi qui passeront par la.

    Vince

  5. #5
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut
    J'ai trouver un document bien simpas :

    http://fsa.ia.ac.cn/files/OpenCV_Fac...ion_June10.pdf

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut
    Merci. Malheureusement, j'etais deja tombe dessus et ca m'a pas eclaire davantage....

    -Ca n'expique tjrs pas pourquoi en lancant deux fois le meme apprentissage les resultats differents...

    -Par rapport au parametre -nsplits et au weak classifier : un weak classifier est donc un decision tree ? et a chaque fils de l'arborescence, il y a un test par rapport a un masque de haar ? et le nombre de split correspond au nombre de masques de haar utilises dans un stage ?
    Desole si je m'exprime mal.

    -Quand on choisi la taille -w 20 -h 50, quelle taille ont les masques de haar qui sont crees ? Est-ce que ce sont tous les masques possibles de rapport width/heigth=2/5 sur toute la fenetre de taille 20 / 50 qui sont crees OU ce sont uniquement les masques de haar de taille w=20 et h=50 ?

    Je suis en train de lire l'article Empirical Analysis of Detection Cascades of Boosted Classifiers for Rapid Object Detection de Rainer Lienhart, Alexander Kuranov, Vadim Pisarevsky, 2002.
    Ca devrait peut-etre m'aider.

    Merci en tout cas

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut
    Salut vinceBcool

    Tes remarques ne m'étonnent pas beaucoup j'ai eu moi aussi pas mal de surprises quand j'ai fait du haartraining et encore très récemment quand j'ai ressorti de vieilles cascades.

    Sur l'exemple des bouteilles donné dans le tuto j'avais eu de bons résultats avec un training de 2 jours sur une brouette (celeron 1600-512Mo de ram), je discriminais des bouteilles de champagne d'autres bouteilles de vin sur des fonds variés. Il faudrait que je retourne voir dans mon répertoire de travail car j'avais fait d'autres cascades avec des résultats moins bons.

    Pire que ça j'ai repris une cascade faite sur la même machine avec opencv 1.0 sur une machine récente (amd64 X2 et phenom X4) avec opencv 1.1 et là plein de faux positifs.
    J'ai eu des echos du même genre quand des gentils geeks ont testé mon soft concombre avec les classifiers haarcascade_frontalface...

    Je suis encore loin de maîtriser le sujet d'autant que je n'ai plus l'occasion de me plonger dedans (même s'il le faudrait).
    Plusieurs fois j'ai eu envie de m'adresser à Naotoshi Seo qui m'a l'air de bien maîtriser le sujet.

    Concernant tes questions sur les différents paramètres il faut que je remette la main sur mes notes mais je ne sais pas si j'aurais des réponses très poussées. Je vais tacher de te trouver ça. De tête je me mélange les pinceaux et encore je zappe les paramètres de distorsion.

    J'espère qu'au terme de cette discussion nous pourrons envisager une nouvelle version du tutoriel, plus complète et moins recette de cuisine. Je vois en effet beaucoup de personnes à qui cela rendrait service (dont moi )

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut
    Meme si j'ai pas trouve toutes mes reponses, j'en ai appris un peu plus grace a l'article mentionne plus haut (dans mon precedent post). Surtout sur la generation des features en fait.

    Pour ameliorer le tuto, faudrait deja voir quoi mettre dedans. Je suis pret a contribuer qd je trouve du temps libre...

    PS: Et si t'as du nouveau par rapport a mes questions, je suis preneur

  9. #9
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut Syntaxe
    Bonjour,

    Je vais devoir générer un classifier pour une pièce donnée dans le cadre d'un stage.

    Antalgeek, en ce qui concerne la syntaxe de negative.txt par exemple, tu y mets tous tes fichiers, en désordre. Pour pas dans l'ordre ?

    Merci

  10. #10
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut
    Je suis partie sur autre chose temporairement (j'attends des ressources pour mon classifier) mais des que je mis remet je serai ravis de participer a la realisation d'un tuto. Et de tout maniere moi aussi c'est pour un stage donc il faut que je fasse une doc de son l'utilisation.

  11. #11
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut Windows
    Bonjour !

    Je travaille sous windows et j'ai quelques questions à propos des lignes de commandes.
    Je teste avec les images de Antalgeek (les dossiers négative et positive, les fichiers négative.txt et positive.txt et les deux script) juste pour assimiler.
    Je souhaite lancer la première commande
    perl createtestsamples.pl positive.txt negative.txt training/ (sous DOS)
    et j'ai :
    'opencv-createsamples' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commande.

    Si quelqu'un pouvait m'aider ? J'ai déjà passé plusieurs heures dessus.
    (Je suis dans le bon répertoire (mon répertoire de travail) et la library OpenCV dans C:\ProgramFile\OpenCV et perl est installé)

    Merci

  12. #12
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut
    Regarde tes variables d'environement...

  13. #13
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut
    Bonjour

    J'ai eu un coup de génie et j'ai trouvé ! Merci
    Je suis arrivé à générer le ficher xml.

    En parallèle je monte un petit tuto pour les utilisateurs de windows (ce qui servira par la suite aux autres stagiaires et à ceux qui pourraient être intéressé).

  14. #14
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut Lancement
    Bonsoir,

    Alors j'ai lancé le calcul du haarclassifier (avec les données de Antalgeek).

    Dans la première demi-heure, il m'a fait 15 stages. Puis dans l'heure qui a suivit, simplement 3.
    Je le laisse tourner cette nuit, on verra demain matin.

    Bonne fin d'aprem !

  15. #15
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut Mon propre apprentissage
    Bonsoir.

    Et oui c'est encore moi... Alors j'ai lancé le tout avec des photos à moi. Pour aller plus vite, j'ai implémenter un petit script perl qui à partir des dossiers positive et négative crée le script xml en passant par toutes les étapes.

    Je fais une reconnaissance des visages dans une pièce avec une webcam. En face de la webcam se trouve un mur avec plein d'affiches, qui parfois sont détectées. Le but est de faire un haartraining pour cette pièce en particulier afin de détecter les visages seulement.
    J'ai donc 47 images négatives de l'arrière de cette pièce, que j'ai mises en noir et blanc et redimensionnées par 640*480. J'ai 9 images positives, en couleur, redimensionnées à peu près autour de 200*200. Je lance le script, pas de souci, j'ai mon fichier xml.

    A côté, j'ai créé un simple programme, des plus basiques possibles, qui me repère un visage dans le flux d'une caméra avec le script haarcascades/haarcascade_frontalface_alt.xml.
    Avec ce script, mon visage est détecté, avec le mien, pas du tout.

    Je vois plusieurs possibilité :
    - je n'ai pas assez d'images négatives
    - je n'ai pas assez d'images positives
    --> je n'ai que 3000 lignes dans mon xml contre + de 26000 dans celui de openCV. Mais le xml antalgeek n'en n'a que 2000.

    Quelqu'un a-t-il une idée ?

    J'ai mis en pièce jointe les fichiersHaartraining avec le sript (je n'ai pas inclus de tuto, la version n'est pas finie) et mon fichier de déctection via le fichier xml (attention je travaille sous windows).

    Merci
    Fichiers attachés Fichiers attachés

  16. #16
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut
    Citation Envoyé par mémèreSoso Voir le message
    J'ai donc 47 images négatives de l'arrière de cette pièce, que j'ai mises en noir et blanc et redimensionnées par 640*480. J'ai 9 images positives, en couleur, redimensionnées à peu près autour de 200*200. Je lance le script, pas de souci, j'ai mon fichier xml.


    Je vois plusieurs possibilité :
    - je n'ai pas assez d'images négatives
    - je n'ai pas assez d'images positives
    Bonsoir

    J'ai maintenant 118 images négatives.
    J'ai lancé la génération pour w=h=20 puis ensuite pour w=h=40. J'ai mon fichier xml mais toujours pas de résultat quand je l'utilise dans mon programme c+

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut
    Citation Envoyé par mémèreSoso Voir le message
    Bonsoir

    J'ai maintenant 118 images négatives.
    J'ai lancé la génération pour w=h=20 puis ensuite pour w=h=40. J'ai mon fichier xml mais toujours pas de résultat quand je l'utilise dans mon programme c+
    Je pense que le haartraining n'est pas adapte a ton contexte. Il faudrait beaucoup plus de negatives. Avec une seule piece ca doit etre difficile d'obtenir assez de negatifs.

    Dans ton cas precis : reperer un objet dans une piece particuliere, peut-etre que les SIFT (voir SURF dans opencv) seraient plus appropries ?

    Et si tu trouves la bonne methode, je serais bien interresse de savoir

  18. #18
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut
    Merci pour la réponse, je regarde ca dans les mois à venir (je me suis sur une autre mission mais je le ferais avant la fin de mon stage, c'est-à-dire septembre).
    Si je trouve, je mets ca en ligne !

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo