0% ont trouvé ce document utile (0 vote)
139 vues4 pages

Resnet

Ce rapport présente un code pour prédire l'âge à partir d'images en utilisant un modèle pré-entraîné ResNet50, en adoptant une approche de régression. Les étapes incluent la préparation des données, la génération d'images, la définition et l'entraînement du modèle, ainsi que l'évaluation des performances. Le choix de ResNet50 est justifié par ses avantages en termes de généralisation et de rapidité d'entraînement, et le gel des couches est recommandé pour éviter le surapprentissage.

Transféré par

Rayen Abed
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
139 vues4 pages

Resnet

Ce rapport présente un code pour prédire l'âge à partir d'images en utilisant un modèle pré-entraîné ResNet50, en adoptant une approche de régression. Les étapes incluent la préparation des données, la génération d'images, la définition et l'entraînement du modèle, ainsi que l'évaluation des performances. Le choix de ResNet50 est justifié par ses avantages en termes de généralisation et de rapidité d'entraînement, et le gel des couches est recommandé pour éviter le surapprentissage.

Transféré par

Rayen Abed
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Rapport: Prédiction d’Âge avec un Modèle

Pré-entraîné ResNet50
Abed Rayen
January 7, 2025

1 Contexte et objectif du code


L’objectif principal de ce code est de prédire l’âge d’une personne à partir
d’images, en utilisant un modèle d’apprentissage profond. On adopte ici une
approche de régression (et non de classification), car l’âge est une variable
continue.
Le code comprend plusieurs étapes :
1. Préparation des données :
• Lecture des chemins de fichiers (images) et extraction de la variable
cible (l’âge).
• Création d’un DataFrame contenant les chemins et l’âge associé.
• Séparation de cet ensemble en deux sous-ensembles : un pour l’entraînement
(70%) et un pour les tests (30%).

2. Génération d’images (Data Generators) :


• Utilisation de l’API ImageDataGenerator de Keras pour prétraiter
les images (normalisation avec rescale=1./255, etc.).
• Définition des générateurs d’images pour l’entraînement, la validation
et les tests.

3. Définition du modèle (transfer learning) :


• Chargement d’un modèle pré-entraîné (ResNet50 ) avec include_top=False.
• Gel (freeze) des couches du ResNet50 (en mettant feature_extractor_ResNet.trainable
= False).
• Ajout de couches personnalisées (Flatten, Dropout, Dense) pour
adapter la sortie du modèle à la tâche de régression d’âge.
4. Compilation et entraînement :

1
• Définition de la fonction compile_model (avec l’optimiseur Adam) et
la fonction de perte MSE (pour la régression).
• Entraînement du modèle (fit_model) avec une stratégie d’arrêt pré-
coce (EarlyStopping).
5. Évaluation et analyse :

• Prévision de l’âge sur le jeu de test.


• Calcul du RMSE (Root Mean Squared Error) et du R^2 (coefficient
de détermination).

2 Justification du choix du modèle pré-entraîné


(ResNet50)
2.1 Avantages du Transfer Learning
1. Réduction du temps et du coût de calcul : Utiliser un réseau déjà
entraîné sur un large corpus d’images (ImageNet, par exemple) permet
de bénéficier de représentations de bas niveau déjà apprises (bords, tex-
tures, motifs). On évite ainsi de partir de zéro et d’entraîner un réseau de
grande profondeur, ce qui nécessiterait une grande quantité de données et
beaucoup de ressources informatiques.
2. Meilleure généralisation : Les poids pré-entraînés sur un large ensem-
ble d’images sont souvent plus généralisables, surtout lorsque le jeu de
données est de taille modeste (ici, un échantillon de 10 000 images). Le
risque de surapprentissage (overfitting) diminue.
3. Rapidité de convergence : L’entraînement est plus rapide : on n’entraîne
réellement que la dernière partie du modèle, au lieu d’entraîner toutes les
couches du réseau. Le gel partiel (ou total) des couches du modèle de base
permet d’atteindre un bon compromis entre performance et rapidité.

2.2 Pourquoi ResNet50 ?


1. Profondeur contrôlée : ResNet50 est un réseau profond (50 couches)
mais relativement efficace en termes de taille de poids et de performance.

2. Présence de skip connections (connexions résiduelles) : Ces con-


nexions facilitent la propagation du gradient, atténuent le problème de dis-
parition ou d’explosion du gradient et permettent d’entraîner des réseaux
plus profonds.

3. Support et compatibilité : Keras/TensorFlow fournit une intégration


facile de ResNet50 (et d’autres modèles), ce qui le rend pratique à utiliser
dans un pipeline de transfer learning.

2
3 Analyse comparative : couches gelées vs. couches
non gelées
3.1 Scénarios possibles
1. Couches gelées (freeze)
• Toutes les couches (ou la quasi-totalité) du modèle pré-entraîné ResNet50
sont figées.

• Seules les couches denses ajoutées à la fin sont entraînables.


• Avantages :
– Moins de paramètres à ajuster.
– Risque de surapprentissage réduit.
– Convergence plus rapide.
• Inconvénients :
– On ne bénéficie pas d’une fine adaptation des couches profondes à
notre jeu de données spécifique (prédiction d’âge).
– Performances potentiellement légèrement inférieures au modèle dégelé
si la tâche est très spécifique.

2. Couches non gelées (unfreeze)


• On autorise le ré-entraînement d’une partie (ou de toutes) les couches du
ResNet50.
• Avantages :

– Fine-tuning plus poussé du réseau, permettant d’extraire des carac-


téristiques plus spécifiques à la prédiction d’âge.
– Meilleure performance possible si on a suffisamment de données et
de ressources.
• Inconvénients :

– Risque de surapprentissage plus élevé, surtout si la base de données


n’est pas très grande.
– Entraînement plus long et plus coûteux en ressources.

3
3.2 Observations empiriques sur les performances
Avec couches gelées (code actuel)
• Généralement, on obtient déjà de bons résultats en régression d’âge, car
les caractéristiques de base (bords, textures) sont souvent suffisamment
pertinentes pour aider à la prédiction.
• Le RMSE et le R^2 peuvent être tout à fait satisfaisants, avec un en-
traînement rapide (quelques minutes à quelques heures suivant la config-
uration).

Avec certaines couches dégélées


• En pratique, pour améliorer encore la performance, on pourrait dégeler
seulement les dernières couches du ResNet50. Par exemple, dégeler
la moitié des couches supérieures (plus proches de la sortie), ce qui permet
un fine-tuning plus fin.
• On doit alors surveiller de près la courbe de validation pour éviter le
surapprentissage.
En règle générale, on conseille de commencer par geler toutes les couches, d’entraîner
quelques époques pour stabiliser le modèle, puis de dégeler un certain nombre
de couches si l’on constate que la perte sur l’ensemble de validation stagne ou
n’atteint pas la performance escomptée.

4 Conclusion
• Le code montre toutes les étapes nécessaires à la mise en place d’un
pipeline de régression d’âge à partir d’images : depuis la préparation
des données jusqu’à l’évaluation finale via RMSE et R^2.
• Le choix d’un modèle pré-entraîné ResNet50 se justifie par ses bonnes
performances sur un large corpus d’images, par sa facilité d’intégration
dans Keras, et par sa robustesse (skip connections).
• Le gel des couches du modèle pré-entraîné est une stratégie efficace pour
commencer un projet de transfer learning, surtout lorsque l’on ne dispose
pas d’un très grand jeu de données. Toutefois, un fine-tuning partiel des
couches peut apporter des gains de performance supplémentaires si on le
fait de manière contrôlée.

Vous aimerez peut-être aussi