Recherche de site Web

Générer un anime avec LoRA et le modèle de diffusion


Introduction

Bienvenue, amis passionnés d'anime ! Imaginez ceci : vous êtes entouré d'affiches de vos personnages d'anime préférés, et tout à coup, l'inspiration vous vient ! 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 à 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 parlé : LoRA et Stable Diffusion (SD). Nous essaierons de comprendre les bases de LoRA et pourquoi est-il utilisé et obtiendrons également un aperçu de SD.

Conditions préalables

  • Connaissances de base : familiarité avec les concepts d'apprentissage profond et les modèles de diffusion stables.
  • 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 du modèle de diffusion stable.
  • Fichiers LoRA : fichiers d'adaptation de bas rang (LoRA) optimisés pour la génération d'anime.
  • Ensembles de données : facultatif, pour un réglage personnalisé si nécessaire.

Ce qui rend les portraits animés si spéciaux

Les personnages d’anime sont comme de vieux amis ; on ne s'en lasse jamais. Ils sont de toutes formes et tailles, des guerriers féroces aux lycéens excentriques en passant par les personnages BTS. Ils sont très spéciaux pour nous. Mais ce qui les rend vraiment spéciaux, c'est leur capacité à conquérir nos cœurs et à nous emmener dans des mondes fantastiques où tout est possible.

Auparavant, la création d'œuvres d'art personnalisées de style Anime nécessitait plusieurs choses, notamment un talent artistique. Désormais, 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 graphiques et vos tâches de calcul intensives avec une robuste mémoire GDDR6 de 16 Go avec ECC, doublant la capacité de 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

Au fur et à mesure que nous adaptons notre modèle à des modèles plus grands, nous effectuons un réglage complet, ce qui implique généralement de recycler tous les paramètres du modèle. Ce processus devient fastidieux et coûteux, non seulement en termes d'argent mais également en termes de dépenses informatiques. Pour relever ce défi, l'adaptation de bas rang, ou LoRA, a été développée.

LoRA fonctionne en gelant les poids du modèle pré-entraînés et en introduisant des matrices de décomposition de rang pouvant être entraînées dans chaque couche de l'architecture Transformer. Cette approche réduit considérablement le nombre de paramètres pouvant être entraînés requis pour les tâches en aval.

L'un des exemples présentés dans le document de recherche original met en évidence le fait que, par rapport au réglage fin du GPT-3 175B avec Adam, LoRA peut réduire le nombre de paramètres pouvant être entraînés d'un facteur 10 000 et réduire de trois fois les besoins en mémoire du GPU.

De plus, malgré la réduction de la formation 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 réglage fin sur diverses architectures telles que RoBERTa, DeBERTa, GPT-2 et GPT-3. De plus, le réglage LoRA permet d'obtenir un débit d'efficacité de formation plus élevé et n'entraîne pas de latence d'inférence supplémentaire, contrairement aux approches basées sur un adaptateur.

Nous avons un article détaillé sur « Formation d'un modèle LoRA pour Stable Diffusion XL » et nous recommandons fortement l'article comme pré-requis pour mieux comprendre le modèle.

Présentation de la diffusion stable et du modèle utilisé

La diffusion stable est un modèle d'intelligence artificielle générative (IA générative) qui utilise la technologie de diffusion et utilise l'espace latent pour générer des images photoréalistes. On peut également exécuter le modèle en utilisant le CPU, mais cela fonctionne bien si vous disposez d'un GPU. Essentiellement, les modèles de diffusion incluent le bruit gaussien pour coder une image. Par la suite, 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 comprennent un auto-encodeur variationnel, une diffusion inverse, un prédicteur de bruit et un conditionnement de texte.

Dans un auto-encodeur variationnel, il y a deux composants principaux : un encodeur et un décodeur. L’encodeur compresse une grande image de 512 x 512 pixels en une représentation plus petite de 64 x 64 dans un espace latent plus facile à gérer. Plus tard, le décodeur reconstruit cette représentation compressée en une image pleine grandeur de 512 x 512 pixels.

La diffusion directe consiste à ajouter progressivement du bruit gaussien à une image jusqu'à ce qu'elle soit complètement obscurcie par un bruit aléatoire. Pendant la formation, toutes les images subissent ce processus, bien qu’il ne soit généralement utilisé que pour les conversions image à image ultérieures.

La diffusion inverse est le processus inverse, 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 d'intermédiaires. En pratique, la formation implique de grandes 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 forme de 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é pendant un nombre spécifié d'étapes, réduisant progressivement le bruit en fonction de 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 d'images finales.

Le conditionnement de texte est une forme courante de conditionnement, dans laquelle des invites textuelles sont utilisées pour guider le processus de génération d'images. Chaque mot de l'invite est analysé et intégré dans un vecteur de 768 valeurs par un tokenizer CLIP. Jusqu'à 75 jetons peuvent être utilisés dans une invite. Stable Diffusion utilise ces invites en les transmettant via un transformateur 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émo, nous avons utilisé Pastel Anime LoRA pour SDXL. Ce modèle représente un modèle d'adaptation de bas rang haute résolution pour Stable Diffusion XL. Le modèle a été affiné avec un taux d'apprentissage fixé à 1e-5 sur 1 300 é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. Dérivé d'Animagine XL, ce modèle, très similaire aux autres modèles de diffusion stable de style anime, facilite la génération d'images à l'aide de balises Danbooru.

Démo

Avant de commencer, nous ferons une vérification rapide

!nvidia-smi

1.Installez les packages et modules nécessaires pour exécuter le modèle

!pip install diffusers --upgrade
!pip install invisible_watermark transformers accelerate safetensors
!pip install -U peft

2.Importez 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 tenseurs de sécurité pour la variable

base_model = "Linaqruf/animagine-xl"
lora_model_id = "Linaqruf/pastel-anime-xl-lora"
lora_filename = "pastel-anime-xl.safetensors"

4.Ensuite, nous initialiserons un pipeline pour un modèle XL de diffusion stable avec les configurations spécifiques. Nous allons charger le modèle pré-entraîné, spécifier le type de données de torche à utiliser pour les calculs du modèle. De plus, l'utilisation de float16 permet de réduire l'utilisation de la mémoire et d'accélérer le calcul, 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 de diffusion XL, puis déplacez l'objet pipeline vers le GPU pour un calcul accéléré.

pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config)
pipe.to('cuda')

6.Chargez les poids

pipe.load_lora_weights(lora_model_id, weight_name=lora_filename)

7.Utilisez le modèle pour produire des créations animées 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 fournissent des invites pour la génération d'images.

Conclusion

Dans cet article, nous avons exploré comment générer des personnages d'anime à l'aide de 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, notamment l’art, le design et le divertissement.

À mesure que la recherche et le développement dans le domaine de la génération IA continuent de progresser, nous prévoyons de nouvelles innovations et améliorations de ces modèles. Stable Diffusion et LoRA remodèleront sans aucun doute le paysage de la synthèse d’images et repousseront les limites de la créativité et de l’expression. Ces nouvelles approches révolutionneront sans aucun doute la façon dont nous percevons et interagissons 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

  • Lora pastel anime xl
  • Qu'est-ce que la diffusion stable
  • Diffusion stable
  • Distiller une diffusion stable
  • Formation d'un modèle LoRA pour Stable Diffusion XL