Ismail Ben Alla

Image Captioner

Légendage d'images multimodal

Multimodal · août 2024 · Terminé

Un modèle qui regarde une photo et écrit une phrase pour la décrire

Construit avecPyTorchCustom TransformersStreamlitPoetryHugging Face Transformerseinopstorchvision

Image Captioner — vue d’ensemble

Présentation

Le légendage d'images demande à un modèle de relier deux modalités : les pixels et les mots. Je voulais comprendre ce lien de l'intérieur, alors j'ai écrit chaque pièce d'un modèle de légendage à la main en PyTorch, au lieu d'assembler des composants préentraînés.

J'ai construit un Transformer encodeur-décodeur : un encodeur Vision Transformer transforme l'image en une séquence de tokens de patchs, et un décodeur Transformer rédige la légende token par token, en utilisant l'attention croisée pour consulter les tokens de l'image à chaque étape. La configuration d'entraînement vise le jeu de données image-légende Flickr30k sur Kaggle.

Le projet m'a appris comment l'attention croisée permet à un décodeur de texte de se conditionner sur une autre modalité, et comment de petits choix comme le partage de poids, le lissage d'étiquettes et le batching par longueur façonnent l'entraînement. C'est un artefact d'apprentissage entraîné sur des données limitées, pas un légendeur de production.

La question

Un encodeur ViT écrit de zéro, associé à un décodeur Transformer à attention croisée, peut-il apprendre à aligner suffisamment bien les représentations visuelles et textuelles pour légender des images de bout en bout ?

Fonctionnalités clés

Comment ça marche

  1. Découper l'image en patchs

    Une convolution dont le noyau et le pas sont égaux à la taille du patch transforme l'image en une séquence d'embeddings de patchs, puis des encodages de position apprenables sont ajoutés.

  2. Encoder

    Des blocs résiduels empilés d'auto-attention et de feed-forward construisent des tokens visuels contextuels.

  3. Décoder avec attention croisée

    Le décodeur de légende s'appuie sur les mots précédents par auto-attention masquée et sur les tokens visuels par attention croisée.

  4. Entraîner

    Tokenizer GPT-2 avec tokens de début, de fin et de padding ajoutés ; entropie croisée à lissage d'étiquettes sur les vrais tokens de légende ; planification du taux d'apprentissage avec warmup et écrêtage de gradient.

  5. Décrire

    La recherche en faisceau avec normalisation par la longueur et filtrage top-k / top-p sélectionne la meilleure hypothèse de légende.

Exemples

Le pipeline : les patchs d'image passent par un encodeur ViT, et un décodeur à attention croisée rédige la légende.
Le pipeline : les patchs d'image passent par un encodeur ViT, et un décodeur à attention croisée rédige la légende.

Stack technique

Ce que j’ai appris

Limites