Implémentez des modèles de sous-titrage d'images neuronales avec PyTorch basés sur une architecture encodeur-décodeur.
L'ensemble de données est Flikr8k, ce qui est suffisamment petit pour le budget de calcul et pour obtenir rapidement les résultats. Dans l'ensemble de données, il y a 8 091 images, avec 5 légendes pour chaque image. Il est donc sujet au surajustement si le modèle est trop complexe. La source officielle est cassée, d'autres liens vers l'ensemble de données pourraient être ici et ici
L'architecture du modèle est décrite ci-dessous. Le réseau d'encodeur pour l'image est Resnet-101 (peut être chargé depuis torchvision). Le décodeur est essentiellement un modèle de langage basé sur LSTM, avec le vecteur de contexte (fonctionnalité d'image codée) comme état initial caché/cellule du LSTM [1]. Un modèle attentif est également implémenté [2].
Le modèle est formé par SGD avec élan. Le taux d'apprentissage commence à partir de 0,01 et est divisé par 10 car bloqué sur un plateau. L'élan de 0,9 et la décroissance du poids de 0,001 sont utilisés.
Le modèle [1] peut obtenir des descriptions relativement raisonnables, avec un score au test BLEU-1 de 35,7.
Images | Légendes |
---|---|
Deux chiens jouent dans l'herbe. | |
Une personne fait du kayak dans le bateau. | |
Un garçon barbote dans une piscine. | |
Deux personnes sont assises sur un quai au bord de l’eau. | |
Un footballeur en uniforme rouge court avec un ballon de football devant une foule. | |
Un snowboarder saute d'une colline. | |
Un chien brun joue avec une balle dans le sable. | |
Un garçon en chemise bleue court dans un champ herbeux. | |
Un groupe de personnes vêtues de costumes colorés. |
Python 0.4.1
[1] Show and Tell : un générateur de légendes d'images neuronales (https://arxiv.org/abs/1411.4555)
[2] Montrer, assister et raconter : génération de légendes d'images neuronales avec attention visuelle (https://arxiv.org/abs/1502.03044)