1. Rapport du projet
Réalisée par : Khalil ISMAIL
Classe : BD-BI 3-2
Introduction :
L'intelligence artificielle est l'utilisation de méthodes et de techniques pour simuler
l'intelligence humaine, tandis que l'apprentissage automatique est un mécanisme qui
permet à un système d'apprendre de l'expérience et de continuer à améliorer ses
compétences et sa capacité de prise de décision.
Il existe deux catégories d'algorithmes d'apprentissage automatique :supervisés et non
supervisés. Dans l'industrie, l'apprentissage automatique est utilisé dans divers
domaines tels que le diagnostic médical et le traitement d'image.
I. Contexte du projet et travail demandé :
Le projet réalisé dans la matière "Intelligence artificielle" consiste à créer un
classificateur basé sur un réseau de neurones convolutif (CNN). Ce type de réseau de
neurones est une méthode d'apprentissage profond qui permet de classer les 4
catégories d'objets du jeu de données fourni : chats, chiens, chevaux et humains. Le but
est de développer un modèle capable de reconnaître ces différentes catégories d'objets
en utilisant des techniques d'apprentissage automatique.
II. Le réseau de neurones convolutif CNN :
1. La méthode d’apprentissage profond « Deep Learning » :
L'apprentissage profond (ou Deep Learning) est un type d'intelligence artificielle dérivé
du machine Learning (apprentissage automatique) où la machine est capable
d'apprendre par elle-même. Il s'appuie sur un réseau de neurones artificiels inspiré par
le cerveau humain, composé de plusieurs couches de neurones, chacune recevant et
interprétant les informations de la couche qui la précède. Il existe plusieurs types
d'algorithmes utilisés en apprentissage profond, chacun ayant ses propres spécificités
et applications.
2. Les algorithmes les plus couramment utilisés :
les réseaux de neurones convolutifs (CNN)
réseaux de neurones récurrents (RNN)
réseaux de fonction de base radiale (RBFN)
réseaux de mémoire à long et court terme (LSTM)
réseaux adversariaux génératifs (GAN) et machines de Boltzmann restreintes
(RBM).
Dans notre projet, nous nous intéressons aux réseaux de neurones convolutifs (CNN)
pour classer les catégories d'objets fournies dans le Dataset.
2. Le réseau de neurones convolutif :
Un « convolutional neural network » (CNN) est un type de réseau neuronal artificiel
utilisé dans le domaine de la reconnaissance et le traitement d’images et il est
spécifiquement développé pour traiter les données de pixels.
Les réseaux de neurones convolutives sont de puissants systèmes de traitement
d’images, d’intelligence artificielle qui utilisent un apprentissage approfondi pour
effectuer des tâches à la fois génératives et descriptives, en incluant le Machine Vision
qui aide à reconnaitre les images et les vidéos.
Les CNN ou ConvNets, sont constitués d'une multitude de couches chargées de traiter
et d'extraire les caractéristiques des données. Ils sont conçus pour l'analyse et la
détection d'objets.
Les CNN peuvent donc servir par exemple à reconnaître des images satellites, traiter
des images médicales, détecter des anomalies ou prédire des séries chronologiques.
III. Environnement de réalisation :
1. Jupyter Notebook :
3. Jupyter Notebook est une application web qui permet de stocker et d'exécuter du code
écritenPython,ainsiquedevisualiserlesrésultatsdel'exécutiondececodesousforme
de graphiques, tableaux, etc.
Il permetégalementdecréer et departagerdes documents interactifs quicombinent du
code, des visualisations, des textes de documentation et des équations. C'est un outil
populaire pour les scientifiques, les ingénieurs, les data scientists et les développeurs
qui travaillent avec Python, car il permet une collaboration facile, une documentation
interactive et une visualisation de données.
2. Le langage python :
Python est un langage de programmation populaire pour sa flexibilité et sa facilité
d'utilisation. Il est utilisé dans de nombreux domaines, notamment le développement
web, le développement d'applications financières et l'automatisation de tâches. Il est
également largement utilisé dans le domaine de l'apprentissage automatique, de
l'apprentissage en profondeur et de l'intelligence artificielle en raison de sa facilité
d'utilisation et de sa grande communauté de développeurs. Il est facilement intégrable
àd'autresbibliothèquesetoutilspourleMachineLearningetleDeepLearning,cequien
fait un choix populaire pour les projets de ces domaines.
3. Les bibliothèques python utilisés dans notre projet :
Matplotlib est une bibliothèque Python pour créer des graphiques et des visualisations
de données. Il est souvent utilisé en combinaison avec NumPy et SciPy pour visualiser
les résultats de calculs scientifiques.
NumPy est une bibliothèque Python pour la manipulation de tableaux
multidimensionnels et des fonctions mathématiques opérant sur ces tableaux. Il est
souvent utilisé en combinaison avec Matplotlib et SciPy pour des calculs scientifiques.
Keras est une API de réseau de neurones écrite en Python qui facilite la création de
modèles de Deep Learning. Il est exécuté sur des Framework tels que TensorFlow ou
Theano.
TensorFlow est une bibliothèque open source utilisée pour créer des modèles de Deep
Learning et pour effectuer des tâches d'apprentissage automatique complexes. Il
4. fournit une boîte àoutils pour résoudre des problèmes mathématiques complexes avec
aisance et simplicité. Il peut être utilisé avec Keras pour faciliter l'implémentation des
modèles de Deep Learning.
IV. Réalisation du projet :
Nous devons importer toutes les librairies qui nous serons nécessaires par la suite :
Préparation des données :
Affichage du contenu de répertoire dans une liste :
5. Entrainement du modèle :
On commence toujours par créer un modèle de type Séquentiel.
On crée une première couche qui va permettre d’aplatir la matrice
Puis on construit nos couches cachées et la couche de sortie.
On utilise les couches de convolution (Conv2D), de normalisation par lots
(BatchNormalization), de max-pooling (MaxPooling2D), de découpage (Dropout) et de
densité (Dense) pour construire le modèle.
LapremièrecoucheConv2Davec32filtresdetaille3x3etunefonctiond'activationReLU
est utilisée pour extraire des caractéristiques de l'image d'entrée de taille 100x100x3.
La deuxième couche Conv2D avec 32 filtres de taille 3x3 et une fonction d'activation
ReLU est utilisée pour extraire des caractéristiques plus profondes. La normalisation
par lots est utilisée pour réduire les variations de données entre les différents lots.
La couche MaxPooling2D est utilisée pour réduire la dimension de l'image en divisant
par 2 les dimensions de l'image avec des pas de 2.
Les deux prochaines couches sont similaires àla première et ladeuxième couche, mais
avec 64 filtres cette fois-ci.
La couche Flatten est utilisée pour aplatir les caractéristiques extraites en un vecteur.
La couche Dropout est utilisée pour réduire l'overfitting en éteignant aléatoirement
certains neurones pendant l'entraînement.
6. La dernière couche Dense avec la fonction d'activation softmax est utilisée pour
effectuer la classification en utilisant les caractéristiques extraites par les couches
précédentes.
Une fois ces cellules exécutées, on peut faire un résumé de ce que l’on a :
Le résultat est le suivant.
Cela nous permet de nous assurer qu’il n’y a pas d’erreurs.
7. Il faut maintenant compiler le modèle :
La première ligne définit le nombre d'époques pour l'entraînement à 20.
La méthode compile() est utilisée pour configurer l'entraînement en spécifiant
l'optimiseur Adam, la fonction de coût de la croix catégorique et les métriques
d'évaluation de précision.
La méthode fit_generator() est utilisée pour entraîner le modèle en utilisant un
générateur de données d'entraînement (train_batches) et un générateur de données de
validation (valid_batches). Le nombre de pas par époque est défini par steps_train et
steps_valid respectivement.
La variable history contient les informations de l'entraînement comme les valeurs de la
fonction de coût et les métriques d'évaluation pour chaque époque.
Les lignes suivantes calculent le temps d'entraînement en utilisant la fonction time(),
puis affichent les résultats de l'évaluation de la précision en utilisant le générateur de
données de validation (valid_batches) et en spécifiant le nombre de pas (steps=1).
Les époques s’exécuter l’une après l’autre.
8. L’époque (epochs) correspond au nombre de passage effectués sur les poids. Plus il y a
d’époques plus l’entrainement prendra de temps mais plus le modèle sera efficace.
Suivit de l’entrainement :
Maintenant que le réseau est entraîné, nous pouvons regarder l’évolution de nos
performances époque après époque. Cette étape est importante.
Elle permet d’abord de nous assurer que les résultats sont bons. Et elle peut aussi
permettre de détecter un éventuel over-fitting.
Voici les courbes obtenues :
. La courbe en bleu correspond aux données d’entraînement tandis que la courbe en
orange présente les données de validation :
Si la courbe bleue suit et la courbe orange l’entraînement est bien réalisé.
Quandle modèle augmente ses performancessur lesdonnées d’entraînement, il
augmente aussi ses performances sur les données de validation.
9. Le test :
Dans cette partie on a fait le test d’une image pour reconnaître la race :
Conclusion :
En résumé, nous avons implémenté un réseau de neurones convolutionnel en utilisant
Python pour classifier des images en quatre catégories différentes (chats, chiens,
chevaux et humains).