Les fichiers caract.py et libcaract.py fournissent un logiciel et des fonctions permettant la reconaissances de caractères à l’aide d’un réseau de neurones.
Ce programme propose la reconnaissance de caractères (chiffres uniquement) à l’aide de réseaux de neurones.
Il y a deux programmes principaux: caract.py et aug-base.py qui peuvent fonctionner ensemble.
Ces programmes reposent sur une organisation des données bien particulière. Les images à reconnaître doivent être placées dans le dossier reco. Les images placées dans le dossier base seront utilisés pour réaliser l’apprentissage du réseau et seront donc totalement connues par celui ci. Les images placées dans inconnu seront inconnues par le réseaux et il tentera de reconnaître quel caractère y figure.
ATTENTION les images doivent être au format png en niveaux de gris et mesurer 8*8 pixels. Un fichier vide.png est disponible, il suffit de le copier et de le modifier pour s’assurer d’être dans le bon format.
Les fichiers dans base doivent être nommés correctement: la première lettre du nom de fichier doit être le chiffre qu’il représente, afin que le programme sache quel chiffre il doit apprendre. Les fichiers dans inconnu sont nommés comme bon vous semble.
Maintenant voyons l’utilisation des programmes:
Par exemple pour charger le réseau “res” et réaliser l’apprentissage jusqu’à une erreur de 0.1 on appelle le programme comme qui suit:
python3 caract.py 0.1 res
aug-base.py: Ce programme est plus interactif. Il tourne en boucle et effectue dans l’ordre:
Chargement du réseau ‘working’
Attente que l’utilisateur ait modifié reco/inconnu.png
Tentative de reconnaissance de inconnu.png
Enregistrement du réseau et retour au 2.
Nombre de chiffres à reconnaître (en partant de 0).
Erreur quadratique à atteindre par les réseaux.
Nombre de neurones sur la première couche du réseau.
Division du pas à chaque palier (voir référence de reseau.perceptron.learn12).
Charge les réseaux sauvegardé sous name .
Réalise l’aprentissage d’un réseau unique reseau (numéro i) avec la base base. Recharge la base d’apprentissage et effectue un apprentissage jusqu’à une erreur ecart, avec un pas variable de division div .
Ajoute un triplet (i, data_base, data_inconnu) à la Queue q et (i, res). Où data_base, data_inconnu sont les listes des erreurs successives des éléments de la base et inconnus et res le nouveau réseau après aprentissage
Recharge la base d’apprentissage et effectue un apprentissage jusqu’à une erreur ecart, avec un pas variable de division div . Si graph est à true, calcule le graphique de l’apprentissage, l’affiche si show_graph est à True.
Imprime les résultats à l’écran. Montre le graphique si graph vaut true.
Propose la sauvegarde du réseau sous le nom “name” (si vide, le nom sera demandé en entrée).
Met tous les pixels de l’image dans une liste, la ramène entre 0 et 1 et inverse.
Donne la réponse attendue en fonction du nom du fichier. La réponse est un vecteur de dimension nb_out, contenant des -1 sauf dans la ligne i. Le i étant le premier caractère du nom de fichier.
Imprime à l’écran le ligne de réponse des réseaux rs au fichier name. Retourne true ssi le chiffre était le chiffre attendu.
Imprime les résultats pour tout le dossier dirname, donné par les réseaux rs.