Générer de l'anime avec LoRA et modèle de diffusion
Introduction
Bienvenue, chers passionnés d'anime ! Imaginez ceci : vous êtes entouré de posters de vos personnages d'anime préférés, et soudain, l'inspiration frappe ! Vous voulez créer votre propre chef-d'œuvre d'anime, maintenant, mais comment pouvez-vous le faire ?
Avec LoRA et les modèles de diffusion, nous apprendrons comment créer des personnages d'anime incroyables !
Dans cet article, nous apprendrons comment générer des images d'anime avec le duo le plus évoqué : LoRA et Stable Diffusion (SD). Nous essayerons de comprendre les bases de LoRA et pourquoi il est utilisé, et nous aurons également un aperçu de SD.
Prérequis
- Connaissances de base : Familiarité avec les concepts d'apprentissage profond et les modèles de diffusion stable.
- Configuration de l'environnement : Accès à un environnement Python avec des bibliothèques telles que PyTorch, Diffusers et Transformers installées.
- Matériel : Un GPU avec suffisamment de VRAM (par exemple, NVIDIA 16 Go+ recommandé).
- Modèle pré-entraîné : Un point de contrôle de modèle Stable Diffusion.
- Fichiers LoRA : fichiers d'adaptation de rang faible (LoRA) ajustés pour la génération d'anime.
- Jeux de données : Optionnel, pour un ajustement personnalisé si nécessaire.
Qu'est-ce qui rend les portraits d'anime si spéciaux
Les personnages d'anime sont comme de vieux amis ; on ne se lasse jamais d'eux. Ils viennent de toutes formes et tailles, des guerriers féroces aux lycéens excentriques en passant par les personnages de BTS. Ils sont très spéciaux pour nous. Mais ce qui les rend vraiment spéciaux, c'est leur capacité à capturer nos cœurs et à nous emporter dans des mondes fantastiques où tout est possible.
Auparavant, créer des œuvres d'art personnalisées de style animé nécessitait plusieurs choses, notamment un talent artistique. Maintenant, avec Stable Diffusion, il est possible de profiter de la révolution de l'IA et de créer nos propres œuvres d'art avec peu ou pas de formation.
Renforcez vos tâches graphiques et intensives en calcul grâce à une mémoire GDDR6 robuste de 16 Go avec ECC, doublant la capacité mémoire par rapport à la génération précédente. N'hésitez pas à consulter la page NVIDIA pour en savoir plus.
Qu'est-ce que LoRA
À mesure que nous augmentons l'échelle de notre modèle vers des modèles plus grands, la réalisation d'un réglage fin complet, qui implique généralement de réentraîner tous les paramètres du modèle. Ce processus devient fastidieux et coûteux non seulement en termes d'argent mais aussi en termes de dépenses informatiques. Pour relever ce défi, l'adaptation à faible rang, ou LoRA, a été développée.
LoRA fonctionne en gelant les poids du modèle pré-entraîné et en introduisant des matrices de décomposition de rang entraînables dans chaque couche de l'architecture Transformer. Cette approche réduit considérablement le nombre de paramètres entraînables requis pour les tâches en aval.
Un des exemples présentés dans l'article de recherche original souligne le fait que - lorsqu'on compare l'affinage de GPT-3 175B avec Adam - LoRA peut réduire le nombre de paramètres entraînables d'un facteur de 10 000 et diminuer les besoins en mémoire GPU par trois.
De plus, malgré la réduction de l'entraînement du modèle pour avoir moins de paramètres, LoRA démontre une qualité de modèle comparable ou supérieure aux méthodes de fine-tuning sur diverses architectures telles que RoBERTa, DeBERTa, GPT-2 et GPT-3. De plus, l'ajustement LoRA atteint un débit d'efficacité d'entraînement plus élevé et n'entraîne pas de latence d'inférence supplémentaire, contrairement aux approches basées sur les adaptateurs.
Nous avons un article détaillé sur « Entraîner un modèle LoRA pour Stable Diffusion XL » et nous recommandons vivement cet article comme prérequis pour mieux comprendre le modèle.
Aperçu de Stable Diffusion et du modèle utilisé
Stable diffusion est un modèle d'intelligence artificielle générative (IA générative) qui utilise la technologie de diffusion et exploite l'espace latent pour générer des images photoréalistes. On peut également exécuter le modèle en utilisant un CPU, mais il fonctionne bien si vous avez un GPU. Essentiellement, les modèles de diffusion incluent du bruit gaussien pour coder une image. Ensuite, ils utilisent un prédicteur de bruit ainsi qu'un processus de diffusion inverse pour reconstruire l'image originale.
Les principaux composants de Stable Diffusion incluent un autoencodeur variationnel, la diffusion inverse, un prédicteur de bruit et le conditionnement par texte.
Dans un autoencodeur variationnel, il y a deux composants principaux : un encodeur et un décodeur. L'encodeur compresse une grande image de 512x512 pixels en une représentation plus petite de 64x64 dans un espace latent plus facile à gérer. Ensuite, le décodeur reconstruit cette représentation compressée en une image complète de 512x512 pixels.
La diffusion avant consiste à ajouter progressivement du bruit gaussien à une image jusqu'à ce qu'elle soit complètement obscurcie par le bruit aléatoire. Pendant l'entraînement, toutes les images subissent ce processus, bien qu'il soit généralement utilisé uniquement pour les conversions d'image à image par la suite.
La diffusion inverse est le processus opposé, annulant essentiellement la diffusion directe étape par étape. Par exemple, si vous entraînez le modèle avec des images de chats et de chiens, le processus de diffusion inverse tendrait à reconstruire soit un chat, soit un chien, avec peu de variations intermédiaires. En pratique, l'entraînement implique de vastes quantités d'images et utilise des invites pour créer des résultats divers et uniques.
Un prédicteur de bruit, implémenté sous la forme d'un modèle U-Net, joue un rôle crucial dans le débruitage des images. Les modèles U-Net, initialement conçus pour la segmentation d'images biomédicales, sont utilisés pour estimer le bruit dans l'espace latent et le soustraire de l'image. Ce processus est répété pour un nombre spécifié d'étapes, réduisant progressivement le bruit selon les paramètres définis par l'utilisateur. Le prédicteur de bruit est influencé par des invites de conditionnement, qui guident la génération finale de l'image.
Le conditionnement par le texte est une forme courante de conditionnement, où des invites textuelles sont utilisées pour guider le processus de génération d'image. Chaque mot de l'invite est analysé et intégré dans un vecteur de 768 valeurs par un tokenizer CLIP. Jusqu'à 75 tokens peuvent être utilisés dans une invite. Stable Diffusion utilise ces invites en les faisant passer à travers un transformeur de texte depuis l'encodeur de texte vers le prédicteur de bruit U-Net. En définissant la graine du générateur de nombres aléatoires, différentes images peuvent être générées dans l'espace latent.
Dans cette démonstration, nous avons utilisé Pastel Anime LoRA pour SDXL. Ce modèle représente un modèle d’adaptation à faible rang pour Stable Diffusion XL en haute résolution. Le modèle a été affiné avec un taux d’apprentissage fixé à 1e-5 sur 1300 étapes globales et une taille de lot de 24, il utilise un ensemble de données comprenant des images de style anime de qualité supérieure. Issu de Animagine XL, ce modèle, très similaire à d’autres modèles Stable Diffusion de style anime, facilite la génération d’images en utilisant des tags Danbooru.
Démo
Avant de commencer, nous ferons un contrôle rapide
!nvidia-smi1. Installer les paquets et modules nécessaires pour exécuter le modèle
!pip install diffusers --upgrade
!pip install invisible_watermark transformers accelerate safetensors
!pip install -U peft2.Importer les bibliothèques
import torch
from torch import autocast
from diffusers import StableDiffusionXLPipeline, EulerAncestralDiscreteScheduler
3. Spécifiez le modèle de base pour générer des images et des safetensors dans la variable
base_model = "Linaqruf/animagine-xl"
lora_model_id = "Linaqruf/pastel-anime-xl-lora"
lora_filename = "pastel-anime-xl.safetensors"4. Ensuite, nous allons initialiser un pipeline pour le modèle Stable Diffusion XL avec les configurations spécifiques. Nous allons charger le modèle pré-entraîné, spécifier le type de données torch à utiliser pour les calculs du modèle. De plus, utiliser float16 aide à réduire l'utilisation de la mémoire et à accélérer les calculs, en particulier sur les GPU.
pipe = StableDiffusionXLPipeline.from_pretrained(
base_model,
torch_dtype=torch.float16,
use_safetensors=True,
variant="fp16"
)5. Mettez à jour le planificateur d'un pipeline diffusion XL, puis déplacez l'objet du pipeline vers le GPU pour un calcul accéléré.
pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config)
pipe.to('cuda')6. Charger les poids
pipe.load_lora_weights(lora_model_id, weight_name=lora_filename)7. Utilisez le modèle pour produire des créations d'anime captivantes
prompt = "face focus, cute, masterpiece, best quality, 1girl, green hair, sweater, looking at viewer, upper body, beanie, outdoors, night, turtleneck"
negative_prompt = "lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry"
image = pipe(
prompt,
negative_prompt=negative_prompt,
width=1024,
height=1024,
guidance_scale=12,
target_size=(1024,1024),
original_size=(4096,4096),
num_inference_steps=50
).images[0]
image.save("anime_girl.png")Nous encouragerons fortement nos lecteurs à libérer leur créativité lorsqu'ils fourniront des suggestions pour la génération d'images.
Conclusion
Dans cet article, nous avons exploré comment générer des personnages d'anime en utilisant LoRA et Stable Diffusion. La capacité de Stable Diffusion à générer des images avec des détails fins, des styles variés et des attributs contrôlés en fait un outil précieux pour de nombreuses applications, y compris l'art, le design et le divertissement.
À mesure que la recherche et le développement dans l'IA Générative continuent de progresser, nous anticipons de nouvelles innovations et améliorations dans ces modèles. Stable Diffusion ainsi que LoRA vont sans aucun doute remodeler le paysage de la synthèse d'images et repousser les limites de la créativité et de l'expression. Ces nouvelles approches révolutionneront sans aucun doute notre perception et notre interaction avec l'imagerie numérique dans les années à venir.
Nous espérons que vous avez apprécié la lecture de l'article !
Référence
- Pastel anime xl lora
- Qu'est-ce que la diffusion stable
- Diffusion Stable
- Distiller la Diffusion Stable
- Entraîner un modèle LoRA pour Stable Diffusion XL
Merci d'apprendre avec la communauté Linux-Console.net.





