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

Intelligence artificielle Discussion :

Reconnaissance des caractères


Sujet :

Intelligence artificielle

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 31
    Points
    31
    Par défaut Reconnaissance des caractères
    Bonjour,
    J’ai trouvé un bon exemple de reconnaissance des caractères par le réseau de neurone sur un cite officiel de Matlab : lien
    Voici un petit résumé de cet exemple :

    Un réseau doit être conçu et formé pour identifier les 26 lettres de l'alphabet. Après le prétraitement de chaque lettres (binairisation, redimensionnement (ici 5*7 pixel)), le résultat est que chaque lettre est représentée en tant que 5 *7 pixels.

    Voici un exemple pour la lettre A :



    Voici un exemple pour la lettre A en présence de bruit :



    Nous avons 5*7 =35 éléments qui seront stockés dans un vecteur qui s’appelle alphabet. Et puisque nous avons 26 lettres, chaque lettres est représentée par un numéro ou encore cible (targets). Par exemple pour la lettre A, targets =1 (pour B : targets =2, pour C : targets = 3 etc...).

    L’architecture de réseau de neurone est la suivante :



    Le réseau a besoin de 35 entrées et 26 neurones dans la couche de sortie pour identifier les lettres.
    Les 26 fonctions d’activations (ou fonction de transfert) pour la couche de sortie utilisées pour cette exemple sont : logsig (De même pour les 10 fonctions d’activations de la couche cachée).



    Le réseau est formé pour produire un 1 en position correcte du vecteur de sortie et de remplir par 0.
    Questions :
    1- Pourquoi le choix de 10 neurones de la couche cachée ? Autrement dit comment peut-on déterminer le nombre de neurones de la couche cachée ?

    2- Quand est ce qu’on ajoute d’autres couches cachées ? Parce que j’ai trouvé le même exemple, sauf que cette fois pour la reconnaissance des chiffres (vous pouvez le télécharger ici) avec deux couches cachées.

    3- Pourquoi ont-ils utilisé la fonction d’activation logsig et non pas par exemple hardlim ?

    4- Ce type de réseau est appelé feed-forward backpropagation network. Est ce que quelqu’un à une idée sur ce type de réseau ?

    Merci !

  2. #2
    Membre éprouvé
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Points : 1 179
    Points
    1 179
    Par défaut
    Miam du Réseau de Neurone

    Questions :
    1- Pourquoi le choix de 10 neurones de la couche cachée ? Autrement dit comment peut-on déterminer le nombre de neurones de la couche cachée ?
    Selon moi il n'y a pas de formule pour déterminer le nombre de neurones de la couche cachée... moi j'aurais tendance à en mettre autant que tu as d'entrées... mais apres je n'en sais pas bcp plus.

    2- Quand est ce qu’on ajoute d’autres couches cachées ? Parce que j’ai trouvé le même exemple, sauf que cette fois pour la reconnaissance des chiffres (vous pouvez le télécharger ici) avec deux couches cachées.
    Plus tu ajoute de couches, plus tu devrais être précis tout simplement... encore une fois pas de standards... à toi de voir.

    3- Pourquoi ont-ils utilisé la fonction d’activation logsig et non pas par exemple hardlim ?
    logsig est la plus utilisée, je connais pas l'autre que tu propose d'ailleurs... apres tu peux t'en construire une rien qu'a toi...

    4- Ce type de réseau est appelé feed-forward backpropagation network. Est ce que quelqu’un à une idée sur ce type de réseau ?
    Je suppose qu'on peut traduit ça par "apprentissage par rétropropagation du gradient". Il s'agit de calculer ton erreur en sortie, et de faire "remonter" cette erreur couche par couche pour ajuster tes poids synaptiques au fur et à mesure, en fonction de cette erreur bien sur. Il existe pas mal de doc à ce sujet, je doute que tu ait trop de mal à en trouver...

    Bon courage.
    "le langage C permet de tout faire, y compris se tirer dans le pied. Le langage C++ permet de tout faire, y compris se tirer dans le pied - et réutiliser la balle"

  3. #3
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par djtsou Voir le message
    1- Pourquoi le choix de 10 neurones de la couche cachée ? Autrement dit comment peut-on déterminer le nombre de neurones de la couche cachée ?
    Il est impossible de le déterminer. Sauf dans des cas simplissimes. Donc généralement, tu en mets autant que dans la couche d'entrée... un peu plus, ou un peu moins... Tu vois le genre ?

    Citation Envoyé par djtsou Voir le message
    2- Quand est ce qu’on ajoute d’autres couches cachées ? Parce que j’ai trouvé le même exemple, sauf que cette fois pour la reconnaissance des chiffres (vous pouvez le télécharger ici) avec deux couches cachées.
    Comme l'a dit Ange_Blond, ça permet de pouvoir approcher des "fonctions" de plus en plus complexes. Toutefois, tu peux jeter un oeil au Théorème de Cybenko

    Citation Envoyé par djtsou Voir le message
    3- Pourquoi ont-ils utilisé la fonction d’activation logsig et non pas par exemple hardlim ?
    C'est toi qui voit ça. Par contre, si tu veux avoir des 0 et 1 uniquement en sortie, et non pas de valeurs de [0;1], c'est une fonction seuil qu'il te faut.

    Citation Envoyé par djtsou Voir le message
    4- Ce type de réseau est appelé feed-forward backpropagation network. Est ce que quelqu’un à une idée sur ce type de réseau ?
    Comme l'a dit Ange_Blond, c'est lié à l'algorithme d'apprentissage qui y est attaché. Un tutoriel sur la théorie des réseaux de neurones feed-forward devrait d'ailleurs faire son apparition dans quelques temps, sur developpez.

  4. #4
    Membre éprouvé
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Points : 1 179
    Points
    1 179
    Par défaut
    Citation Envoyé par Alp Voir le message
    Par contre, si tu veux avoir des 0 et 1 uniquement en sortie, et non pas de valeurs de [0;1], c'est une fonction seuil qu'il te faut.
    Pas forcément, il suffit de prendre la plus grande des valeurs à la sortie... ça évite de "perdre" des info via seuillage sur la sortie...
    "le langage C permet de tout faire, y compris se tirer dans le pied. Le langage C++ permet de tout faire, y compris se tirer dans le pied - et réutiliser la balle"

  5. #5
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Tu as mal compris mon message.
    S'il veut avoir que des 0 et des 1 en sortie, il faut une fonction à seuil.
    Et c'est ce qu'il a écrit.

    Par contre, si on a une fonction sigmoïde sur la couche de sortie (pour chaque neurone), alors effectivement il suffit de prendre la plus grande des valeurs de sortie (= la plus proche de 1). Mais ça ne permet pas d'avoir des 0 et des 1 en sortie. Et ça bloque pour l'apprentissage

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Merci Ange_blond et Alp de me répondre,

    Tout est clair maintenant et c’est grâce à vous bien sûre . Sauf que j’ai un petit problème.

    Revenons à notre architecture de réseau de neurones :
    Si vous vous rappelez, j’ai dit que le réseau a besoin de 35 entrées et 26 neurones dans la couche de sortie pour identifier les lettres.
    Est que :
    - chaque neurone prend les 35 valeurs de pixels de l’image en entrée de la même lettre
    -ou chaque neurone prend les 35 valeurs de pixels de l’image en entrée de toutes les lettres
    -ou chaque neurone prend la valeur d’un pixel de l’image en entrée de la même lettre (ici il ne faut donc 35 neurones pour la première couche et non pas 10) ?

  7. #7
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Quand tu lui donnes l'image, que tu décomposes en 35 pixels, tu vas avoir donc 35 informations en entrée. Ces 35 informations seront reliées à chacun de tes 10 neurones de la couche cachée.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    maintenant tout est claire!
    juste une petite information:
    mon travail en fait ne concerne pas la reconnaissance des caractères (surtout ne partez pas ).
    mon travail est d'identifier une une signature manuscrite, alors ToTo13 ma conseillé de jeter un œil sur les méthode de reconnaissance de caractères manuscrit lien. et puis voila!
    Ca m'a vraiment aider et je le remercie encore.
    je pense que nous pouvons utiliser le réseau de neurone pour la reconnaissance d'une signature manuscrite, sauf que le vecteur contenant les 35 éléments d'information (5*7 pixels) ne permet pas de garantir toute la pertinence des caractéristiques contenu dans ce vecteur . alors je doit augmenter sa taille.
    ma question est: si j'augmente le nombre d'élément d'information ( par exemple de 35 à 2500 ou plus) es que l'architecture de réseau de neurone, utilisé pour la reconnaissance des caractères, sera t-il modifié ?
    ou prendre cette architecture et de faire un petit apprentissage de ce réseau?
    merci

  9. #9
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Si tu as N pixels, ça te fait N informations faire passer dans ton réseau de neurone.

    Et alors ?
    Hé bien en fait pour gérer ces N informations, il faut voir en faisant des tests combien de neurones de couche cachée il te faut. Tu n'as qu'à tester.
    Je ne sais pas s'il te faut changer le nombre de neurone de la couche cachée.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    vous avez raison: Plus j'ajoute de couches, plus la précision augmente.

    je vous remercie encore!

  11. #11
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Si tu augmentes le nombre de pixels, je doute qu'il faille plus de couches mais plutôt plus de neurones dans la couche cachée.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Alp Voir le message
    Si tu augmentes le nombre de pixels, je doute qu'il faille plus de couches mais plutôt plus de neurones dans la couche cachée.
    Plus de neurones dans la couche cachée, Surtout pas ça !

    De plus vous m'avez dit que: "Il est impossible de le déterminer. Sauf dans des cas simplissimes. Donc généralement, tu en mets autant que dans la couche d'entrée."

    svp vous pouvez m'aider

  13. #13
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Pour être clair, la boite noire des réseaux de neurones c'est la couche cachée. Tu ne sais pas à l'avance combien en mettre. Tu dois faire des tests, avec un apprentissage tout prêt, et modifier le nombre de neurones, et voir quelle structure donne les meilleurs résultats.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SVM pour la reconnaissance des caractère
    Par ryad31 dans le forum Images
    Réponses: 1
    Dernier message: 14/04/2013, 22h19
  2. Réponses: 0
    Dernier message: 16/02/2011, 22h56
  3. [WD-2003] Reconnaissance des caractères spéciaux dans du code Word VBA
    Par laurent_diep dans le forum VBA Word
    Réponses: 15
    Dernier message: 10/06/2009, 11h02
  4. Réponses: 0
    Dernier message: 27/12/2008, 16h44
  5. [FLASH MX2004] Problème de reconnaissance des caractères
    Par Spikefreeman dans le forum Flash
    Réponses: 10
    Dernier message: 05/01/2005, 00h08

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