00:00:00Ravi de vous voir si nombreux.
00:00:02Comme je l'ai dit en introduction,
00:00:04je vais vous présenter Flux,
00:00:07notre famille de modèles pour la génération et l'édition d'images.
00:00:12J'étais déjà...
00:00:13ça marche.
00:00:14Je suis Andy, cofondateur de Black Force Labs.
00:00:17Avant de parler du modèle,
00:00:19je veux vous donner un aperçu de ce que nous faisons?
00:00:23Chez Black Force Labs,
00:00:25nous pensons que les médias visuels deviendront l'interface centrale de la communication humaine à l'avenir.
00:00:34Nous nous considérons comme le fournisseur d'infrastructure central pour alimenter toutes les images et vidéos que les humains utiliseront pour interagir,
00:00:45et pas seulement ce que les caméras peuvent capturer,
00:00:50mais bien au-delà.
00:00:51Dans cette optique,
00:00:52nous avons fondé l'entreprise en août 2024.
00:00:56Depuis,
00:00:56nous avons atteint 45 employés et sommes répartis sur deux sièges.
00:01:01Le siège principal est à Fribourg,
00:01:04dans la Forêt-Noire en Allemagne,
00:01:07et nous avons également un bureau ici à San Francisco.
00:01:11Depuis le lancement de notre famille de modèles de génération d'images,
00:01:16Flux,
00:01:17en août 2024,
00:01:18lors de la création de l'entreprise,
00:01:21nous avons toujours structuré nos versions en trois niveaux différents,
00:01:26et nous avons constamment fait évoluer la famille de modèles.
00:01:31Les niveaux sont les suivants.
00:01:33Nous avons les modèles Pro.
00:01:35Ils sont super puissants et les plus rapides que nous proposons.
00:01:40Ils sont disponibles uniquement via l'API VFL et via quelques partenaires d'inférence comme,
00:01:47par exemple,
00:01:48File et Replicate.
00:01:50Je suppose que vous les connaissez aussi.
00:01:53Ils sont très faciles à intégrer et peuvent s'adapter à des volumes massifs presque instantanément..
00:02:03C'est le premier niveau,
00:02:05mais comme certains d'entre vous le savent peut-être,
00:02:08mes cofondateurs et moi avons de très fortes racines dans l'open source,
00:02:12un peu comme,
00:02:13je pense,
00:02:13le fondateur qui nous a invités aujourd'hui.
00:02:16Nous sommes aussi les développeurs originaux de Stable Diffusion.
00:02:20Nous y tenons toujours.
00:02:21Nous aimons la communauté open source,
00:02:24et c'est pourquoi nous proposons également des modèles à poids ouverts et open source..
00:02:29Nous avons les modèles Flux Dev.
00:02:32Ils sont disponibles publiquement au téléchargement,
00:02:35pour l'expérimentation.
00:02:37Ils sont entièrement personnalisables et offrent beaucoup de flexibilité à tous ceux qui veulent les utiliser.
00:02:44Enfin, nous avons les modèles Flux Schnell.
00:02:47Ils sont entièrement open source et constituent,
00:02:51en quelque sorte,
00:02:52le point d'entrée parfait dans l'écosystème Flux.
00:02:55En parlant de l'écosystème,
00:02:57si vous regardez le Model Atlas sur Hugging Face,
00:03:01qui visualise les modèles de fondation open source les plus utilisés dans tous les domaines,
00:03:07nous pouvons en fait constater que le plus grand modèle unique sur Hugging Face,
00:03:13avec le plus grand écosystème qui lui est rattaché,
00:03:16est notre modèle Flux Dev.
00:03:18Cela montre assez bien que Flux est déjà devenu la norme pour la génération d'images open source.
00:03:25Évidemment,
00:03:26nous cherchons à faire progresser ou à étendre notre distribution à l'avenir.
00:03:31Voilà pour l'entreprise.
00:03:33Voyons si ça ne marche toujours pas.
00:03:35Bref.
00:03:36Passons maintenant à la partie principale de la présentation..
00:03:41Je voulais plonger avec vous dans Flux,
00:03:44et plus particulièrement dans notre modèle le plus récent,
00:03:47Flux Context,
00:03:48qui unifie la génération d'images à partir de texte et l'édition d'images.
00:03:53Je veux parler aujourd'hui de la façon d'unifier cela..
00:03:56Quelques mots avant cela.
00:03:58Je pense qu'il est très important d'avoir ce modèle combiné car,
00:04:02évidemment,
00:04:03la génération d'images a beaucoup d'applications intéressantes et nous l'avons vu l'année dernière,
00:04:10mais l'édition d'images n'a pas suivi le même rythme de développement jusqu'à cette année.
00:04:16L'édition d'images est en fait un cas d'utilisation très important.
00:04:21Elle nous permet d'itérer sur des images existantes et offre aux gens,
00:04:25je pense,
00:04:26un niveau de contrôle supplémentaire pour modifier précisément les images et autres.
00:04:32C'est très important.
00:04:33Avec Flux Context,
00:04:34nous avons créé le moment décisif pour l'édition d'images.
00:04:38Il a été lancé en juin 2025.
00:04:40C'est un modèle qui combine la génération d'images avec des fonctionnalités d'édition comme la cohérence des personnages,
00:04:48la référence de style,
00:04:50l'édition locale et tout cela à une vitesse quasi-temps réel.
00:04:54Nous verrons cela plus tard..
00:04:57Mais pour vous donner un bon exemple,
00:04:59j'ai apporté cette série d'images.
00:05:02De gauche à droite, nous commençons par une image d'entrée.
00:05:05Ensuite,
00:05:06nous pouvons demander au modèle de retirer cet objet de son visage,
00:05:10puis nous pouvons la placer dans un contexte entièrement nouveau tout en conservant la cohérence du personnage.
00:05:17C'est très important.
00:05:18Beaucoup de travail a été fait par le passé pour affiner les modèles texte-vers-image afin d'obtenir ce type de cohérence de personnage,
00:05:26mais cette édition d'image instantanée nous a permis de supprimer tout cet affinage,
00:05:31qui est toujours un peu laborieux,
00:05:34je dirais.
00:05:34C'est vraiment incroyable que cela ne prenne maintenant que quatre secondes ou quelque chose comme ça.
00:05:40Enfin, nous pouvons simplement changer le décor.
00:05:43Dans ce cas,
00:05:44l'image la plus à droite,
00:05:46nous la transformons en scène hivernale.
00:05:48Génial.
00:05:49Voici quelques autres exemples de ce qu'il peut faire.
00:05:52Il n'est pas seulement bon pour les modifications cohérentes de personnages ou autre,
00:05:57mais il est aussi très utile pour le transfert de style.
00:06:01Nous le voyons sur le côté gauche.
00:06:03Nous prenons le style de l'image d'entrée et le mappons à un nouveau contenu,
00:06:08ou nous pouvons faire des choses comme l'édition de texte,
00:06:11en changeant simplement Montréal en Fribourg tout en gardant la police cohérente.
00:06:16Tout cela est combiné en un seul modèle et vous pouvez interagir avec lui via une interface texte super simple.
00:06:23Génial.
00:06:23Très important,
00:06:24ce modèle n'est pas seulement un modèle général,
00:06:27mais il est aussi très bon pour résoudre des problèmes commerciaux spécifiques,
00:06:32importants et intéressants.
00:06:34Par exemple,
00:06:35ici dans l'exemple de gauche,
00:06:36nous pouvons extraire cette jupe d'une image prise sur le vif et obtenir une photo de produit de cette chose et un zoom presque instantanément,
00:06:45encore une fois,
00:06:46en quelques secondes.
00:06:48Auparavant,
00:06:48ces modèles d'édition prenaient des heures,
00:06:51des jours,
00:06:52ou n'étaient même pas possibles.
00:06:54De même,
00:06:54sur le côté droit,
00:06:55nous pouvons passer d'un croquis à un rendu entièrement finalisé en quelques secondes.
00:07:00Génial.
00:07:01Comme je l'ai déjà mentionné,
00:07:03Flux Context combine le texte-vers-image et l'édition d'images.
00:07:07Nous venons de voir quelques exemples.
00:07:09Examinons brièvement ce que cela signifie en termes de pipeline de modèle que vous devez utiliser.
00:07:15Ici, nous voyons le pipeline classique texte-vers-image.
00:07:18Assez simple.
00:07:19Nous le connaissons tous.
00:07:21Nous utilisons une invite textuelle.
00:07:23Nous la faisons passer par le modèle.
00:07:25Le modèle fait ensuite de la magie.
00:07:27Je vais vous expliquer comment créer un tel modèle dans une seconde.
00:07:32Ensuite,
00:07:32nous obtenons une image qui,
00:07:34espérons-le,
00:07:35si le modèle est bon,
00:07:36suit notre invite textuelle d'entrée.
00:07:38Si vous regardez l'édition d'images, c'est assez différent.
00:07:42Nous commençons par une image,
00:07:44que nous montrons au modèle d'une certaine manière,
00:07:47puis nous n'ajoutons pas d'instruction textuelle qui décrit une scène entière,
00:07:52mais seulement un changement à cette image.
00:07:54Ici, nous avons deux conditionnements.
00:07:57La première partie, nous avons seulement plus d'entrées.
00:08:00Le premier exemple, nous n'avions qu'une seule entrée.
00:08:03Maintenant,
00:08:04nous décrivons un changement et le modèle devrait alors modifier l'image en fonction du changement.
00:08:10Certaines parties,
00:08:11comme l'église ici,
00:08:12devraient rester les mêmes après l'édition.
00:08:15D'autres non.
00:08:16C'est ce que font ces modèles d'édition.
00:08:18C'est une tâche assez différente.
00:08:20Combiner cela en un seul modèle est vraiment génial parce que vous pouvez tout faire.
00:08:26Vous pouvez générer une image,
00:08:28puis la modifier ensuite,
00:08:29et obtenir beaucoup plus de flexibilité en quelque sorte.
00:08:33J'ai déjà mentionné qu'avant la sortie de ces modèles d'édition,
00:08:36ou avant que nous ne voyions ces modèles d'édition généraux,
00:08:40beaucoup de travail avait été fait sur l'affinage des modèles texte-vers-image pour obtenir ce niveau de contrôle dans le modèle.
00:08:48Mais ce n'est plus nécessaire maintenant.
00:08:51Nous pouvons le faire instantanément.
00:08:53Cela réduit considérablement le temps nécessaire pour obtenir de bons résultats.
00:08:58Voilà pour le pipeline.
00:08:59Maintenant,
00:09:00voyons comment nous pouvons réellement entraîner ces modèles.
00:09:04Et il y a un algorithme très important dont je veux parler.
00:09:07L'algorithme qui nous permet d'entraîner ces modèles s'appelle Latent Flow Matching,
00:09:13qui est composé de deux aspects,
00:09:15Latent et Flow Matching,
00:09:16et je veux éclaircir un peu les deux..
00:09:24Commençons par le Latent.
00:09:25Cela vient de la modélisation générative latente.
00:09:28C'est un algorithme que mes cofondateurs et moi avons conçu il y a près de cinq ans.
00:09:33Pour expliquer ce que cela signifie,
00:09:35regardons d'abord l'exemple suivant.
00:09:37Ce que je visualise ici,
00:09:38ce sont en fait deux images,
00:09:40et pour nous,
00:09:41elles se ressemblent exactement.
00:09:43Celle de gauche est un JPEG,
00:09:44et celle de droite est la même image en PNG.
00:09:47Donc,
00:09:47celle de gauche est une approximation de celle de droite,
00:09:50mais nous ne voyons aucune différence..
00:09:53Ou y a-t-il quelqu'un qui voit une différence entre ces deux images?
00:09:58Je ne crois pas.
00:09:59D'accord,
00:09:59regardons maintenant la taille des fichiers de ces images.
00:10:03La taille du fichier JPEG est en fait près d'un ordre de grandeur plus petite que celle du fichier PNG.
00:10:10C'est assez remarquable,
00:10:11et nous savons tous comment fonctionne la compression d'images,
00:10:15mais le simple fait de réaliser que nous pouvons apparemment supprimer beaucoup d'informations d'une image sans le remarquer est assez remarquable,
00:10:25je dirais..
00:10:26Apparemment,
00:10:27il y a donc beaucoup d'informations dans une image que nous ne pouvons pas percevoir avec notre œil humain.
00:10:34Une autre façon de visualiser cela est de tracer la similarité perceptuelle d'une image – dans le dernier exemple,
00:10:41un PNG est l'image – et son approximation,
00:10:44le JPEG de cette image,
00:10:45et nous pouvons la tracer en fonction de la taille du fichier.
00:10:49En faisant cela, nous obtenons ce graphique.
00:10:52C'est un graphique conceptuel,
00:10:54donc ce n'est pas réel,
00:10:55mais cela ressemble conceptuellement à ceci.
00:10:58La similarité perceptuelle augmente rapidement puis reste à un niveau constant sur presque toute la taille du fichier.
00:11:06C'est ce que les algorithmes de compression avec perte comme JPEG utilisent,
00:11:11et vous pourriez maintenant vous demander ce que cela a à voir avec la modélisation générative?
00:11:17Cela nous montre que pour un signal perceptuel,
00:11:20ou un signal naturel,
00:11:21comme une image (pour l'audio,
00:11:23c'est la même chose),
00:11:24pour qu'il paraisse réel,
00:11:26ou soit perçu comme réel,
00:11:28nous n'avons pas besoin de modéliser tous les détails haute fréquence que nous ne pouvons pas percevoir.
00:11:34Par conséquent,
00:11:35entraîner un modèle génératif dans l'espace des pixels sur tous ces détails haute fréquence serait en fait un énorme gaspillage de calcul et de temps,
00:11:45car le modèle apprendrait à représenter des aspects que nous ne percevons même pas,
00:11:50il est donc inutile d'apprendre cela,
00:11:53n'est-ce pas?
00:11:53Et c'est au cœur de la modélisation générative latente.
00:11:57Ainsi,
00:11:57au lieu d'entraîner un modèle génératif dans l'espace des pixels directement sur des images,
00:12:03nous apprenons un modèle de compression qui extrait un espace de dimension inférieure,
00:12:09appelé espace latent.
00:12:10Cet espace latent est ce que nous voyons ici au centre.
00:12:14Voyons si le pointeur laser fonctionne.
00:12:16Ah oui, ce truc.
00:12:17Comment apprenons-nous ce modèle?
00:12:19C'est en fait super simple..
00:12:24Nous utilisons une image ici à gauche.
00:12:26Nous la faisons passer par un encodeur,
00:12:28donc il s'agit en fait d'un auto-encodeur,
00:12:31nous faisons passer l'image par l'encodeur,
00:12:34puis nous arrivons à cet espace latent,
00:12:36et la représentation est ensuite soumise à une opération appelée régularisation..
00:12:42Cela force le modèle à supprimer des informations de cette représentation latente.
00:12:47Cela peut être implémenté de manière discrète ou continue,
00:12:51puis nous reconstruisons l'image à partir de cette représentation latente.
00:12:56Donc,
00:12:57un auto-encodeur classique,
00:12:58que nous entraînons pour produire des reconstructions similaires à l'entrée,
00:13:03et,
00:13:04très important,
00:13:05nous ajoutons cette perte de discriminateur.
00:13:08Cela peut être imaginé comme un a priori pour s'assurer que seuls les détails qui comptent perceptuellement pour nos yeux humains sont reflétés dans cette représentation latente.
00:13:19Encore une fois,
00:13:21cette régularisation force le modèle à réduire ou à supprimer des informations,
00:13:26et le discriminateur s'assure qu'il supprime les bonnes informations que nous ne pouvons pas percevoir.
00:13:33Ainsi,
00:13:33une fois que nous avons entraîné ce modèle,
00:13:36nous arrivons à cet espace latent qui est ensuite utilisé pour entraîner le modèle généré.
00:13:42L'espace latent est une représentation de dimension inférieure de l'image d'entrée ou d'une image qui est perceptuellement équivalente.
00:13:51C'est fondamentalement l'aspect latent de l'algorithme de correspondance de flux latent.
00:13:56Parlons du second,
00:13:58le flow-matching (correspondance de flux).
00:14:00Encore une fois,
00:14:02tout ce que j'explique en ce moment se passe dans cet espace latent.
00:14:06Donc,
00:14:07tout ce que nous faisons en ce moment,
00:14:09vous le voyez ici.
00:14:10Sur le côté gauche,
00:14:12chaque image est intégrée dans cet espace latent,
00:14:15en gros.
00:14:15Alors, oui, parlons du flow-matching.
00:14:18Les algorithmes de flow-matching sont une famille générale d'algorithmes utilisés pour traduire d'une distribution très simple,
00:14:26qui est,
00:14:27dans notre cas,
00:14:28toujours la distribution normale standard – nous parlons donc maintenant de distributions de probabilité.
00:14:34Je l'ai visualisé ici.
00:14:36C'est une distribution très simple ici.
00:14:38Les algorithmes de flow-matching traduisent cela ou nous fournissent les moyens d'entraîner un champ de vecteurs,
00:14:46représenté par un réseau neuronal (ce gars ici),
00:14:49pour mapper entre la distribution simple et des distributions très compliquées,
00:14:54comme la distribution de données d'images naturelles.
00:14:58C'est donc la distribution des données.
00:15:00Que faisons-nous pour l'entraîner?
00:15:03L'algorithme de flow-matching nous fournit un moyen très simple de le faire.
00:15:08Tout ce que nous avons à faire pendant l'entraînement est de tirer un échantillon de cette distribution normale standard ici.
00:15:16Nous avons donc un échantillon,
00:15:18puis nous l'assignons à un échantillon de la distribution de données,
00:15:22un exemple d'entraînement,
00:15:24et nous les couplons,
00:15:25puis nous pouvons construire ce type de vecteur qui les connecte directement,
00:15:30linéairement..
00:15:34Si vous faites cela pour chaque exemple de notre ensemble de données d'entraînement,
00:15:39c'est-à-dire que nous prenons l'exemple,
00:15:41nous échantillonnons aléatoirement un point de la normale standard,
00:15:45et nous les connectons,
00:15:47alors nous obtenons ce type de champ de vecteurs construit ici.
00:15:50Je pourrais maintenant parler beaucoup des propriétés des champs de vecteurs.
00:15:55Une propriété importante est que les chemins ne peuvent pas se croiser dans les champs de vecteurs,
00:16:01et nous voyons qu'il y a beaucoup de croisements,
00:16:04donc ce n'est évidemment pas le vrai champ de vecteurs qui traduit entre chaque point de cette distribution,
00:16:10ou entre cette distribution et celle-là..
00:16:13Ce qui est incroyable avec le flow-matching,
00:16:16c'est que si vous suivez simplement cette règle – nous entraînons donc le modèle à toujours prédire ce type de vecteurs entre l'échantillon de données et l'échantillon de la distribution normale standard.
00:16:30Nous arrivons au vrai champ de vecteurs,
00:16:32et cela ressemble alors à ceci.
00:16:35Nous voyons donc ici que les chemins ne se croisent plus,
00:16:38et l'algorithme de flow-matching le garantit.
00:16:41C'est un peu magique,
00:16:43mais si vous l'écrivez mathématiquement,
00:16:45nous voyons en fait que cela a du sens.
00:16:48Et ainsi,
00:16:49nous pouvons ensuite entraîner le modèle à représenter ce vrai champ de vecteurs qui traduit entre la normale standard et notre distribution de données..
00:17:00Et surtout,
00:17:00nous voulons pouvoir créer des images basées sur des entrées textuelles,
00:17:06donc ce que nous faisons,
00:17:08c'est que nous conditionnons toujours ce réseau sur une entrée textuelle,
00:17:14pour chaque exemple d'image.
00:17:16Génial..
00:17:17Alors,
00:17:17que faisons-nous lorsque nous échantillonnons le modèle?
00:17:21Nous avons ce champ de vecteurs qui représente le mappage entre ces deux distributions.
00:17:25Ce que nous faisons ensuite,
00:17:27c'est que nous commençons par un échantillon de la normale standard.
00:17:31Nous pouvons en échantillonner avec un ordinateur,
00:17:34n'est-ce pas?
00:17:34Nous le savons tous.
00:17:35Et ensuite,
00:17:36nous intégrons le long de ces trajectoires représentées par un réseau neuronal.
00:17:40Nous pouvons le faire avec un simple algorithme d'Euler explicite.
00:17:44Beaucoup d'entre vous les connaissent probablement.
00:17:47Donc,
00:17:48avec un schéma d'intégration numérique,
00:17:50nous pouvons simplement intégrer le long de ces trajectoires ici et ensuite arriver à l'échantillon de données.
00:17:56Nous le faisons passer à nouveau par le décodeur et nous arrivons.
00:18:00Donc encore une fois,
00:18:01cela se passe dans l'espace latent,
00:18:03mais ici nous arrivons ensuite à nouveau dans l'espace des pixels.
00:18:07Et c'est ainsi que je peux ensuite créer des images basées sur une invite textuelle.
00:18:11Génial.
00:18:12Une chose,
00:18:12ces schémas d'intégration numérique sont assez,
00:18:15je pense,
00:18:15ils utilisent beaucoup d'étapes,
00:18:17donc ils décomposent ce processus ici étape par étape en jusqu'à 50 étapes.
00:18:21Donc,
00:18:22ces modèles de flow-matching latents sont intrinsèquement assez lents et il faut environ 30 secondes à une minute pour générer une image,
00:18:30ce qui est un peu long..
00:18:32Je vais très bientôt vous expliquer comment les rendre rapides.
00:18:35Mais voici l'algorithme général de flow-matching latent.
00:18:38Donc,
00:18:38latent encore une fois,
00:18:40connecte ou représente cet espace latent ou désigne cet espace latent dans lequel nous entraînons le modèle.
00:18:45Et l'algorithme de flow-matching est ce dont nous venons de discuter ici.
00:18:49D'accord,
00:18:49j'ai expliqué comment nous créons des images à partir d'invites textuelles,
00:18:53mais comment cela s'applique-t-il maintenant au contexte,
00:18:56qui est un modèle d'édition,
00:18:57n'est-ce pas?
00:18:58C'est aussi super simple.
00:18:59Voici donc une architecture de base de Flux Context.
00:19:02C'est un modèle de transformeur.
00:19:03Nous le savons tous..
00:19:05C'est un peu spécial, mais la magie réside dans l'entrée.
00:19:08Nous voyons donc ici sur le côté gauche l'entrée dans le modèle.
00:19:12Nous avons d'abord l'entrée textuelle qui est simplement intégrée par un encodeur de texte dans un ensemble de jetons de texte.
00:19:20Et puis nous avons l'encodeur d'images que nous avons déjà vu sur la dernière diapositive,
00:19:26n'est-ce pas?
00:19:27Ce gars ici.
00:19:28C'est ce que nous voyons maintenant ici.
00:19:30Nous avons donc cet encodeur d'images et là nous avons deux ensembles de jetons visuels.
00:19:36Premièrement,
00:19:37nous avons l'ensemble des jetons visuels que nous utilisons réellement pour générer.
00:19:42C'est ce qui sera l'image de sortie.
00:19:44Et puis nous avons,
00:19:45si nous voulons faire de l'édition d'images,
00:19:48un deuxième ensemble de jetons visuels qui modélisent ou représentent simplement l'image de contexte.
00:19:55Donc, l'image de référence que je montre au modèle, en fait.
00:19:58Et ce que nous faisons ensuite,
00:20:00c'est que nous poussons cela vers le modèle de transformeur.
00:20:04C'est un modèle spécial car il contient des blocs dits à double flux.
00:20:09Ce sont,
00:20:09je dirais,
00:20:10des sortes de modèles experts pour chaque fidélité.
00:20:13Donc ici,
00:20:14nous traitons les jetons visuels et les jetons de texte séparément..
00:20:20Pour tout sauf l'opération d'attention,
00:20:22l'opération d'attention se produit ensuite conjointement sur tous les jetons.
00:20:28Et puis nous avons des blocs standard,
00:20:30des blocs de transformeur standard où nous mappons essentiellement toutes les entrées,
00:20:36les jetons de texte et les jetons visuels avec les mêmes mappages avant l'opération d'attention.
00:20:43Et comme ça,
00:20:44nous pouvons simplement passer à l'édition d'images..
00:20:48Si vous fournissez une image d'entrée ici et si vous faites de la génération d'images à partir de texte,
00:20:55vous ne fournissez tout simplement pas cela et alors nous n'avons qu'une invite textuelle comme entrée,
00:21:01n'est-ce pas?
00:21:02Génial.
00:21:03Dernier point.
00:21:03Comment le modèle est-il si rapide?
00:21:06Alors,
00:21:06je ne sais pas combien d'entre vous connaissent les modèles Flux.
00:21:10Pouvez-vous lever la main si vous connaissez les modèles Flux?
00:21:14Ou en fait quelques-uns.
00:21:16D'accord, super.
00:21:17Nous savons tous qu'ils sont assez rapides, n'est-ce pas?
00:21:20Que veux-je dire par rapide?
00:21:22Nous sommes fondamentalement le plus souvent des ordres de grandeur plus rapides que les modèles comparables.
00:21:29Alors ici,
00:21:30par exemple,
00:21:30nous regardons évidemment un modèle très lent mais sympa,
00:21:34GPD image un.
00:21:35Aussi ici pour l'édition,
00:21:36les modèles Flux sont plus de 10 fois plus rapides,
00:21:40même plus de,
00:21:40oui,
00:21:4120 fois.
00:21:41C'est donc en fait fou à quel point ils sont rapides par rapport à des modèles puissants comparables.
00:21:48Et la raison en est un algorithme que nous avons développé il y a deux,
00:21:52trois ans.
00:21:53Il s'appelle distillation par diffusion adversariale et le but de cet algorithme est de réduire le nombre d'étapes d'intégration numérique.
00:22:02Je vous ai dit plus tôt qu'il y en a le plus souvent 50 pour un modèle de flow-matching standard et le but ici est de les réduire à seulement quatre.
00:22:11Chaque étape d'intégration numérique signifie un passage avant à travers le réseau neuronal,
00:22:17nous pouvons donc imaginer que cela prend beaucoup de temps,
00:22:21nous voulons donc le réduire autant que possible.
00:22:24Comment ça marche?
00:22:25Nous initialisons deux réseaux ici,
00:22:27un enseignant et un élève.
00:22:29Les deux sont initialisés à partir du modèle de flow-matching appris via l'algorithme que je viens de vous montrer.
00:22:36Et ce que nous faisons ensuite,
00:22:38c'est d'entraîner l'élève à obtenir la même qualité d'image en sortie en quatre étapes que l'enseignant en 50 étapes.
00:22:46C'est l'objectif et c'est comme ça que nous le faisons.
00:22:49Nous commençons par une image,
00:22:51nous l'encodons à nouveau en une latence ici,
00:22:54puis nous générons une image de sortie pour l'élève en quatre étapes ou dans le nombre d'étapes cibles que nous voulons faire.
00:23:02Et ensuite nous la décodons à nouveau en pixels..
00:23:08Au début,
00:23:09cette image ici semble très floue et pas du tout réaliste.
00:23:12Et le but est d'améliorer cela, évidemment.
00:23:14Donc ce que nous faisons,
00:23:16c'est de l'utiliser à nouveau,
00:23:18de l'encoder à nouveau en latence,
00:23:20puis de faire la même chose avec l'enseignant mais en 50 étapes au lieu de quatre étapes.
00:23:25Cela donne alors une image de haute qualité et nous utilisons ensuite cette perte de distillation,
00:23:30essentiellement juste une perte pour s'assurer que les distributions de l'enseignant ou de l'élève correspondent à celles de l'enseignant.
00:23:38Cela seul ne nous permettrait malheureusement pas de générer des images qui semblent réelles.
00:23:44Nous ajoutons donc une autre perte de discriminateur.
00:23:47Nous l'avons déjà vu pour la partie auto-encodeur dans la partie modélisation générative latente de la présentation plus tôt.
00:23:54C'est fondamentalement la même chose.
00:23:56Nous entraînons donc un discriminateur à distinguer les images générées par l'élève des images réelles que nous entrons ici.
00:24:03Et cela se produit dans un espace de caractéristiques dyno v2 ou dans un espace de modèle de représentation d'image appris d'une certaine manière.
00:24:12Et ainsi,
00:24:12nous pouvons ensuite entraîner le modèle à générer des images réalistes au lieu d'utiliser 50 étapes,
00:24:18il n'utilise que quatre étapes.
00:24:20C'est évidemment une énorme accélération.
00:24:23Cependant, dernier point.
00:24:24Si nous regardons cette chose ici,
00:24:26cela semble assez,
00:24:27je dirais beaucoup de surcoûts ici,
00:24:29n'est-ce pas?
00:24:30Parce qu'ici, nous devons passer au latent.
00:24:32Donc nous commençons dans l'espace d'image,
00:24:35encodons vers l'espace latent,
00:24:36et nous décodons à nouveau,
00:24:38puis nous devons encoder à nouveau et décoder à nouveau.
00:24:41Et puis nous,
00:24:42celui-ci encode également à nouveau dans un autre espace de représentation.
00:24:46Beaucoup de surcoût,
00:24:48beaucoup de coûts de mémoire liés à cela.
00:24:50Et c'est juste très,
00:24:51c'était quand après que nous l'ayons conçu,
00:24:54nous avons été étonnés par cela parce que cela nous a permis d'entraîner des modèles rapides.
00:24:59C'était tellement laborieux d'entraîner cela.
00:25:02Alors nous avons réfléchi,
00:25:03d'accord,
00:25:04comment pouvons-nous réellement simplifier cela?
00:25:06Et la réponse est toujours la réponse.
00:25:09Il suffit de le déplacer vers l'espace latent chaque fois que vous avez un pixel.
00:25:13Donc ce que nous avons fait,
00:25:15c'est de proposer une approche de distillation par diffusion adversariale latente.
00:25:20C'est fondamentalement très similaire à ce que nous avons fait pour l'algorithme général de modélisation générative latente.
00:25:27Nous déplaçons simplement tout ici vers l'espace latent.
00:25:30Même chose,
00:25:31mais au lieu d'avoir à utiliser ces encodeurs et décodeurs,
00:25:34nous pouvons simplement nous en débarrasser.
00:25:37Et surtout,
00:25:37en tant que discriminateur,
00:25:39nous n'utilisons plus dyno..
00:25:44Pour ce modèle de représentation d'image,
00:25:46nous utilisons l'enseignant car celui-ci,
00:25:48de toute façon,
00:25:49vit déjà dans l'espace latent et nous fournit une très belle représentation d'image.
00:25:53Nous pouvons donc aussi utiliser l'enseignant comme discriminateur.
00:25:56Et le reste est fondamentalement presque le même.
00:25:59Nous supprimons également la perte de distillation.
00:26:01Nous avons constaté que nous n'en avons pas besoin,
00:26:04ce qui est aussi génial..
00:26:06Nous avons donc une perte moindre et tout est simplifié.
00:26:10Et ainsi,
00:26:11nous pouvons en fait,
00:26:13de manière très efficace en termes de mémoire,
00:26:17réduire le nombre d'étapes d'intégration de cinq à quatre.
00:26:22Nous avons donc une accélération de 12,
00:26:255 fois,
00:26:26et c'est en fait ce que nous voyons comme cet ordre de grandeur dans les graphiques que je vous ai montrés au début de cette section.
00:26:38C'est donc fondamentalement ainsi que nous obtenons un modèle très rapide à partir d'un modèle de flow-matching,
00:26:47d'un modèle de flow-matching de base.
00:26:51Et maintenant,
00:26:52avant que cette présentation ne se termine,
00:26:55je vous ai en fait apporté une démo pour vous montrer Flux un peu en action.
00:27:02Voyons voir.
00:27:03Alors, utilisons-le pour l'édition d'images ici.
00:27:07Laissez-moi télécharger quelque chose après.
00:27:11Qu'est-ce qu'on fait ici?
00:27:13Celui-ci a l'air bien.
00:27:15Ouais.
00:27:16D'accord.
00:27:16Oui.
00:27:17C'est bon.
00:27:18Alors ici,
00:27:19je commence avec un logo de mon club de football préféré,
00:27:24le SC Fribourg.
00:27:25Je dois dire 'soccer' quand je suis aux États-Unis.
00:27:29D'accord.
00:27:30C'est mon club préféré et je veux créer un t-shirt avec ce logo.
00:27:36Alors disons, mettons ce logo sur un t-shirt.
00:27:40C'est un peu bizarre parce que je n'ai pas d'écran devant moi.
00:27:45D'accord.
00:27:46C'est parti.
00:27:47Génération.
00:27:48Laissez-moi réduire un peu ça..
00:27:53Peut-être comme ça.
00:27:55D'accord.
00:27:56Bien.
00:27:56Nous attendons quelques secondes et nous obtenons ce joli logo sur un t-shirt.
00:28:03Et maintenant,
00:28:04ce qui est bien,
00:28:05c'est que nous pouvons continuer,
00:28:08n'est-ce pas?
00:28:09Nous pouvons itérer là-dessus.
00:28:11Alors disons que ce logo est un peu trop grand, je dirais.
00:28:16Rétrécir le logo et le placer sur la partie restante.
00:28:21Encore.
00:28:21Attendez quelques secondes.
00:28:23D'accord.
00:28:24Génial.
00:28:25Et nous arrivons à un résultat qui est vraiment super sympa.
00:28:30C'est exactement ce que je voulais.
00:28:33Je veux recommencer avec celui-ci.
00:28:35Et je veux maintenant changer la couleur parce que la couleur du SC Fribourg n'est pas noire,
00:28:43elle est rouge.
00:28:44Alors, rendons le t-shirt rouge.
00:28:47Aussi super simple.
00:28:49Maintenant, nous sommes à l'édition locale.
00:28:52Nous éditons juste des parties locales de l'image,
00:28:56n'est-ce pas?
00:28:57Dans ce cas, la couleur.
00:28:59Et surtout,
00:29:00nous avons maintenant fait quelques modifications et nous voyons toujours que le logo est représenté de manière très cohérente.
00:29:11C'est donc la cohérence du personnage ou,
00:29:14dans ce cas,
00:29:15de l'objet que nous avons vue.
00:29:18C'est très important.
00:29:19Pensez à un marketeur qui a juste un objet et veut le placer dans un certain contexte,
00:29:27n'est-ce pas?
00:29:28En termes de valeur commerciale,
00:29:30c'est génial,
00:29:31c'est super important.
00:29:33Et maintenant,
00:29:34enfin,
00:29:35nous ajoutons une transformation plus complexe.
00:29:39Nous pouvons dire de mettre le t-shirt sur un homme qui se promène dans le parc.
00:29:45Oups.
00:29:46C'est donc une transformation complexe et vous auriez pu dire,
00:29:51d'accord,
00:29:52des choses comme changer la couleur,
00:29:55vous pouvez le faire dans Photoshop,
00:29:58n'est-ce pas?
00:29:59Historiquement,
00:30:00des choses comme ça,
00:30:02ce n'est pas ce que les outils de génération d'images standard ou non-IA antérieurs étaient capables de faire ou pouvaient faire.
00:30:12C'est vraiment super sympa.
00:30:15Donc ici,
00:30:15nous avons maintenant ce genre d'homme et enfin,
00:30:19je pense que je suis à l'heure,
00:30:22mais faisons une dernière chose qui montre à quel point ce modèle est général.
00:30:28Nous pouvons aussi faire du transfert de style,
00:30:32n'est-ce pas?
00:30:33Alors disons, transformons cela en une aquarelle..
00:30:42D'accord, le dernier.
00:30:44Et avant,
00:30:44avec des modèles comme ceux-ci,
00:30:47vous auriez probablement dû entraîner un réglage fin unique pour chacune de ces tâches,
00:30:53et maintenant nous pouvons simplement tout combiner en une seule chose,
00:30:58ce qui est plutôt cool.
00:31:00Bien.
00:31:00Donc maintenant je pourrais l'imprimer et l'accrocher à mon mur ou quelque chose comme ça.
00:31:07Bref,
00:31:07oui,
00:31:08je pense que cela montre la puissance de ces modèles.
00:31:12Oh, ça a planté quelque chose.
00:31:14Je voulais vous montrer une dernière diapositive parce que j'ai fini,
00:31:19mais nous recrutons et si vous voulez nous rejoindre,
00:31:23veuillez scanner ceci ici ou visiter le terrain de jeu,
00:31:27la démo que je viens de vous montrer est disponible gratuitement.
00:31:31Merci beaucoup.
00:31:32J'espère que vous avez appris quelque chose..