Le Flow Matching est une approche fascinante qui se trouve au cœur de modèles génératifs récents comme Stable Diffusion 3, Flux ou encore MovieGen de Meta, un modèle dédié à la génération de vidéos à partir de texte. Cette méthode apporte une simplification notable par rapport aux modèles de diffusion classiques et ouvre la voie à des modèles toujours plus performants.




Cet article explore en détail le fonctionnement du Flow Matching, en quoi il diffère des approches classiques de génération de données et pourquoi il représente une avancée dans le domaine de l’intelligence artificielle générative.
Avant d’entrer dans le vif du sujet, il est utile de connaître les bases des modèles de diffusion, car le Flow Matching s’inscrit dans cette lignée tout en proposant une alternative plus directe. Si vous n’êtes pas familier avec les modèles de diffusion, ça tombe bien, j’ai écris un article sur ce sujet: Modèles de Diffusion : comprendre la mécanique des générateurs d’images IA.
Qu’est-ce que le Flow Matching ?
Le Flow Matching partage un objectif fondamental avec les modèles de diffusion : transformer progressivement une distribution simple, comme une distribution gaussienne, en une distribution complexe capable de générer des données telles que des images, du texte ou même des vidéos.

Pour illustrer cette idée, considérons un ensemble d’images. Ces images sont issues d’une distribution sous-jacente inconnue, que nous noterons $q(x)$, où $x$ représente nos images.

Cette distribution est trop complexe pour être décrite mathématiquement de manière explicite. Heureusement, nous disposons d’exemples concrets sous la forme d’images issues d’un jeu de données. Plutôt que de manipuler directement cette distribution complexe, le Flow Matching commence par une distribution simple et bien définie, comme une gaussienne standard, notée $p_0(x_0)$. L’un des avantages de cette distribution est qu’il est facile d’en extraire des échantillons, puisqu’elle peut être entièrement décrite par une formule mathématique.
$$f(x) = \frac{1}{\sigma \sqrt{2\pi}} \exp\left( -\frac{(x – \mu)^2}{2\sigma^2} \right)$$
L’objectif du Flow Matching est alors d’entraîner un réseau de neurones à générer de nouveaux échantillons qui ressemblent à ceux de la distribution $q(x)$. Plus précisément, la distribution apprise, approximant les données que l’on souhaite générer, est notée $p_1(x_1)$, tandis que la distribution de départ est $p_0(x_0)$. Le but du modèle est donc d’apprendre à transformer $p_0$ en $p_1$, où $p_1$ est une approximation de $q$ obtenue à travers le processus d’apprentissage.
$$p_1(x_1) \approx q(x)$$
Dans le cadre du Flow Matching, cette transformation de $p_0$ vers $p_1$ s’effectue de manière continue. Le passage d’une distribution à l’autre est modélisé par une fonction temporelle. Contrairement aux modèles de diffusion, où l’évolution se fait en un nombre fini d’étapes discrètes, ici, le paramètre temporel $t \in [0, 1]$ est continu et évolue de 0 à 1.

Lorsque $t = 0$, $x_0$ représente une image complètement bruitée, issue de la distribution $p_0$. À l’autre extrémité du processus, lorsque $t = 1$, $x_1$ est un échantillon de la distribution cible $p_1$, c’est-à-dire une image réaliste correspondant aux données que l’on cherche à générer. En d’autres termes, $t$ mesure la progression le long du chemin reliant $p_0$ à $p_1$.
On peut visualiser ce processus comme un parcours graduel à travers l’espace des données. $x_0$ marque le point de départ, où les données sont du pur bruit, et au fil du temps $t$, l’échantillon $x_t$ évolue progressivement jusqu’à atteindre la distribution cible. Lorsque $t = 1$, on obtient un échantillon réaliste appartenant à $p_1$.

Ce chemin permet ainsi d’interpoler en douceur entre un état initial bruité et une donnée réaliste, offrant un cadre continu pour la transformation de la distribution initiale vers la distribution cible.
Le chemin optimal : Apprendre le champ vectoriel
Jusqu’ici, la seule différence notable entre le Flow Matching et les modèles de diffusion classiques réside dans l’évolution continue du paramètre $t$. Mais alors, qu’est-ce qui change réellement avec cette approche ? Pour mieux comprendre, il est nécessaire d’explorer la notion de flux continu entre les distributions et d’introduire quelques concepts mathématiques fondamentaux.
Considérons un point de données, par exemple une image, que nous noterons $x = (x^1, \dots, x^d)$. Cette donnée suit un chemin dans l’espace des données au fil du temps. Cependant, il existe une infinité de chemins possibles reliant l’état initial bruité à la donnée finale réaliste. Pour modéliser ces trajectoires, il est nécessaire d’introduire une notion de probabilité qui leur est associée.
$$\large p_t : [0, 1] \times \mathbb{R}^d \to \mathbb{R}_{>0}$$
La fonction $p_t$ représente une densité de probabilité, attribuant une probabilité à chaque point de l’espace en fonction du temps $t$. En d’autres termes, cette fonction décrit la répartition des points de données $x_t$ à un instant donné $t$. Cette évolution est appelée le chemin de densité de probabilité (probability density path), car elle capture l’évolution progressive de la densité de probabilité entre $x_0$ et $x_1$.
Une propriété essentielle de cette densité est qu’à tout instant $t$, la somme des probabilités sur l’ensemble de l’espace des données est égale à 1. Cette contrainte assure que la fonction $p_t(x_t)$ reste une densité de probabilité valide tout au long du processus de transformation.
$$\large \int p_t(x) dx = 1$$
Une autre manière de décrire ce chemin consiste à déterminer, pour chaque point situé sur cette trajectoire, la direction à suivre afin de continuer à avancer vers la distribution cible. En partant de l’état initial $x_0$, il est ainsi possible de progresser continuellement jusqu’à atteindre le point final $x_1$. La clé de cette approche réside dans l’identification d’une fonction capable d’indiquer à tout instant la direction optimale pour chaque point. Cette fonction, appelée champ vectoriel, constitue l’élément central du Flow Matching.
L’apprentissage de ce champ vectoriel est fondamental pour la méthode, car il permet de guider la transformation progressive de la distribution initiale vers la distribution cible de manière fluide et cohérente.
Mathématiquement, ce champ vectoriel peut être défini par :
$$v_t : [0,1] \times \mathbb{R}^d \to \mathbb{R}^d$$
Cela signifie que $v_t$ prend en entrée un instant temporel $t$ ainsi qu’un point $x$ dans l’espace des données, et retourne un vecteur indiquant la direction et la vitesse du mouvement à cet instant précis. Ce champ vectoriel agit donc comme un guide, définissant comment chaque échantillon évolue progressivement dans l’espace des données pour s’approcher de la distribution cible.

Un champ vectoriel peut être visualisé en deux dimensions comme un ensemble de flèches associées à chaque point de l’espace, indiquant la direction et l’intensité du mouvement à cet emplacement. Une fois ce champ vectoriel connu, il devient possible de construire une fonction permettant de déplacer un point initial $x_0$ vers une position intermédiaire sur le chemin qui le mène à la distribution cible, en suivant les directions définies par ce champ.
Cette fonction est appelée flow, et elle est notée
$$\large \phi_t : [0, 1] \times \mathbb{R}^d \to \mathbb{R}^d$$
Le rôle de cette fonction $\phi_t$ est de transporter un point $x$ à travers le temps. Concrètement, pour chaque instant $t$, $\phi$ prend un point dans l’espace et le déplace selon les indications du champ de vecteurs $v$, positionnant ainsi le point de manière progressive entre $x_0$ et $x_1$.
Mathématiquement, le champ vectoriel est exprimé à l’aide d’une équation différentielle ordinaire (ODE) :
$$\large x_t = \phi_t(x)$$
$$\large \frac{d}{dt} \phi_t(x) = v_t(\phi_t(x))$$
$$\large \phi_0(x) = x$$
- La première équation définit la position intermédiaire $x_t$ à l’instant $t$ en fonction du flow $\phi_t(x)$.
- La deuxième équation exprime l’évolution du flow au fil du temps : le terme à gauche représente la vitesse instantanée du déplacement du point $x_t$, qui est dictée par le champ de vecteurs $v_t$ évalué à la position actuelle.
- Enfin, la dernière équation $\phi_0(x) = x$ est une condition initiale essentielle : elle impose qu’au temps zéro, le point $x$ n’a pas encore bougé et reste inchangé.
Ces équations fournissent une description complète de l’évolution du flux, permettant ainsi de déterminer où se situe un échantillon $x$ à tout instant $t$, en partant de sa position initiale et en suivant la trajectoire définie par le champ de vecteurs $v$.
L’idée centrale du Flow Matching est d’apprendre ce champ de vecteurs à l’aide d’un réseau de neurones dont les paramètres sont notés $\theta$. Autrement dit, l’objectif est d’approximer le champ vectoriel $v_t(x)$ par une version paramétrique, notée $v_t(x; \theta)$.
$$\large v_t(x; \theta) \approx v_t(x)$$
Cet approximation paramétrique permet de modéliser le flow $\phi_t$ de manière continue. Lorsqu’un tel flux est appris par un modèle, on parle alors de Continuous Normalizing Flow (CNF). Ce CNF est ensuite utilisé pour transformer une distribution simple $p_0$ (une distribution de bruit aléatoire) en une distribution complexe $p_1$, qui correspond aux données cibles que l’on souhaite générer.
Mais comment apprendre ce champ de vecteurs ? Quels types de données doit-on fournir au modèle, et surtout, quelle fonction objectif utiliser pour guider l’apprentissage ?
Pour répondre à cette question, les auteurs de l’article « Flow Matching for Generative Modeling », publié en 2023, ont introduit une fonction de perte efficace et intuitive :
$$\large \mathcal{L}_{fm}(\theta) = \mathbb{E}_{t \thicksim [0,1], x \thicksim p_t(x)} \|v_t(x; \theta) – u_t(x)\|^2$$
Cette fonction, appelée Flow Matching Loss (FML), permet au modèle d’apprendre une approximation du champ de vecteurs $v_t(x)$, qui guide la transformation de la distribution simple $p_0$ en une distribution plus complexe $p_1$.

Dans cette équation :
- $\theta$ représente les paramètres du modèle que l’on cherche à optimiser,
- $t$ est tiré d’une distribution uniforme sur l’intervalle $[0, 1]$,
- $x$ est un échantillon issu de la distribution intermédiaire $p_t(x)$.
L’objectif de cette fonction de perte est de minimiser l’écart entre le champ de vecteurs appris par le modèle $v_t(x; \theta)$ et un champ cible $u_t(x)$, assurant ainsi une transformation fluide de $p_0$ vers $p_1$.
L’objectif de la Flow Matching Loss (FML) est de comparer le champ de vecteurs appris par le modèle $v_t(x; \theta)$ avec un champ cible $u_t(x)$. Lorsque cette fonction de perte tend vers zéro, cela signifie que le modèle est capable de générer correctement la distribution intermédiaire $p_t(x)$ à tout moment $t$. En d’autres termes, cela garantit une transformation fluide de la distribution initiale $p_0$ vers la distribution cible $p_1$.
Cependant, un problème majeur du Flow Matching réside dans le fait que nous ne connaissons pas a priori les étapes intermédiaires nécessaires pour transformer le bruit $p_0$ en une distribution réaliste $p_1$. Ces étapes sont définies par :
- $p_t$, les distributions intermédiaires entre $p_0$ et $p_1$,
- $u_t$, les champs de vecteurs qui génèrent ces distributions.
Malheureusement, il n’existe pas de formule analytique permettant de déduire directement ces deux éléments. Le problème est similaire à la recherche d’un itinéraire optimal entre un point A et un point B sur une carte : il existe une infinité de chemins possibles reliant $p_0$ à $p_1$, mais sans indications précises, il est impossible de savoir lequel emprunter. De plus, même si nous connaissions $p_t$, il resterait à déterminer quelle force ou quelle direction exacte déplace les points de la distribution au fil du temps, ce qui est une tâche difficile.
Les auteurs de la méthode ont trouvé une solution élégante à ce problème en adoptant une approche locale. Plutôt que d’essayer de définir globalement toutes les distributions intermédiaires $p_t$ et les champs de vecteurs $u_t$, ils les reconstruisent progressivement, échantillon par échantillon. Cette approche repose sur le principe de marginalisation : au lieu de considérer l’ensemble des données simultanément, on se concentre sur un seul échantillon à la fois. En agrégeant ces informations locales, il devient possible de reconstituer un chemin globalement cohérent, ce qui rend l’apprentissage du modèle réalisable en pratique.
Nous n’entrerons pas ici dans tous les détails mathématiques nécessaires à la simplification du problème, mais ce travail a conduit les auteurs à modifier la fonction objectif initiale pour aboutir à une version plus exploitable en pratique : la Conditional Flow Matching Loss (CFML), qui s’écrit :
$$\large \mathcal{L}_{cfm}(\theta) = \mathbb{E}_{t \thicksim [0,1], x_1 \thicksim q(x_1), x_t \thicksim p_t(x_t|x_1)} \|v_t(x_t; \theta) – u_t(x_t|x_1)\|^2$$
Le principal problème de la Flow Matching Loss (FML) réside dans le fait qu’elle requiert une connaissance complète des distributions intermédiaires $p_t$ et des champs de vecteurs $u_t$, qui dépendent de l’ensemble des données du jeu d’apprentissage. Cette exigence rend leur estimation extrêmement complexe, voire impraticable dans un cadre d’application réel.

Pour surmonter cette difficulté, la Conditional Flow Matching Loss (CFML) introduit un point d’ancrage $x_1$, tiré directement de la distribution cible $q(x)$. Plutôt que d’essayer de modéliser $p_t$ sur l’ensemble de l’espace des données, cette nouvelle formulation conditionne l’apprentissage autour de ce point spécifique et de son voisinage immédiat.
En d’autres termes, au lieu de résoudre un problème globalement complexe, la CFML repose sur une approche locale :
« Prenons un point cible $x_1$ et concentrons-nous uniquement sur les étapes nécessaires pour transformer le bruit localement autour de ce point. »
Cette approche permet de décomposer le problème global en sous-problèmes plus simples et plus gérables. Le modèle peut alors être entraîné de manière plus efficace tout en conservant le même objectif final : transformer $p_0$ en $p_1$ de manière progressive et cohérente.
Un résultat fondamental découle de cette reformulation : les deux fonctions objectif, FML et CFML, partagent le même gradient par rapport aux paramètres du modèle $\theta$.
$$\large \nabla_{\theta}\mathcal{L}_{fm} = \nabla_{\theta}\mathcal{L}_{cfm}$$
En d’autres termes, d’un point de vue purement optimisation, elles sont équivalentes. Les auteurs montrent que bien que la CFML soit définie localement, elle conserve toutes les propriétés d’optimisation de la FML. Cependant, l’énorme avantage de la CFML est qu’elle est bien plus simple à calculer, ce qui la rend beaucoup plus adaptée aux applications pratiques.
Malgré cette simplification, il reste encore certains défis à relever. Dans la définition de la CFML, les termes $p_t(x \mid x_1)$ et $u_t(x \mid x_1)$, qui ont été introduits via le processus de marginalisation, doivent être précisément définis avant de pouvoir entraîner efficacement le modèle.
Le champ de vecteurs $u_t$ peut être défini de multiples manières, car il existe une infinité de trajectoires possibles reliant $p_0$ à $p_1$. Pour simplifier l’apprentissage, les auteurs de la méthode ont choisi la transformation la plus simple possible : l’interpolation linéaire. Cette approche permet de transformer progressivement une distribution gaussienne en une autre de manière directe et efficace. Mathématiquement, cette interpolation linéaire est décrite par l’équation suivante :
$$\large \psi_t(x) = \sigma_t(x_1) x + \mu_t(x_1)$$
Cette transformation repose sur deux paramètres :
- $\mu_t$, qui représente la moyenne et permet de déplacer la distribution,
- $\sigma_t$, qui est l’écart-type et permet de redimensionner la distribution.
Pour mieux comprendre cette transformation, imaginons deux points :
- $x_0$, représentant un échantillon totalement bruité issu de la distribution $p_0$,
- $x_1$, une image du jeu de données, appartenant à la distribution cible $p_1$.
L’idée est d’utiliser une interpolation linéaire pour générer les points intermédiaires $x_t$ entre $x_0$ et $x_1$. Pour cela, les auteurs définissent $\mu_t$ et $\sigma_t$ de la manière suivante :
$$\large \mu_t(x_1) = t \cdot x_1, \quad \sigma_t(x_1) = 1 – t$$
En combinant ces définitions, on obtient l’expression finale du flow.
$$\large \psi_t(x_0) = (1 – t) \cdot x_0 + t \cdot x_1$$
Cette interpolation linéaire repose uniquement sur trois éléments :
- $x_0$ : le point d’origine (bruit aléatoire),
- $x_1$ : le point d’arrivée (une image réelle),
- $t$ : un paramètre temporel qui évolue de 0 à 1.
Lorsque $t = 0$, on reste au point d’origine, donc $x_t = x_0$ (image complètement bruitée). Lorsque $t = 1$, on atteint le point d’arrivée, donc $x_t = x_1$ (image réaliste). Pour des valeurs intermédiaires de $t$, l’image est progressivement transformée, suivant une interpolation linéaire entre $x_0$ et $x_1$.
Cette approche permet ainsi de faire évoluer continuellement les données le long d’un chemin déterministe, garantissant une transition fluide et efficace entre le bruit et la donnée cible. Maintenant que nous avons défini le flow $\psi_t(x_0)$, intéressons-nous au champ de vecteurs $u_t$. Ce champ est simplement défini comme la dérivée du flux par rapport au temps $t$ :
$$\frac{d}{dt} \psi_t(x_0) = u_t(\psi_t(x_0) \mid x_1) = u_t(x_t|x_1)$$
Calculons explicitement cette dérivée. Étant donné que le flow $\psi_t(x_0)$ est une interpolation linéaire, cette opération est particulièrement simple :
$$\frac{d}{dt} \psi_t(x_0) = \frac{d}{dt} \left( (1 – t)x_0 + t x_1 \right)$$
En dérivant terme par terme :
$$\frac{d}{dt} \psi_t(x_0) = x_1 – x_0$$
On obtient ainsi une formulation explicite du champ de vecteurs $u_t$, qui est simplement la direction pointant vers $x_1$. En d’autres termes, $u_t$ suit la ligne droite tracée entre $x_0$ et $x_1$. En revenant à l’expression de la Conditional Flow Matching Loss (CFML) :
$$\large \mathcal{L}_{cfm}(\theta) = \mathbb{E}_{t \thicksim [0,1], x_1 \thicksim q(x_1), x_t \thicksim p_t(x_t|x_1)} \|v_t(x_t; \theta) – u_t(x_t|x_1)\|^2$$
On remarque dans cette équation le terme $u_t(x_t|x_1)$ qui correspond à la définition de notre champ de vecteurs. Nous pouvons donc substituer $u_t$ par la dérivée du flow $\psi_t(x_0)$, ce qui donne une nouvelle formulation :
$$\large \mathcal{L}_{\text{cfm}}(\theta) = \mathbb{E}_{t \thicksim [0,1], x_1 \thicksim q(x_1), x_t \thicksim p_t(x_t \mid x_1)} \left\| v_t(x_t; \theta) – \frac{d}{dt} \psi_t(x_0) \right\|^2$$
Et comme nous avons calculé la dérivée du flow précédemment, qui correspond simplement à la différence entre $x_1$ et $x_0$, nous pouvons réécrire l’objectif final comme suit :
$$\large \mathcal{L}_{\text{cfm}}(\theta) = \mathbb{E}_{t \thicksim [0,1], x_1 \thicksim q(x_1), x_t \thicksim p_t(x_t \mid x_1)} \left\| v_t(x_t; \theta) – (x_1 – x_0) \right\|^2$$
$x_t$ étant défini par $x_t = \psi_t(x_0)$, on peut remplacer $x_t$ pour n’avoir que $t$, $x_0$ et $x_1$ à échantillonner.
$$\large \mathcal{L}_{\text{cfm}}(\theta) = \mathbb{E}_{t \thicksim [0,1], x_1 \thicksim q(x_1), x_0 \thicksim p_0(x_0)} \left\| v_t(\psi_t(x_0); \theta) – (x_1 – x_0) \right\|^2$$
Et ici, on connaît $x_1$, ce sont les échantillons de notre jeu d’entraînement, et $x_0$ qui est tiré de $p_0$ notre distribution gaussienne.

Interprétation intuitive
Dans cette équation :
- $v_t(x; \theta)$ est la prédiction du réseau de neurones ayant les paramètres $\theta$,
- $x_1 – x_0$ représente la direction réelle à suivre pour transformer le bruit en une donnée crédible.
L’objectif de l’apprentissage est donc de minimiser l’écart entre la prédiction du réseau et cette direction cible. Autrement dit, le modèle doit apprendre à prédire la direction optimale pour transformer $x_t$ en $x_1$ à chaque instant $t$. Ainsi, en entraînant le modèle avec cette fonction objectif, il apprend un champ de vecteurs optimal qui guide la transformation continue des données, sans nécessiter d’étapes intermédiaires complexes comme dans les modèles de diffusion classiques.
Cette équation peut sembler abstraite, mais son principe est en réalité très simple. Le réseau de neurones $v_t(x; \theta)$ est entraîné à prédire la direction qui permet de se rapprocher de $x_1$, une image réelle issue du jeu de données. Autrement dit, le modèle doit apprendre comment modifier $x_t$ pour qu’il se rapproche progressivement de $x_1$. L’apprentissage repose donc sur une tâche fondamentale : prédire la direction optimale donnée par la soustraction $x_1 – x_0$.
Comment entraîne-t-on concrètement le modèle ?

L’apprentissage du modèle repose sur une procédure simple, qui suit les étapes suivantes :
- Échantillonnage du bruit initial
On commence par tirer un échantillon $x_0$ depuis une distribution gaussienne standard $p_0$, ce qui représente une image totalement bruitée. - Sélection d’une image cible
On choisit ensuite une image réelle $x_1$ appartenant au jeu de données, c’est-à-dire un échantillon de la distribution cible $q(x_1)$. - Choix du paramètre temporel
Un paramètre temporel $t$ est échantillonné aléatoirement dans l’intervalle $[0,1]$, en suivant une distribution uniforme. - Interpolation linéaire
À l’aide du flow $\psi_t$, on calcule l’image intermédiaire $x_t$, située entre $x_0$ et $x_1$, selon la formule : $x_t = (1 – t) x_0 + t x_1$ - Passage dans le réseau de neurones
L’image interpolée $x_t$ ainsi que le temps $t$ sont ensuite fournies au réseau de neurones, qui tente de prédire le champ de vecteurs optimal. - Calcul de la fonction objectif
La sortie du réseau est comparée à la direction réelle $x_1 – x_0$, et la fonction de perte $\mathcal{L}_{\text{cfm}}$ est évaluée. - Mise à jour des paramètres
Les paramètres $\theta$ du modèle sont ajustés afin de minimiser cette erreur, en utilisant des techniques classiques d’optimisation (comme la descente de gradient).
Grâce à cette procédure, le modèle apprend progressivement à transformer la distribution initiale $p_0$ (un simple bruit aléatoire) en une distribution réaliste $p_1$, et ce, de manière continue et fluide.
Différences avec les modèles de diffusion
Les modèles de diffusion classiques ajoutent progressivement du bruit aux données pour les rendre plus simples à modéliser, puis apprennent à inverser ce processus en supprimant ce bruit. Cette méthode repose sur un grand nombre d’étapes discrètes et sur des hypothèses complexes qui peuvent rendre l’entraînement long et coûteux.

Le Flow Matching, en revanche, adopte une approche beaucoup plus directe. Au lieu de travailler avec des processus stochastiques pour modéliser les scores de probabilité, il s’appuie sur une trajectoire continue qui relie une distribution simple, comme une gaussienne, à la distribution cible. Cette simplification réduit la complexité mathématique et facilite l’implémentation.
Là où des modèles comme le DDPM, utilisés dans les techniques de diffusion, emploient une interpolation non linéaire basée sur l’ajout itératif de bruit à une image, le Flow Matching se concentre sur une interpolation linéaire. L’avantage de cette approche est que le gradient de l’interpolation est beaucoup plus simple à calculer, rendant l’apprentissage bien plus efficace.
Dans les modèles de diffusion, le processus est discret : on commence avec une distribution gaussienne pour générer du bruit. Une image $x_0$ issue du jeu de données est ensuite soumise à un processus de bruitage itératif, appelé processus de diffusion avant. Cette image bruitée est donnée à un réseau de neurones, comme un UNet ou un Diffusion Transformer, qui apprend à retirer le bruit. L’objectif est de comparer le bruit ajouté à celui prédit par le réseau et de minimiser cette différence.

Avec le Flow Matching, l’approche est différente. On part d’une image totalement bruitée $x_0$ et d’une image cible $x_1$ issue du jeu de données. Une interpolation linéaire est utilisée pour calculer une image intermédiaire $x_t$, qui est ensuite passée au réseau de neurones. L’objectif est de minimiser la Conditional Flow Matching Loss, qui s’appuie sur la différence directe entre $x_1$ et $x_0$. Cette méthode simplifie considérablement le processus tout en restant très performante.
Conclusions et perspectives
Le Flow Matching représente une avancée importante en simplifiant la génération de données tout en maintenant une efficacité impressionnante. En éliminant certaines des contraintes complexes des modèles de diffusion, il ouvre la voie à des modèles génératifs plus rapides, plus intuitifs et tout aussi performants.
Dans le prochain article, nous explorerons les auto-encodeurs, une autre brique essentielle pour comprendre et implémenter des modèles comme Stable Diffusion. Avec les bases des modèles de diffusion, du Flow Matching et des auto-encodeurs, nous disposerons de toutes les clés nécessaires pour concevoir et entraîner nos propres modèles génératifs.
Laisser un commentaire