Images IA : Le Deepfake facile… Création de souvenirs.

Pourquoi ? Pourquoi vouloir utiliser le visage d’une personne pour générer des photos/dessins à volonté ?

On pourrait penser qu’il n’y a ici que des intentions malsaines… Et pourtant pas du tout ! L’origine de ce besoin « technique » est tout autre.

Le problème fondamental des images par IA est la « permanence ». En effet, à chaque fois que vous générez une image, tout, ou presque, est différent. Aussi, les jolis personnages que vous venez de générer sont de la chance : Il va être difficile (impossible) de les utiliser dans d’autres situations…

C’est la raison pour laquelle la « permanence des personnages » (character consistency) est un problème de la génération par IA.

C’est de là que sont apparues les techniques de « DeepFake » avec l’intention de rendre un visage « collable » dans des images, et donc d’ouvrir la possibilité d’utiliser un même personnage dans différentes situations/styles/univers.

 

Tout commence avec une photo

Oui, là, ça fait froid dans le dos… Une simple photo correctement cadrée, comme une photo d’identité, suffit.

Pour les exemples, je vais utiliser mon visage. En effet, il n’est pas question de détourner l’image d’une personne, aussi…. il ne reste que moi et mon amour-propre…
Notez simplement que, si nous sommes amenés à nous rencontrer, depuis ces photos… le temps a passé. 😉

Notez aussi, que la photo du visage peut provenir d’une IA !

Enfin, cet article est destiné à servir pendant mes formations, ce qui explique l’utilisation de mon visage. Désolé pour ceux qui ne me connaissent pas de visu.

 

2 techniques de base +1

La première technique consiste à utiliser un filtre qui va « dire » au modèle de suivre une « forme » de visage basée sur la photo d’identité donnée. On utilise ControlNet, avec un IP-Adapter spécialisé dans les visages.

Mais ce filtre, tout seul, ne suffit pas à reproduire correctement un visage. Par contre, il permet de retrouver les traits et d’empêcher le modèle de faire à sa guise.

La deuxième technique consiste à utiliser une extension comme par exemple ReActor. Cette extension fait un Post-traitement. Ce point est important : Il ne s’agit pas ici d’influencer le modèle pour qu’il génère un visage, mais de prendre l’image finale pour lui apposer le visage cible. Selon les cas, on peut voir l’effet « copier-coller.

La troisième technique consiste à entrainer un LoRA sur la personne cible. Autrement dit, on prend une centaine de photos de la personne et on entraine un module que l’on pourra appeler dans tous les prompts. Cette technique est très (de plus en plus) utilisée avec les personnalités publiques.

Pour les exemples, j’utilise le cumul des 2 premières techniques.

Enfin, l’utilisation des IP-Adapter n’est, à cet instant, pas disponible pour des modèles de dernière génération comme FLUX. Aussi, les exemples sont sur des modèles SD1.5 ou SDXL.

 

Des exemples avec mon visage

Donc toutes ces photos/dessins sont « truquées » : J’ai donné à différents modèles un prompt et une vieille photo d’identité (quand j’étais plus jeune donc).

 

Prompt : 1gman, 40 y.o.,solo, wearing overalls, (growing tomatoes:1.2) in a sunny garden full of flowers,smiling, masterpiece, best quality, highly detailed (cinematic lighting, sunlight, volumetric), <lora:ip-adapter-faceid-plus_sd15_lora:1> ,4k

Quand je m’occupais de mon jardin

 

Prompt : Night in 1922 night exterior, photograph taken with a 35 mm camera outdoors in black and white. Garden of a mansion, A middle-aged man, mad scientist in a white suit and black rubber gloves, walks confidently. extravagantly heroic. captured in motion with motion blur with a 35mm camera

Une vieille photo des années 30…

 

Prompt : photograph taken with a 35mm camera outdoors in black and white, (1 man, mad scientist is making futuristic), Night in 1922 interior of a scientist’s laboratory at night, high-tech robots surrounded by tesla coils, captured in motion with motion blur, steampunk

Dans ma cave le dimanche matin.

 

 

Prompt : sketch artsyle, charcoal lines, strong blacks, a (40 year old man:1.5), highly detailed linework , old ship, black sails, pirate captain, hat, hair, wind, sea, motion, wind, heavy rain,  hyper-realistic characters, pastel, elegance, dramatic lighting, greyscale, expressive camera angle, matte, concept art, disintegrating

 

Croquis d’un gars sur le port à shanghai, j’étais jeune… un peu fou-fou

 

 

Prompt : photograph of a racing driver (rally) in overalls sitting in his (Porsche car:1.2) , the man is 50 year old, shaved. soft lighting, high quality, film grain, Fujifilm XT3

Quand je faisais de la course auto…

 

Le pire et le meilleur

Ce n’est que le début (car la vidéo arrive).
Je peux facilement générer, dès à présent, une image de moi, mais aussi de n’importe qui dont j’ai une photo de qualité honorable, dans toutes les situations que je souhaite, il n’y a pas de limite.

Cette possibilité est très pratique quand on doit illustrer un roman par exemple, ou toutes les illustrations avec un personnage récurent. Par contre, pour le reste, cela pose beaucoup de questions…

L’avenir va certainement passer par des LoRA entrainés sur des personnes ou personnages. J’imagine possible que, dans un avenir proche, on ne demande pas à un illustrateur de créer des illustrations, mais plutôt de créer des personnages qui seront entrainés pour générer des illustrations.

En regardant ce jour (novembre 2024) la personne publique la plus téléchargée sur 30 jours sur la plateforme Civitai, il s’agit de « Emma Watson » (la fille dans Harry Potter). Il existe donc un LoRA qui permet de générer des images de cette actrice à volonté… (ici : https://civitai.com/models/859919/emma-watson-flux?modelVersionId=966723)

Vous vous souvenez quand, sur quelques réseaux sociaux, on pouvait dire « qui est sur la photo » ?…

 

Références :

ReActor : https://github.com/Gourieff/sd-webui-reactor
ControlNet : https://github.com/lllyasviel/ControlNet

 

Automatic 1111 , ForgeUi : Générer des images avec l’IA en local

Si vous avez une machine qui dispose d’au moins 8gb de VRAM, vous pouvez essayer de générer des images grâce à l’intelligence artificielle sur votre propre ordinateur.

Je vais ici vous présenter les concepts importants pour débuter.

 

Les 3 logiciels :

Automatic1111 : https://github.com/AUTOMATIC1111/stable-diffusion-webui

Le plus populaire à l’heure actuelle.

Forge UI : https://github.com/lllyasviel/stable-diffusion-webui-forge

Une réplique modifiée de Automatic 1111 qui voit sa popularité augmenter depuis qu’il permet d’utiliser les modèles FLUX

ComfyUI : https://github.com/comfyanonymous/ComfyUI

Moins utilisé, car plus technique

J’utilise ici Automatic 1111 avec une carte 3060RTX 12Go

 

Des concepts importants :

Text2img : L’images est générée à partir d’un prompt.

Img2img : L’image est générée à partir d’une image de référence.

Inpainting : On donne un prompt pour modifier une partie d’une image existante.

Prompt : Les instructions données au modèle.

Negative Prompt : Les instructions de ce qu’on ne veut pas.

Upscaling : Filtre qui permet de grandir la résolution du résultat

Les modèles (Checkpoint) :

Il existe des modèles de base (sd 1.5, sd XL, FLUX etc.), mais aussi une multitude de modèles retravaillés par la communauté.

Certains modèles sont spécialisés en réalisme, d’autres en cartoon, etc. Il suffit de télécharger un modèle et de le placer dans le répertoire adéquat de votre logiciel pour pouvoir l’utiliser.

Attention aux licences !! Chaque modèle a sa licence d’utilisation …

Attention : La taille du modèle ne doit pas dépasser la taille de la mémoire de votre carte graphique !

Une bonne source de modèles se trouve ici : https://civitai.com/models

SD 1.5 : C’est le modèle de base de « stable diffusion » qui est rapide et est encore largement utilisé du fait des nombreux « LoRA » et autres filtres apportés par la communauté.

SDXL 1.0 : C’est le modèle qui a succédé à SD 1.5, plus orienté réalisme.

FLUX : Un modèle encore meilleur, mais qui ne fonctionne (pour l’instant) que sur Forge UI et Comfy UI.

LoRA : Un LoRA (Low Rank Adaption) est un petit modèle entrainé sur un point précis. Un personnage, un style, un concept etc. Les LoRA sont appelés dans vos prompts pour ajouter des effets.

Textual Inversion & Embeddings : Comme les LoRA, mais encore plus petits. Ils ajoutent des corrections comme par exemple les mains avec trop de doigts .

VAE : Ajoute des détails et des corrections d’images à la fin du processus.

Des extensions :

ControlNet (essentielle ! ): Une extension qui va par exemple permettre de définir des poses des personnages. Vous trouverez facilement une multitude de tutoriels sur le sujet.

ADetailer /DeForum : Des filtres et des outils.

ESRGAN : Permet de faire de l’upscaling de bonne qualité pour atteindre de grandes résolutions.

AnimatedDiff : Permet de générer de courtes vidéos, souvent sous forme de GIF animés.

 

Vous voilà prêt pour votre premier prompt !

Attention : tous les prompts sont en anglais

Un exemple : « Portrait of a woman from the Alpes in 1920s. Alpes mountains in background. »
Modele : juggernautXL_v9Rundiffusionphoto2 (base sdxl 1.0)

Même prompt avec le modèle « realcartoon25D_v3 » (base sd1.5), spécialisé Dessin à plat.

Enfin, la même chose avec FLUX (modèle acornIsSpinningFLUX_aisFluxDeDistilled) :

Vous pouvez voir les différences énormes d’interprétation selon les modèles, sur un prompt identique.

 

Quelques petites choses importantes :

  • Le temps mis pour générer une image va dépendre de la capacité de votre carte graphique, du modèle utilisé, de la taille de l’image voulue, du nombre de Steps (itérations, généralement 20) configuré. Cela va de quelques secondes à plusieurs minutes !
  • Cela consomme de l’énergie ! Votre carte graphique et votre CPU seront utilisés presque au maximum de leurs capacités.
  • On génère habituellement beaucoup d’images d’un coup, pour ensuite faire une sélection.

 

Il est temps d’essayer ! A vous de jouer !