PT21-22-Reseau-Neurones/CahierDesCharges.md
2021-12-16 17:06:51 +01:00

4.7 KiB
Raw Permalink Blame History

Conception dune librairie de réseaux neuronaux

Samedi 23 Octobre 2021

Hugo EYNARD Thomas BLUSSON Romain MOREAU Gabriel CHAVANON

Responsable référent: Gabriel CHAVANON

Dépot GITEA: https://dwarves.iut-fbleau.fr/gitiut/blusson/PT21-22-Reseau-Neurones

Sommaire

  • Sommaire
  • Cahier des charges fonctionnelles
    • Contexte
    • Etudes détaillées des objectifs (analyses des besoins)
    • Calendrier et priorisation des objectives
  • Cahier des charges techniques et méthodologique
    • Bibliographie

Cahier des charges fonctionnelles

Contexte

Client : Pierre VALARCHER (tuteur)

Description:

Nous comptons concevoir notre propre librairie de réseaux neuronaux et loptimiser par la suite à travers différents tests (reconnaître des caractères manuscrites). Pour ceci nous ne comptons pas nous appuyer sur des solutions déjà existantes (comme TensorFlow) mais bien tout réaliser de A à Z. Pour ce qui est de loptimisation (une meilleure vitesse d'exécution et une meilleure précision des résultats) on pourra utiliser des tests et des outils comparatifs (ancienne version de notre projet ou encore des librairies déjà existantes).

Contraintes :

On réalisera ce projet en Python orienté objet et grâce à ses librairies, tout notre travail sera disponible surnotre dépôt GITEA.

Existant :

Nous avons à notre disposition un jeu de données contenant des images de chiffres annotés avec le chiffre correspondant. Ilnous permettra d'entraînernotre réseau neuronal pour le tester.

Etudes détaillées des objectifs (analyses des besoins)

Fonctionnalités : -Choix de la fonction dactivation pour chaque couche de neurones -Choix du nombre de couches de neurones -Choix du type de neurones pour chaque couche -Choix du nombre de neurones dans chaque couche -Faire une prédiction à partir dun réseau de neurone -Entraîner le réseau de neurones -Exporter et importer létat (modèle, biais et poids) dun réseau de neurones -Visualiser l'entraînement dun réseau de neurone à deux entrées

Bob le développeur possède un jeu de données comportant des images de chats et de chiens annotés. Il commence par importer Sobek. Ilchoisit ensuitepour son modèlederéseauneuronaldavoirunematrice 360 par 360 pourentrée.Ildécidede mettre 2 premières couches de 180 neurones convolutifs,puis 2 couchesde 64 neuronesdenses(ouclassiques)etenfinunesortiede 2 neuronesdenses(Unpour chienet un pourchat). Il sépareson jeude donnéesen 2 parties:ilutiliseles 3 premiers quarts pour entraîner son réseau neuronal et après quelques minutes d'attente, il utilise le dernier quart pour estimer sa précision. Après quelques modifications et tests de l'architecture de son réseaupour obtenir une meilleure précision, Bob est satisfait et peut maintenant utiliserson réseaupour faire des prédictions.

Calendrier et priorisation des objectives

Jalon 0 : Cahier des charges (à signer) début novembre Jalon 1 : Perceptron multicouche (première itération du projet), mi décembre M 1.1 : Partie prédiction du perceptron multicouche M 1.2 : Partie apprentissage du perceptron multicouche M 1.3 : Estimation de la précision du perceptron multicouche S 1.4 : Exportation et importation de létat du réseau neuronal M Jalon 2 : Utilisation concrète du réseau neuronal, fin décembre M Jalon 3 : Visualisation 2D de lentraînement du réseau neuronal M Jalon 4 : Réseau de neurones convolutif (version optimisée du perceptron multicouche), fin janvier S 4.1 : Création dun système de choix de type de couche M 4.2 : Implémentation du neurone convolutif M Jalon 5 : Utilisation concrète du réseau convolutif, fin février C

Cahier des charges techniques et méthodologique

Nous avons choisi dutiliser le Python car cest un langage plutôt abordable qui est communément utilisé pour le machine learning. On compte également utiliser Scipy (NumPy (gestion des tableaux), Matplotlib (visualisation de données sous forme graphique).

Méthodologie de travail : On envisage dutiliser la méthode agile (1 sprint correspond à 1 jalon) ainsi que le pair programming.

On compte utiliser très fréquemment GIT, et faire des tests unitaires dès que possible. On utilisera make pour lexécution des tests et des mises en application.

Bibliographie

https://en.wikipedia.org/wiki/Types_of_artificial_neural_networks

https://youtu.be/bVQUSndDllU

https://youtu.be/aircAruvnKk

https://www.mygreatlearning.com/blog/open-source-python-libraries/

https://fr.wikipedia.org/wiki/Matplotlib

https://brilliant.org/wiki/backpropagation/

Apprentissage machine Clé de lintelligence artificielle - Rémi Gilleron, 2019

Deep Learning with Python, 2nd Edition - FrançoisChollet, 2021