IA générative d'images : quelle est cette sorcellerie ?

 Introduction

Comment une Intelligence Artificielle comme Stable Diffusion est capable de générer une image à partir d'une simple description ?
Est-ce qu'il se base sur une base de données d'images et nous renvoie l'image la plus proche de notre description ?
Est-ce un autre mécanisme ?

Je vous propose d'analyser ensemble le fonctionnement d'un modèle comme Stable Diffusion et vous verrez qu'il n'y a pas de magie et que chaque image générée est réellement unique.

Alors comment ça marche ?
C'est ce que nous allons voir dans les chapitres suivants.

La description

Tout commence par une description que nous donnons au modèle pour générer l'image que l'on souhaite.
A partir de là, le système Stable Diffusion, je ne parle plus de modèle car en fait une IA générative d'image et composée d'au moins 3 modèles distincts, va convertir cette description en un vecteur à 75 dimensions grâce à un premier modèle d'IA qu'on appelle CLIP Text encoder. Le modèle de Clip Text encoder le plus utilisé est celui de Open AI que vous connaissez déjà certainement.

C'est quoi un Text encoder ?

C'est un modèle d'intelligence artificielle basée sur les LLM (Large Language Model) et qui à partir d'une base de plusieurs millions de textes labélisés à créer un hyperplan de 75 dimensions dans notre cas permettant de positionner des mots ou des séquences de mots.

Ce modèle ne sait pas ce qu'est une voiture mais par son apprentissage sait qu'une voiture est proche d'un véhicule, qu'un camion est proche d'un véhicule mais pas d'une voiture et encore moins d'un cheval.

Je ne vais pas vous faire un cours de mathématique autour de cette notion mais cela se rapproche beaucoup des Analyses en Correspondances Principales que vous avez peut être vues lors de vos cours de statistiques pendant vos études.

A partir de là, le système a un vecteur de 75 dimensions qui est son objectif, mais comment l'atteindre ? c'est ce que nous allons voir dans le chapitre suivant.

La stabilisation de l'image

Le système connaît son objectif mais d'où doit-il partir ?
Il va partir d'une image qu'il aura généré lui-même appelé Latent image initiale.

C'est quoi une Latent image initiale ?

Le système va prendre en compte le grain (seed en anglais) que vous lui avez donné pour générer une représentation d'une image dans son espace à 75 dimensions pleines de bruits.
C'est ce nouveau vecteur qui va lui servir de point de départ dans ce deuxième modèle des Latent images.

Et la stabilisation alors ?

Le système calcule alors la distance entre le point de départ et son objectif en utilisant le théorème de Pythagore où dans un hyperplan orthonormé la distance entre 2 points est a somme des écarts au carré de chaque dimensions.

A partir de là le système identifie la dimension avec le plus d'écart et augmente légèrement ce paramètre.
Elle recalcule la distance et si elle a diminuée, elle va continuer de faire varier ce paramètre environ 1000 fois. Si la distance a augmentée, elle repart du point de départ et va diminuer ce paramètre et répéter l'opération environ 1000 fois.
Ceci correspond à 1 inférence parmi le nombre que vous avez précisé dans votre à appel au programme.

Le système va itérer autant de fois fois que vous lui avez demandé dans votre nombre d'inférence.

Il regarde la dimension où la distance est la plus grande,
Il ajuste ce paramètre 1000 fois en recalculant la distance à chaque fois.
Et ainsi de suite.

A la fin le système a calculé un vecteur de 75 dimensions qui correspond à l'image finale mais ce n'est pas encore une image...

L'image finale

L'image finale est obtenue par l'utilisation d'un troisième modèle appelé VAE (Variant AutoEncoder). Ce modèle va permettre de convertir une latent image, un vecteur à 75 dimensions, en une image au format png ou jpg. 
C'est grosso modo exactement l'inverse du CLIP Text encoder.

Un cas pratique ?

Un exemple vaut mieux qu'un long discours.
J'ai renseigné la description suivante à un système Stable Diffusion : "un chat de race Chartreux portant des lunettes de soleil, assis sur une plage de sable, une mer agitée et un ciel dégagé en arrière plan, photographie de vacances, couleur vibrantes contrastées, lumière naturelle fin d'après-midi, HD, 4K, photo grand angle, panoramique" 

Comment Stable diffusion a pu me créer cette image ?


Voyons ce que cela donne en fonction du nombre d'itération :
itération : 1
Ca ressemble à pas grand chose en effet mais on a du mal à voir le bruit.
itération 2
Le système commence par l'arrière plan et on vient bien le bruit.
itération 3
itération 5
Notre chat apparaît enfin mais il n'est pas terrible.
itération 6
itération 7
itération 8
On voit enfin les lunettes de soleil mais l'arrière plan qui semblait assez figé a complètement changé.
itération 9
itération 10
itération 11
itération 15
itération 18
itération 20

Et Stable Diffusion XL, c'est quoi ?

C'est un système qui a été entraîné sur des images plus grandes que le modèle de base. Il permet ainsi de pouvoir générer des images avec une plus grande résolution (1024x1024).

Il embarque également un quatrième modèle d'Intelligence Artificielle appelé refiner qui permet d'ajouter plus de détails à l'image finale.


J'espère que cet article vous a été utile.

























Commentaires

Posts les plus consultés de ce blog

IA générative d'image : Zephyr, un souffle de renouveau pour vos prompts

IA générative d'images : les styles sombres, horreur

IA générative d'image : Zephyr, un souffle de renouveau pour vos prompts, suite