Ce projet vise à générer automatiquement des descriptions textuelles (captions) pour des images en utilisant des techniques de Deep Learning. Il s'appuie sur un modèle encodeur-décodeur (CNN + LSTM) entraîné sur le dataset Flickr30k.
- loader.py : Chargement, prétraitement des images et des légendes, gestion du vocabulaire.
- model.py : Définition du modèle
ImageCaptioningModel(ResNet50 pré-entraîné comme encodeur + LSTM comme décodeur). - train.py : Script d'entraînement du modèle, suivi des métriques, sauvegarde des checkpoints.
- predict.py : Génération de descriptions pour de nouvelles images à partir d'un modèle entraîné.
- flickr30k_images/ : Dossier contenant les images et le fichier CSV des légendes.
-
Cloner le dépôt
git clone https://github.com/ZEP13/IMAGE_CAPTIONING cd IMAGE_CAPTIONING -
Installer les dépendances
Utilisez un environnement virtuel recommandé.pip install torch torchvision pillow pandas spacy tqdm tensorboard nltk python -m spacy download en_core_web_sm
-
Télécharger le dataset Flickr30k
Placez les images dansflickr30k_images/flickr30k_images/et le fichierresults.csvdansflickr30k_images/.
Lancez l'entraînement du modèle :
python train.py- Les checkpoints seront sauvegardés dans le dossier
checkpoints/. - Les logs TensorBoard sont dans
runs/image_captioning/.
Pour générer une description sur une image :
python predict.py --image chemin/vers/image.jpgLa légende générée s'affichera dans le terminal.
- Encodeur (CNN) : ResNet50 pré-entraîné (ImageNet), dont la dernière couche est remplacée par une couche linéaire pour obtenir un vecteur d'embedding.
- Décodeur (LSTM) : Prend l'embedding de l'image et génère séquentiellement les mots de la légende.
- Paramètres d'entraînement : Modifiables dans
train.py(taille d'embedding, learning rate, batch size, etc.). - Seuil de fréquence du vocabulaire : Ajustable dans
loader.pyet les scripts principaux.
Pour suivre l'entraînement et explorer les embeddings :
tensorboard --logdir runs/image_captioningProjet réalisé dans le cadre du cours de Machine Learning & Deep Learning.