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

Méthodes prédictives Discussion :

Reconnaissance de forme par réseau neuronal


Sujet :

Méthodes prédictives

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 148
    Par défaut Reconnaissance de forme par réseau neuronal
    Salut !

    Je suis en train de développer un système de reconnaissance de formes. Pour cela j'utilise un réseau de neurones. Le problème, c'est que pour l'instant ça ne marche pas bien du tout. Les formes que je cherche à différencier dans un premier temps sont les lettres majuscules de l'alphabet. Mes entrées sont les points (noirs = 1 ou blancs = -1) d'une image de 20x20 pixels. Les sorties sont les points d'une image de 20x20 pixels, dont les valeurs sont calculées ainsi (voir schéma) :

    http://www-igm.univ-mlv.fr/~dr/XPOSE2002/Neurones/index.php?rubrique=Neuroneformel

    les 400 synapses et le seuil de comparaison sont propres à chaque neurone de sortie. Les entrées de ces neurones de sortie sont les sorties de tous les 400 neurones d'entrée. Vous suivez ?

    Je ne sais pas si je m'oriente bien, je débute completement dans ce domaine. Là je galère, et je voulais demander si quelqu'un pourrait m'aider, ou me donner un algo comprehensible, qui marche pour le besoin que j'éprouve. Je fais pas mal de recherches, mais pas moyen de trouver des explications à la fois claires pour un débutant et précises.

    Dois je diminuer le nombre de sorties, ou relier autrement les neurones ? Comment faire évoluer les pondérations des synapses ???

    Merci

  2. #2
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    met-tu une synapse par lettre? ou est-ce autre-chose?
    quelle methode à-tu tenté (je n'y connais rien en neurone non plus mais bon, je peux toujours essayer)

    salut

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 148
    Par défaut
    Salut

    Une synapse par lettre ? Non, en fait chaque neurone de sortie a 400 synapses, ça fait donc 160.000 synapses en tout !

    Sinon, la méthode que j'utilise est le perceptron monocouche, enfin, si j'ai programmé comme il faut...

    a+

  4. #4
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Euh, tu essaies d'implémenter un perceptron monocouche, certes, mais ces deux phrases :
    les 400 synapses et le seuil de comparaison sont propres à chaque neurone de sortie. Les entrées de ces neurones de sortie sont les sorties de tous les 400 neurones d'entrée
    me déroute !
    Il te faudra passer par une phase d'apprentissage, avec des images de référence, et une détection d'errur, par exemple.
    Si erreur (que tu auras toujours, donc lire si erreur donnée), changer le poids sinon, laisser.
    Un exemple simple !
    Tu prends une image en entrée simple et non bruitée (un A majuscule par exemple), tu le mets dans ton RN et tu fais une comparaison pixel par pixel entre ce qu'il te sort et ce qu'il devrait te sortir.
    Si l'erreur est importante, tu modifies les poids des pixels erronés, et tu recommences.
    Bien sûr tu ne fais pas ça à la main .

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    C'est un sujet assez classique (la reco d'écriture), tu trouveras quantité d'articles à ce sujet sur le net et autres revues spécialisées.

    Reste que je te conseille de commencer avec un simulateur de RdN pour valider architectures, prétraitements (probablement la phase la plus importante), et algos avant de coder quoique ce soit. SNNS est un grand classique.

    En force brute (images non pré-traitées), les SVM (site -> kernel-machine) sont efficaces. Ce sont des cousins éloignés des RdN. Je n'ai plus suivi s'il avaient été appliqués à la reco d'écriture ou pas.

    Quant au perceptron monocouche, c'est l'exemple récurrent traité sur les tutoriels ... le plus inefficace qui soit. A se demander si les gens qui le présentent l'ont déjà essayé. ?: Certes, c'est le B-A-BA de la théorie, mais il ne reste qu'un jouet historique.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    ça me fait penser à tes algo génétiques progman... tu vas bien t'entendre avec Remiz

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Des réseaux de neurones pour la reconnaissance de formes... pourquoi pas, mais c'est quoi la sortie de ce réseau-là ? J'ai pas trop bien compris pourquoi il fallait 20x20 en sortie. 26, oui, mais 20x20...
    J'aurais déjà fait un multi-couche, c'est pas vraiment linéaire comme décision, d'où aussi l'intérêt des SVMs qui ne font de ce genre d'exercie qu'un bouchée de pain, sans compter qu'on a pas de problème de fitting.

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 148
    Par défaut
    Salut,

    Miles : en fait tu as besoin d'un neurone de sortie par lettre ? Dans ce cas ça rédsimplifie mon algo. Mais ce qui ne me parrait pas logique avec cette méthode, c'est que quelle que soit la combinaison des entrées, l'importance d'une synapse donnée resterait la même tout le temps. Il faudrait que l'algo reconnaisse une lettre quelle que soit sa taille et sa position...

    Sinon que sont les SNNS et les SVM ?

    a+

  9. #9
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    SNNS :array: google => Stuttgart Neural Network Simulator
    SVM :array: google -> kernel-machines => Support Vector Machine
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par Rémiz
    Il faudrait que l'algo reconnaisse une lettre quelle que soit sa taille et sa position...:
    C'est pas ce que tu veux ?? : :

  11. #11
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 148
    Par défaut
    Ok, merci

    Miles : si, c'est ce que je voeux, mais justement je doute que ça marche. Car l'importance d'un pixel ne doit pas dépendre de sa position sur l'image, mais de sa position sur la lettre...Enfin, j'ai du mal à tout expliquer...

    Bon, sinon je regarde les SNNS et SVM...

  12. #12
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par Rémiz
    Miles : si, c'est ce que je voeux, mais justement je doute que ça marche. Car l'importance d'un pixel ne doit pas dépendre de sa position sur l'image, mais de sa position sur la lettre...Enfin, j'ai du mal à tout expliquer...
    Ca, c'est sûr...
    Avec un réseau qui te sort 26 valeurs, tu auras simplement l'indication de quelle est la lettre présentée en entrée. Avec 20x20, tu veux sortir quoi comme valeur ?

  13. #13
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 148
    Par défaut
    Salut,

    Je m'imaginais sortir le dessin d'une lettre standard, enregistrée en mémoire. Mais à mon avis, ça marcherait plus difficilement... En fait, avec avec 26 sorties, tu calcules le pourcentage de correspondance, et tu détermines la lettre en voyant la sortie qui a le plus gros pourcentage ?

  14. #14
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Citation Envoyé par Rémiz
    En fait, avec avec 26 sorties, tu calcules le pourcentage de correspondance, et tu détermines la lettre en voyant la sortie qui a le plus gros pourcentage ?
    C'est le principe des algos compétitifs -- bien que pas nécessairement un pourcentage.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  15. #15
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par Rémiz
    Salut,

    Je m'imaginais sortir le dessin d'une lettre standard, enregistrée en mémoire. Mais à mon avis, ça marcherait plus difficilement... En fait, avec avec 26 sorties, tu calcules le pourcentage de correspondance, et tu détermines la lettre en voyant la sortie qui a le plus gros pourcentage ?
    Ben oui. Dans le cas contraire, il faut que tu testes tout de même quelle est la lettre la plus proche du résultat qui t'es fourni par le réseau qui n'a donc servi à presque rien...

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 102
    Par défaut
    Je pense que les réseaux neuronnaux sont un moyen fonctionnel et relativement facile a implémenté, mais il demande beaucoup plus de performance et donne un résultat beaucoup moins bon que la reconnaissance par correlation qui, selon moi, est souvent la méilleure solution . Je travaille actuellement sur un système de reconnaissance d'image, les deux methodes sont utilisés dans mon projet, et ce que je dis plus haut est le retour de mes premiers test. Essaye de te renseigner sur le sujet.
    Pensez au tag , à la balise [Code] ainsi qu'au règles ! C'est pour le bien de tous !

  17. #17
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    De toute manière, le problème des réseaux neuronaux est qu'on ne sait pas trop ce qu'on fait et quand on doit s'arrêter de faire apprendre - d'ailleurs, on ne sait pas trop non plus comment apprendre -

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 154
    Par défaut
    Rémiz : tu devrais lire un peu plus de documentation sur le sujet avant de commencer à programmer, tu n'as sans doute pas vraiment compris le principe des réseaux neuronaux...

    En sortie, tu peux soit avoir 26 neurones, soit un seul neurone avec une valeur entre 0 et 1 qui te donnera la lettre, en découpant en 26 sous intervalles par exemple.
    ça n'a pas de sens d'avoir 400 sorties...

    D'autre part, un réseau d'une seule couche ne pourra certainement pas te donner de résultat, il faut au moins 2 couches. le perceptron multi couche est sans doute le plus simple à programmer.

    Ensuite tu as besoin d'une phase d'apprentissage, c'est à dire un certain nombre d'échantillons que tu sais classer, et tu appliques par exemple un algorithme de rétropropagation du gradient. Tu peux faire une recherche sur google pour avoir plus d'infos la dessus, c'est un sujet qui a été énormément exploré...

    Enfin, pour la reconnaissance de caracteres, l'expérience montre que l'entrée ne doit pas etre les 400 pixels, on obtient de bien meilleurs résultats en calculant un "feature vector" (je sais pas comment on dit en français) à partir de l'image, encore une fois je te renvois à toute la documentation que l'on trouve la dessus sur le net.

  19. #19
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    En sortie, tu peux soit avoir 26 neurones, soit un seul neurone avec une valeur entre 0 et 1 qui te donnera la lettre, en découpant en 26 sous intervalles par exemple.
    Juste une remarque la dessus: 1 seul neurone avec une valeur entre 1 et 26 (pour simplifier) n'est pas une bonne idée...
    Une fois la phase d'apprentissage terminée, ça fonctionnera parfaitement avec une entrée qui appartient au set d'apprentissage, par exemple un "B" parfait. Mais si on présente au réseau une lettre "manuscrite", qui ressemble autant à un "B" qu'à un "D", le réseau risque de sortir la valeur moyenne entre 2 et 4 ... soit un "C"... C'est génant (voir How should categories be encoded?)

    Sinon, tout à fait d'accord pour la phase d'apprentissage (tu peux faire des recherches du le terme retropropagation pour en savoir plus), et pour les feature vectors.

    Concernant les features, tu peux dans un premier temps (sans trop te compliquer la tâche) découper ton image de 20x20 en 25 blocs de 4x4. Pour chaque bloc, tu peux facilement trouver le pattern qui s'en rapproche le plus, parmis une trentaine de patterns predéfinis (tout noir, tout blanc, moitié-moitié vertical, .....). Ca ne te fait plus que 25 entrées pour ton réseau. Je n'ai pas eu l'occasion d'essayer (je compte le faire prochainement), mais d'après mes lectures le resultat est bien plus correct / efficace qu'avec une entrée par case. Bien sûr tu peux calculer des features beaucoup plus efficaces, mais c'est tout de suite plus difficile

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 154
    Par défaut
    merci pour la précision sur la sortie, j'avais pas pensé à ce probleme, ça me servira sans doute un jour

Discussions similaires

  1. Reconnaissance de forme par reseau de neurone artificiel
    Par tefymahery dans le forum MATLAB
    Réponses: 0
    Dernier message: 04/11/2013, 16h01
  2. Reconnaissance de formes par réseaux de neurones
    Par bilou_12 dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 26/11/2012, 15h01
  3. Reconnaissance de forme par RN
    Par amintek dans le forum Images
    Réponses: 2
    Dernier message: 05/04/2007, 12h09

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