Comprendre l'IA visuelle générative multimodale

VVercel
AI/미래기술마케팅/광고사진/예술

Transcript

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..

Key Takeaway

Black Force Labs présente sa famille de modèles Flux, notamment Flux Context, qui révolutionne la génération et l'édition d'images multimodales grâce à l'algorithme Latent Flow Matching et à une distillation adversariale innovante, permettant des modifications complexes et cohérentes en temps quasi réel.

Highlights

Black Force Labs développe la famille de modèles Flux pour la génération et l'édition d'images, avec une forte orientation open source et des modèles disponibles en versions Pro, Dev et Schnell.

Flux Context est un modèle innovant qui unifie la génération d'images à partir de texte et l'édition d'images, offrant des fonctionnalités telles que la cohérence des personnages, la référence de style et l'édition locale en temps quasi réel.

L'algorithme Latent Flow Matching est la base technique des modèles Flux, utilisant un espace latent de dimension inférieure pour une modélisation générative plus efficace et perceptuellement pertinente.

La vitesse exceptionnelle des modèles Flux est attribuée à la distillation par diffusion adversariale latente, qui réduit le nombre d'étapes d'intégration numérique de 50 à seulement quatre, offrant une accélération de 12,5 fois.

Le modèle Flux Context permet des transformations complexes et cohérentes, comme le placement d'objets dans de nouveaux contextes, la modification de couleurs ou le transfert de style, le tout au sein d'une interface texte simple.

Une démonstration en direct a illustré la capacité du modèle à maintenir la cohérence d'un logo tout en le plaçant sur un t-shirt, en changeant sa couleur et en le transférant sur une personne dans un nouveau décor, puis en appliquant un style aquarelle.

Timeline

Introduction et Vision de Black Force Labs

Andy, cofondateur de Black Force Labs, introduit la famille de modèles Flux, conçue pour la génération et l'édition d'images. Il présente la vision de l'entreprise, qui est de faire des médias visuels l'interface centrale de la communication humaine, en fournissant l'infrastructure nécessaire pour alimenter toutes les images et vidéos. Fondée en août 2024, l'entreprise compte 45 employés et deux bureaux (Fribourg, Allemagne et San Francisco). Les modèles Flux sont structurés en trois niveaux : Pro (API), Dev (open source et personnalisable) et Schnell (point d'entrée open source), avec Flux Dev étant le plus grand écosystème sur Hugging Face.

Présentation de Flux Context et ses Capacités

Cette section introduit Flux Context, le modèle le plus récent qui unifie la génération d'images à partir de texte et l'édition d'images, lancé en juin 2025. L'orateur souligne l'importance de l'édition d'images pour itérer sur des images existantes et offrir un contrôle précis. Flux Context permet la cohérence des personnages, la référence de style, l'édition locale et des opérations en temps quasi réel, éliminant le besoin d'un affinage laborieux. Des exemples concrets sont montrés, comme la modification d'un personnage dans différents contextes tout en conservant son identité, le transfert de style et l'édition de texte sur des images.

Différences entre Génération et Édition d'Images

L'orateur explique les pipelines distincts pour la génération d'images à partir de texte et l'édition d'images. La génération d'images utilise une invite textuelle pour créer une nouvelle image, tandis que l'édition d'images commence par une image existante et une instruction textuelle pour un changement spécifique, nécessitant deux conditionnements. La combinaison de ces deux tâches en un seul modèle, comme Flux Context, est présentée comme un avantage majeur, offrant une flexibilité accrue et réduisant le temps nécessaire pour obtenir des résultats de haute qualité, car l'affinage des modèles texte-vers-image n'est plus nécessaire.

L'Algorithme Latent Flow Matching

Cette partie approfondit l'algorithme Latent Flow Matching, qui permet d'entraîner les modèles Flux. Le concept de 'Latent' est expliqué par l'analogie de la compression JPEG, montrant que l'œil humain ne perçoit pas toutes les informations d'une image, rendant inutile de modéliser tous les détails haute fréquence. Un auto-encodeur avec une perte de discriminateur est utilisé pour extraire un 'espace latent' de dimension inférieure, perceptuellement équivalent. Le 'Flow Matching' est ensuite décrit comme une méthode pour entraîner un champ de vecteurs (réseau neuronal) qui mappe une distribution simple (normale standard) à des distributions de données complexes (images naturelles), permettant la génération d'images par intégration le long de ces trajectoires.

Architecture de Flux Context et Optimisation de la Vitesse

L'architecture de Flux Context, un modèle de transformeur, est détaillée, soulignant l'utilisation de jetons textuels et visuels, ainsi que des blocs à double flux pour traiter différentes fidélités. La section explique ensuite comment les modèles Flux atteignent leur vitesse impressionnante, étant souvent des ordres de grandeur plus rapides que leurs concurrents. Cette accélération est due à la 'distillation par diffusion adversariale', un algorithme qui réduit le nombre d'étapes d'intégration numérique de 50 à seulement quatre. Une version simplifiée, la 'distillation par diffusion adversariale latente', déplace l'ensemble du processus dans l'espace latent, éliminant les encodeurs/décodeurs redondants et utilisant l'enseignant comme discriminateur, ce qui se traduit par une accélération de 12,5 fois.

Démonstration en Direct des Capacités de Flux Context

L'orateur réalise une démonstration en direct des capacités d'édition d'images de Flux Context. Il commence par un logo de son club de football préféré (SC Fribourg) et le place sur un t-shirt, puis le redimensionne et le repositionne. Ensuite, il change la couleur du t-shirt en rouge, montrant l'édition locale. Enfin, il effectue une transformation plus complexe en plaçant le t-shirt sur un homme se promenant dans un parc, tout en maintenant la cohérence du logo. La démo se termine par une transformation de style, convertissant l'image en une aquarelle, illustrant la polyvalence du modèle à gérer diverses tâches d'édition sans nécessiter de réglages fins spécifiques pour chaque tâche.

Conclusion et Appel à l'Action

En conclusion, l'orateur réitère la puissance des modèles Flux et invite les personnes intéressées à rejoindre Black Force Labs, mentionnant que l'entreprise recrute activement. Il informe également que la démo présentée est disponible gratuitement pour que les utilisateurs puissent l'expérimenter. Le segment se termine par des remerciements au public, espérant qu'ils ont appris quelque chose de la présentation sur l'IA visuelle générative multimodale.

Community Posts

View all posts