Embellir des QR Codes à l’ère de la GenAI
Raphaël Semeteys
Comment Stable Diffusion et ComfyUI permettent de transformer des QR Codes fonctionnels en expériences visuelles originales tout en conservant leur lisibilité.
Si le lecteur est indisponible, utilisez les liens horodatés.
Lire la transcription
- Pour cette petite session, on a le droit à une session un peu fun, un peu légère.
- On va accueillir Raphaël Semeteys, qui va nous présenter notamment
- des petites techniques pour embellir nos QR codes, notamment les QR codes où vous
- pouvez laisser des feedbacks ou autres. Donc ça va être sympa.
- Raphaël, il est Developer Relation chez Worldline.
- Il est architecte, il fait plein de choses.
- Il est même prof de yoga.
- Donc je vais vous laisser apprécier un petit peu son délire sur les QR
- codes et rentrer dans son univers.
- Je te passe la main, Raphaël. Merci, merci.
- Bonjour à tous. Merci d'avoir tenu jusque-là.
- C'est la fin de la fin de DevFest Nantes.
- Juste avant la keynote de fin, on va parler, merci Ambre pour l'intro,
- de QR codes et de qu'est-ce qu'on peut faire pour les embellir
- à l'ère de la GenAI.
- Tu m'as présenté, pas besoin de dire plus que à part que je suis geek.
- Si, je coanime un podcast qui s'appelle Projets libres sur l'open
- source en français. Allez-y, c'est super.
- Ce que je vous propose, c'est on va commencer par rappeler juste
- rapidement deux, trois bases sur les QR codes pour que vous compreniez
- un petit peu comment ça fonctionne.
- Et puis après, on va jouer avec la GenAI là-dessus.
- Donc, les quick response codes, ça a été conçu en 94
- au Japon par ce monsieur-là, Masahiro Hara, chez Toyota, c'est devenu un standard ISO en 2000
- et on voit que c'est toujours vivant puisque l'année dernière,
- il y avait déjà une mise à jour, toujours une mise à jour de la spec.
- Ce serait inspiré du jeu de Go.
- En fait, c'est une évolution en 2D des codes barres qu'on connaissait déjà
- avec des carrés noirs sur fond blanc ou l'inverse, ça dépend
- comment on voit les choses.
- Ça permet de stocker du contenu numérique, alpha numérique, binaire ou des kanjis.
- On retrouve l'origine japonaise de la chose.
- Ils existent en plusieurs tailles qui sont définies dans la spec ou versions,
- c'est le nom officiel dans la spec, de la V1 qui fait 21 carrés sur 21,
- jusqu'à la V40, c'est 177.
- Et en fait, chaque version est quatre fois plus grande que la précédente.
- Il y a un certain nombre de choses aussi qui sont dans la spec.
- Je ne vais pas rentrer dans tous les détails.
- Il y a une chose qui est importante, c'est un mécanisme intégré
- de correction d'erreur.
- C'est ça qui fait qu'on peut lire des QR code, même quand ils sont
- partiellement illisibles ou endommagés.
- L'anatomie d'un QR code.
- Il y a des choses qui sont donc définies et obligatoires pour que des scanneurs
- de QR codes puissent lire le code.
- Il y a des éléments de lisibilité.
- Donc, on retrouve cette notion de zone blanche qui va
- délimiter le QR code et les marqueurs de position, ou ce qu'on appelle les yeux.
- Donc, c'est les trois carrés que vous retrouvez.
- Et ça, ça va permettre à un scanner de dire: là, c'est un QR code.
- Donc, je reconnais bien le QR code.
- Il y a aussi un alignment pattern, un
- ou plusieurs, qui peuvent être positionnés dans le QR code, c'est le petit œil, si on
- veut dire là comme ça, en bas à droite.
- Et ça, ça permet de gérer l'orientation, puisque des fois, on n'est pas toujours
- complètement en face du QR code et donc ça, ça permet de gérer ça.
- En fonction de la version, et puis en avoir plusieurs, mais là,
- je suis sur une version 3, 29 sur 29, donc là, il y en a besoin que d'un.
- Et tout ça, c'est défini dans la norme.
- Et donc le contenu, il est stocké au format binaire.
- Avec un carré noir, ça vaut 1, un carré blanc, ça vaut 0.
- Les espèces de pointillés qu'on voit ici, ça permet de fixer
- la taille d'un module.
- Un carré, ça s'appelle un module dans la spec.
- Et donc là, le scanner, en regardant ça, il va en déduire la taille du module.
- Et puis, on a des métadonnées.
- Ça, c'est ce que j'ai mis en bleu.
- C'est dans des zones réservées dans le QR code où on va stocker des choses
- comme le format et donc le niveau de correction d'erreur qui est utilisé.
- Ça, on va en parler.
- Les masking patterns, je ne vais pas en parler et la version elle-même.
- Et donc, à partir de là, en commençant en bas, là, à droite,
- on peut, en montant en zigzag, commencer à stocker le contenu.
- Donc là, j'ai mis un carré blanc, donc c'est un zéro.
- Puis là, c'est un un.
- Et là, je remonte en zigzag, un un, un un, un zéro.
- Voilà.
- Et donc, on remplit toutes les zones grises comme ça, puis on redescend,
- puis on a fini, on remonte. Ça marche comme ça, un QR code.
- Le mécanisme de correction d'erreur, c'est ça qui m'intéresse.
- Ça, ça permet, comme je l'ai dit, rendre le QR code toujours
- utilisable, même quand il est en partie endommagé.
- C'est fait en rajoutant des données supplémentaires qui vont compenser
- les données qui seraient manquantes.
- Ça va rajouter des lignes et des colonnes, donc ça va faire augmenter la taille, donc
- la version du QR code, potentiellement.
- L'implémentation, c'est l'algorithme de Reed-Solomon.
- C'est connu.
- Je vous passe les détails des mathématiques de polynômes
- et des corps finis, mais c'est des mécanismes qui sont
- utilisés pour le stockage DVD, déjà, ou sur les mécanismes RAID 6,
- sur la sécurisation des disques, aussi sur les communications réseaux
- comme DSL ou certaines communications satellites.
- Donc, ce n'est pas un truc complètement nouveau.
- Le QR code n'étant pas déjà complètement nouveau.
- En gros, ça marche avec des codewords de 8 bits qui sont soit des codewords de
- données, soit des codewords de correction.
- Et puis, ils vont être stockés avec les mécanismes que j'ai décrits.
- Il y a quatre niveaux de correction qui sont possibles.
- Donc, ça va de low à high.
- Et en fonction du niveau, on a à peu près entre 7% et 30% du QR
- code qui peut être toujours illisible.
- Mais avec ce mécanisme de correction d'erreur, on va pouvoir
- reconstruire la data.
- Et c'est ça qui est utilisé historiquement pour personnaliser les QR codes.
- Parce qu'en fait, là, j'ai mis le logo de ma boite, donc Je travaille
- chez Worldline, oui, on le sait.
- Il a été mis là, au milieu du QR code.
- Et en fait, ça, par les scanneurs, ça va être vu comme une erreur.
- Donc, il faut que ça passe entre les 7 et les 30% en fonction
- de la version du QR code.
- C'est ça l'astuce, c'est un hack qui est utilisé pour toujours pouvoir lire le QR
- code en injectant une image dedans. Ok ?
- Donc ça, c'est la manière classique, on va dire, qu'on a de générer les QR codes.
- Donc maintenant, qu'est-ce qu'on peut faire de plus sympa que ça ?
- Parce que là, j'ai changé la couleur et puis j'ai mis un logo.
- Qu'est-ce qu'on peut faire de plus sympa que ça à l'ère de la génération
- d'images et donc de l'IA ?
- Deuxième partie.
- Ce que je vais faire, c'est que...
- Pour ceux qui me connaissent, moi, je viens du monde un peu open source
- et tout, ça, c'est sûr, et j'aime bien faire les trucs en local.
- Moi, mon use case, c'était : je veux faire tout ça, faire tourner les modèles,
- faire tout tourner sur ce PC.
- Ça aussi, c'est l'autre truc important.
- Ce que j'ai fait, c'est que j'ai décidé d'utiliser
- Stable Diffusion, qui est une famille de modèles
- de générations d'images, qui n'est pas une famille...
- J'ai choisi une version qui n'est pas très récente parce que pour mon
- use case, c'est suffisant.
- C'est un modèle plus petit que les modèles plus récents, Flux, etc,
- qu'on peut faire tourner aussi en local.
- Comment ça marche Stable Diffusion ?
- Ça fait du débruitage progressif d'une image.
- Ça prend une image bruitée ou alors une image que je vais donner en entrée
- et en fonctionnant par étapes, il va la débruiter au fur et à mesure.
- Il la débruite en rajoutant des éléments dans l'image qui vont
- être guidés par le prompt.
- Ça, c'est le texte où je vais décrire ce que je veux voir apparaître dans l'image
- et éventuellement par une image, si je lui donne en entrée.
- C'est une famille de modèles qui sont dits ouverts,
- dans le sens où on peut récupérer les poids et donc faire tourner le modèle
- en local et éventuellement l'adapter, le fine tuner, en faire des versions dérivées.
- Il y a une communauté de fait de cette ouverture qui est assez dynamique et on
- trouve pas mal de choses disponibles, dont ComfyUI, qui est donc un front-end
- ou une IHM qu'on installe aussi en local, qui va tourner là sur mon PC, et qui
- permet de créer, on le voit, des workflows.
- Là, c'est l'image qui est un peu en bas.
- Donc c'est complètement no code.
- On ne voit pas que c'est du Python derrière, tout va bien.
- Parce qu'il y a beaucoup de choses qui vont tourner derrière ces nœuds-là.
- On va faire tourner des modèles, on va faire tourner...
- Vous allez voir des choses qu'on va rajouter dans nos workflows.
- Mais c'est très modulaire.
- Là, pour le coup, c'est vraiment open source, GPL v3.
- Cette ouverture-là fait qu'il y a une communauté qui contribue
- beaucoup d'extensions.
- Ça s'appelle des custom nodes dans ComfyUI et ça a le mérite
- de tourner aussi sur Windows, Mac, Linux.
- Pour les ControlNets, ce dont j'ai besoin,
- j'ai besoin d'avoir une technique parce que ce que je vais faire,
- c'est que je vais prendre un ControlNet que j'ai déjà généré parce que générer
- des ControlNets, ça, il y a plein de librairies qui le font,
- il y a plein de sites qui le font, etc.
- Donc ça, je ne l'ai pas inclus dans mon workflow, je l'aurais pu,
- mais ce n'est pas nécessaire.
- Je veux avoir un ControlNet en entrée et pouvoir le modifier avec mes workflows
- pour en faire quelque chose d'autre.
- Et donc pour ça, j'ai dit quoi ?
- ControlNet, un QR code, pardon.
- Et ce que je vais utiliser pour ça, c'est une technique qui s'appelle
- ControlNet, d'où mon lapsus.
- Donc, ControlNet, qu'est-ce que c'est ?
- C'est des composants supplémentaires que je vais pouvoir mettre dans mes
- workflows et ça correspond à des modèles aussi d'IA supplémentaires qui permettent
- d'ajouter un contrôle supplémentaire dans le processus de génération.
- Ce qu'il faut que j'explique peut-être un peu, c'est cet espace latent que vous
- avez peut-être vu dans un slide précédent.
- En fait, Stable Diffusion, et ça, c'est l'innovation initiale
- de Stable Diffusion, c'est que ça ne travaille pas
- sur les pixels et sur l'image elle-même, ça travaille sur une version compressée
- et représentée dans un espace vectoriel à plusieurs dimensions,
- un peu comme les LLM, globalement, avec la notion d'embedding et tout,
- on est sur les mêmes concepts.
- C'est là que va se faire tout ce denoising process dont je vous ai parlé, etc.
- Et une fois que l'image est obtenue, elle va être ensuite encodée
- en pixels et affichée.
- Et les ControlNets, ils permettent d'interférer sur ce
- mécanisme qui se passe dans cet espace latent-là en extrayant uniquement certaines
- caractéristiques d'une une image que je pourrais lui donner en entrée.
- Et là, ce que je veux, c'est un ControlNet qui soit spécialisé
- sur : je reconnais que c'est un QR code et je vais récupérer ces
- caractéristiques-là pour m'assurer que quand tu vas créer une nouvelle image,
- tu transfères des caractéristiques du QR code.
- J'utilise un ControlNet spécialisé qui s'appelle QR Code Monster,
- dont l'objectif est justement de faire ça et que ce soit toujours lisible,
- évidemment, parce que sinon, ce n'est pas très utile.
- Donc, ce que je propose, c'est qu'on essaye.
- Ce que j'ai fait, c'est que j'ai enregistré,
- et je vous assure que tout a été fait sur ce PC-là, mais j'ai enregistré mes
- exécutions parce que je veux vous montrer plusieurs exemples et donc j'ai accéléré
- à m'en donner les choses parce que sinon, ça ne tient pas du tout en 20 minutes.
- Ok ? À partir de là, je vous montre ce...
- Je ne sais pas si vous voyez grand-chose, mais en tout cas, vous voyez qu'il y a des
- boîtes qui sont liées les unes aux autres.
- La boîte verte, c'est le prompt.
- En gros, là, je dis que je veux un paysage champêtre avec le ciel
- bleu, des fleurs, etc.
- La boîte rouge, c'est le prompt négatif, ce que je ne veux pas voir dans l'image.
- Donc, ça permet un contrôle plus fin des choses.
- On retrouve dans la partie bleue qui est en bas les choses qui sont
- liées à mon ControlNet.
- Vous voyez, j'ai donné mon QR code en entrée.
- Et là, dans les boîtes qui sont en dessous, là, je choisis la version
- du ControlNet que je vais utiliser.
- Là, c'est la version pour Stable Diffusion 1.5,
- puisque c'est le modèle que j'ai chargé.
- Je peux paramétrer un certain nombre de choses là.
- Et puis, au niveau du KSampler, ça, c'est vraiment là où se passe toutes
- les mathématiques, les calculs matriciels dans l'espace latent.
- Là, je vais le faire en 50 étapes.
- La guidance, c'est l'impact du prompt sur la génération.
- Et là, je ne l'ai pas accéléré.
- Ça, c'est pour que vous voyez sur mon PC, ce PC, il a une carte NVidia 4070 et il
- n'a que 8 Go de VRAM, ce qui est faible en fait, pour ce genre de choses-là.
- Donc là, vous voyez le temps que ça met à générer.
- Vous voyez, il y a la seed là.
- Je ne sais pas si vous arrivez à lire, mais ça, c'est l'élément aléatoire
- qui est utilisé pour créer l'image...
- Aléatoire également, qui est utilisée au début pour faire le denoising.
- Ok ?
- Là, on voit, j'obtiens ce genre de résultat-là.
- Là, qu'est-ce que j'ai pu faire ?
- J'ai pu avec mon workflow...
- Vous l'avez vu sur le workflow précédent, là, j'ai quelques boîtes,
- il est plutôt simple à ce niveau-là, mais j'ai quand même un peu déjà
- un ControlNet en bas, mais vous voyez, plus je rajoute des boîtes, plus j'ai
- des paramètres sur lesquels je peux jouer.
- Donc ça donne un contrôle plus fin, mais en même temps, on peut se faire un peu...
- On peut se perdre avec tous ces paramètres-là.
- Il y a un peu un finetuning à trouver pour avoir son bon workflow, mais après,
- une fois qu'on a le workflow, on est bien.
- Donc, on est capable de faire ça.
- Si je fixe la seed, c'est-à-dire que je dis : je ne veux pas
- d'éléments aléatoires dans mon workflow.
- Il faut comprendre un truc dans Stable Diffusion,
- c'est que les mêmes paramètres sur le même workflow,
- avec les mêmes valeurs, génèreront toujours la même image, toujours.
- C'est des maths, il n'y a pas de magie, en fait.
- C'est des maths, c'est des calculs de matrices qui se font dans l'espace latent.
- Du coup, les mecs qui ont fait ComfyUI, ils sont super malins parce qu'ils ont
- dit : on va aller mettre tous ces éléments-là dans les métadonnées
- EXIF de l'image.
- Ça veut dire qu'une image qui a été générée avec ComfyUI,
- je fais drag and drop sur l'IHM de ComfyUI et hop, j'ai le workflow
- qui a permis de la générer. Génial.
- Ok.
- Donc, si je fixe la seed, je peux, par exemple, changer le prompt.
- Là, j'ai utilisé la même image, les mêmes paramètres et là, je dis :
- Je peux jouer sur le style.
- Là, je vais dire : je veux que ce soit un peu un building en mode futuriste.
- Ça donne ça.
- On voit par contre que j'ai un peu plus de mal au niveau du contenu de l'image,
- mes danseurs de tango, ils sont un petit peu coincés dans le QR code.
- Ils sont un peu bizarres. On va voir.
- On va se concentrer d'abord sur le style, puis après, on verra ce qu'on peut faire
- sur le contenu et voir si on arrive à faire des choses un peu mieux.
- Ok ?
- Donc, sur le style, ce que je peux faire, c'est que je peux avoir
- des prompts un peu plus avancés.
- Là, pareil, c'est toujours le même workflow, j'ai juste changé le prompt.
- Là, je suis allé chercher ça auprès d'un LLM et je lui ai dit : fais-moi un prompt
- sympa pour représenter quelque chose qui un peu elfique,
- qui est un peu, je ne sais pas, je me mets dans le thème DevFest Nantes.
- Non ? Donc, ça peut être plus ou moins long.
- Parce qu'effectivement, dans Stable Diffusion,
- il y a aussi des modèles qui sont capables de comprendre le texte et donc de
- transformer l'idée, l'intention qu'on a de l'image
- dans cet espace latent.
- On est capable de faire ça, on peut aller plus loin encore en
- rajoutant un custom node qui s'appelle...
- Comment il s'appelle celui-là ?
- ITools Prompt Styler Extra.
- Moi aussi, je suis obligé de me pencher.
- Si Thierry était là, il dirait : on est des vieux.
- Ça, c'est la boîte verte.
- Ce qui est intéressant ici, c'est que ça permet d'injecter facilement
- dans le prompt des styles prédéfinis.
- Vous voyez, là, c'est des fichiers textes derrière avec des choses qui ont
- été prédéfinies et c'est classé par catégories.
- On a plein de catégories : 3D, artisanat, design, dessin, peinture, etc.
- Et on est capable très facilement d'injecter un style
- comme ça dans le prompt.
- Donc, modifions le workflow de tout à l'heure.
- J'ai juste rajouté cette boîte, tout le reste est fixé.
- Ok ?
- Donc là, il y a plein de catégories possibles, comme je l'ai dit.
- Là, je vais choisir Artisanat.
- Et dans l'artisanat, là, vous voyez, il y a toute une liste.
- Je ne sais plus combien il y en a.
- Ça fait 400 styles différents.
- Et en plus, le pire, c'est qu'on peut les superposer.
- Donc là, je suis resté sur un style à la fois parce que sinon, on est bloqué.
- Là, j'ai fixé la seed parce qu'elle ne l'était pas, juste
- pour qu'on voit l'impact.
- Et là, je commence à accélérer les choses parce que sinon,
- on va attendre un peu trop. Et donc là, paf.
- Là, j'avais choisi Metal Work.
- Là, c'est un style un peu métal.
- Là, vous pouvez essayer de scanner, normalement, ça scanne.
- Là, j'ai bien testé et tout, c'est bon.
- Je change de style, donc tout est fixé par ailleurs.
- Là, j'ai choisi Crochet.
- Là, c'est peut-être ma grand-mère qui m'avait...
- On peut faire des trucs sympa, des polos en laine avec des QR codes, pourquoi pas ?
- Toujours dans la catégorie Craft, en changeant juste un paramètre dans mon
- workflow, c'est ça qui m'intéresse, moi.
- Pour faire honneur, l'origine japonaise, Je dis origami parce que ça
- m'intrigue quand même.
- Origami, QR code, je ne sais pas ce que ça peut donner.
- Donc ça donne ça.
- Ça fait un peu genre papier, mais origami, normalement, on ne coupe pas.
- Donc origami, je ne sais pas.
- Puis un petit dernier pour la route parce que celui-là, je le trouvais sympa.
- Et puis ça me donnera un indice sur l'origine réelle des QR codes.
- En fait, c'est peut-être les Romains qui ont inventé les QR codes, peut-être.
- Allez, ça va.
- Là, on voit qu'on est capable de faire quand même des choses assez marrantes
- et relativement facilement une fois qu'on a "tweaké" son workflow.
- Là, je vous en ai mis d'autres et on peut en plus les mixer.
- Après, il faut avoir des choses qui soient compatibles les unes avec les autres,
- sinon les styles commencent à être un peu bizarres.
- Ok ?
- Là, on peut jouer sur les styles, c'est cool.
- Moi, maintenant, je reviens sur mon problème des danseurs de tango.
- Et puis, comme l'a dit Ambre, moi, je suis prof de yoga à la base.
- Là, moi, j'ai eu besoin de QR code pour des trucs qui avaient
- des rapports avec le yoga.
- Moi, ce que je veux faire maintenant, c'est dans le QR code,
- injecter une posture de yoga.
- Juste la posture au passage en plus.
- Je veux que ça ressemble à un vrai humain et tout, mais je veux
- que ce cette posture-là. Pour faire ça, qu'est-ce que je fais ?
- J'utilise aussi des ControlNets, mais cette fois-ci,
- qui vont aller extraire d'autres types d'informations de l'image.
- En l'occurrence, là, ça va être la profondeur et les bords.
- Pourquoi je fais ça ?
- Parce que moi, je veux injecter que la posture.
- Après, je vais avec le prompt dire : le mec, il est habillé comme ça, etc.
- Ok ? Là, qu'est-ce que ça va faire ?
- Ça va juste prendre ça et à nouveau, avec mon ControlNet de tout
- à l'heure pour le QR code.
- Là, j'ai trois ControlNets, envoyer tout ça dans l'espace latent.
- Il y a un ControlNet qui s'appelle OpenPose, qui semblait prometteur,
- mais ce n'est pas assez précis pour un prof de yoga comme moi, donc ça ne va pas.
- Après, maints et maints test, j'utilise ces deux-là parce qu'on peut les empiler.
- Là, on voit, je rajoute la boite qui est tout en bas.
- On retrouve ici les nœuds que j'avais, les prompts.
- Là, c'est vraiment le ControlNet pour le QR code.
- Et là, on a deux colonnes tout en bas, là, pour extraire la posture.
- Là, j'ai le premier où effectivement, on retrouve l'image que je donne
- en entrée, la deuxième image du coup.
- Et là, je choisis le type de ControlNet que je veux, le type de préprocesseur,
- parce que c'est du traitement d'images.
- Ça va extraire ça de l'image et l'envoyer dans le ControlNet qui est plus haut.
- Sur ce ControlNet, je peux fixer la force.
- Là, on peut tweaker un peu les choses. Quand est-ce qu'il démarre ?
- Quand est-ce qu'il se termine dans le processus de génération ?
- Et puis là, je l'empile, j'en mets deux.
- Là, on voit, les informations, elles ont été pré-processées, elles sont extraites.
- Voilà. Là, la profondeur, là, les contours.
- Et tout ça, c'est envoyé dans le processus de génération que j'accélère.
- Et on obtient quelque chose comme ça.
- Ce qui est intéressant, c'est que là, il a "blendé" un peu les deux.
- Vous voyez, ce n'est plus une image qui se met par-dessus, parce qu'il y a aussi
- l'autre ControlNet qui veut que ce soit un QR code.
- Donc, ça permet de faire des choses assez sympas.
- Là, je trouve qu'il a les cheveux un peu trop blancs.
- Je n'ai mis : ne mets pas des cheveux blancs, dans le prompt négatif.
- Là, il génère ça.
- Il n'a pas les cheveux blancs, mais il a un peu les tempes grisonnantes.
- Je ne sais pas ce que je suis en train d'essayer de faire.
- Peut-être que vous avez essayé de deviner, j'essaie de faire
- un truc qui me ressemble.
- À part là, je vous j'ai bien menti, parce que ça fait longtemps que j'ai eu 40
- ans, mais un homme un peu métis, etc, avec des lunettes, etc.
- On voit que quand même, je suis capable de transférer la posture.
- C'est toujours scannable, ça fonctionne, mais ça me ressemble pas de masses.
- Qu'est-ce que je peux faire pour faire que ça me ressemble vraiment à moi ?
- Parce que je suis un psychopathe.
- Là, je vais transférer le visage maintenant.
- Comment faire ça ?
- Là, j'utilise une autre technique qui s'appelle Image Prompt Adapter,
- IP Adapter, qui permet d'utiliser une image comme un élément du prompt.
- Avec des modèles...
- Tout ça, ça vient avec des modèles préentraînés, etc.
- Il y a un type de IP Adapter qui s'appelle FaceID, qui est spécialisé
- dans la connaissance faciale.
- Donc, il va extraire les éléments du visage et les injecter dans la génération.
- Puis, au passage, j'utilise aussi un deuxième type de modèle
- qui s'appelle FaceDetailer, qui lui est post-génération et qui est
- entraîné pour améliorer un visage, quel qu'il soit d'ailleurs,
- sur le nez, les lèvres, la bouche, les expressions, etc.
- Je vais coupler tout ça dans mon workflow final.
- C'est les parties en jaune que j'ai rajoutées là.
- Là, vous voyez, on a toujours nos éléments du workflow précédent.
- Là, en haut, j'ai la partie sur le FaceID, sur l'IP Adapter.
- Ça, ça va être envoyé, ça va générer une première image.
- Et puis le résultat de cette première génération va être envoyé en bas,
- dans le FaceDetailer pour générer une deuxième image qui est encore améliorée.
- Ok, donc on va lancer les choses.
- Et pendant que ça tourne, je zoome sur cette partie-là,
- FaceID, juste pour que vous voyez.
- Là, ça arrive avec plein de paramètres.
- C'est ça qui est un peu fou, c'est qu'on a beaucoup de contrôle.
- Là, j'ai l'image que je donne en entrée.
- Là, je choisis, parce qu'il y a plusieurs versions de FaceID, etc.
- Donc, je choisis la V2, quelle est la force, et puis,
- il y a tout un nombre de paramètres aussi qu'on peut tweaker ici.
- Voilà, ça lance la génération, le reste, c'est comme tout à l'heure.
- Là, on a une première image qui est générée, qui me ressemble, en tout
- cas un peu plus que de tout à l'heure.
- Et là, on voit, c'est passé dans le FaceDetailer.
- On est dans la deuxième partie.
- Vous voyez, FaceDetailer, il est lié à FaceID.
- Donc, il va améliorer.
- Là, j'ai un nœud qui est avant/après FaceDetailer.
- Si je zoome, peut-être, vous allez voir.
- C'est mieux. Je suis plus jeune.
- L'IA elle nous fait toujours plus beaux.
- Je ne sais pas si vous avez remarqué. Bref, on est capable de faire ça.
- Ça, c'est sympa. Qu'est-ce que j'ai fait ?
- Là, j'ai réussi à transférer le QR code, avec un premier ControlNet,
- la pose, avec deux autres ControlNets,
- et puis le visage, donc là, avec IP Adapter. Ça, c'est sympa.
- Bien sûr, on peut mixer tout ça.
- Je peux revenir avec les styles.
- Là, si je remets la...
- Je ne vous fais plus la démo, de toute façon, on n'aura pas le temps,
- mais si je remets la boîte verte, on est capable de mixer
- et donc de changer les styles.
- Ça commence à devenir bien sympa.
- Et puis, comme pour terminer, comme je suis encore plus psychopathe
- que vous le croyez, j'ai dit : moi, je voudrais l'animer, le QR code.
- Je veux faire des QR codes qui bougent.
- Là, moi, je voudrais que ça bouge le visage dans le QR code.
- Pour ça, j'utilise Advanced Live Portrait, qui est un modèle qui est spécialisé
- dans les expressions du visage.
- Il les extrait, il sait les animer et puis les chaîner.
- Ça marche un peu comme ça.
- Ça veut dire qu'on a un éditeur et c'est préconfiguré.
- On peut lui faire tourner la tête, hausser les sourcils, ce genre de choses-là.
- Là, je vous montre un autre workflow que j'ai fait.
- J'aurais pu le chaîner à l'autre, mais je préférais le séparer.
- J'ai une image que j'avais déjà générée avec mon premier workflow.
- Là, j'ai mon éditeur d'expressions.
- Donc, je lui dis par quelle étape je veux qu'il passe.
- Le troisième nœud, il y a un petit formalisme,
- je rentre pas dans les détails, mais qui explique comment on y va,
- en combien de fois, combien de temps ça prend, etc.
- Et puis le dernier nœud, il va combiner tout ça pour faire
- une vidéo, parce qu'une vidéo, c'est une succession d'images.
- Donc, il y a le frame rate qui est important, c'est le nombre d'images
- par seconde que ça va utiliser.
- Et puis, tout ça, ça génère.
- Là, je vais passer parce qu'il ne nous reste pas beaucoup de temps, mais à la
- fin, ça donne quelque chose comme ça.
- On voit, je pourrais tweaker.
- Les gars qui regardent bien, qui ont l'œil de l'aigle,
- verront qu'il y a une partie du QR code avec le front qui bouge.
- Il faudrait que je tweake un petit peu les choses.
- Ça, ça marche, ça scanne.
- Avec IPhone, ça scanne.
- Mais IPhone, des fois, il essaye d'être super malin quand il
- prend des photos, il fait aussi des films derrière, etc.
- Donc ça dépend à quel moment.
- Mais si on installe une app iPhone, et dans la plupart des cas, ça marche aussi.
- Voilà.
- Donc on est capable de faire ce genre de choses-là relativement facilement
- en local, avec des choses qui sont open.
- Moi, je trouve ça fun.
- Donc je voulais partager ça avec vous.
- Merci beaucoup.
- Ça, ce QR code-là, il n'a pas été généré avec mon workflow.
- J'aurais pu, mais j'ai préféré garder celui d'OpenFeedback.
- Donc si vous avez scanné aucun QR code, scannez celui-là.
- Les autres marchaient, je vous jure, mais celui-là aussi.
- Ça, c'est pour vous faire les feedbacks. Ok ?
- Merci d'avance et merci à vous.
Chargement du support…