Maison  >  Article  >  Périphériques technologiques  >  Un ensemble complet de tutoriels pour adapter le framework Diffusers est ici ! De l'adaptateur T2I au populaire ControlNet

Un ensemble complet de tutoriels pour adapter le framework Diffusers est ici ! De l'adaptateur T2I au populaire ControlNet

WBOY
WBOYavant
2023-04-12 18:16:031770parcourir

Peu de temps après que ChatGPT soit sorti du cercle, l'émergence de ControlNet a rapidement attiré de nombreux développeurs et utilisateurs ordinaires sur l'Internet anglais et chinois. Certains utilisateurs ont même affirmé que l'émergence de ControlNet avait fait entrer la création d'IA dans l'ère de la marche droite. Il n'est pas exagéré de dire que, y compris ControlNet, les techniques de formation T2I-Adapter, Composer et LoRA de la même période, la génération contrôlable, en tant que dernier mur de création d'IA, est très susceptible de connaître de nouvelles percées dans un délai prévisible. , réduisant ainsi considérablement les coûts de création de l'utilisateur et améliorant la jouabilité de la création. En seulement deux semaines depuis que ControlNet est devenu open source, son nombre officiel d'étoiles a dépassé les 10 000. Cette popularité est sans aucun doute sans précédent.

Dans le même temps, la communauté open source a également considérablement abaissé le seuil d'utilisation. Par exemple, la plate-forme Hugging Face fournit des poids de modèle de base et des diffuseurs de cadres de formation de modèles généraux, et stable-diffusion-webui a développé un ensemble complet. des plates-formes de démonstration, Civitai a fourni un grand nombre de poids LoRA stylisés.

Un ensemble complet de tutoriels pour adapter le framework Diffusers est ici ! De ladaptateur T2I au populaire ControlNet

Un ensemble complet de tutoriels pour adapter le framework Diffusers est ici ! De ladaptateur T2I au populaire ControlNet

Bien que webui soit actuellement l'outil de visualisation le plus populaire, il a rapidement pris en charge divers modèles de génération récemment lancés et prend en charge de nombreuses options que les utilisateurs peuvent définir. Parce qu'il se concentre sur la facilité d'utilisation de l'interface frontale, la structure du code derrière celle-ci est en réalité très complexe et pas assez conviviale pour les développeurs. Par exemple, bien que webui prenne en charge plusieurs types de chargement et d'inférence, il ne peut pas prendre en charge la conversion sous différents frameworks, ni prendre en charge la formation flexible de modèles. Lors des discussions de la communauté, nous avons découvert de nombreux problèmes qui n'ont pas encore été résolus par le code open source existant.

Tout d'abord, le cadre de code est incompatible Les modèles actuellement populaires, tels que ControlNet et T2I-Adapter, sont incompatibles avec les diffuseurs de bibliothèques de formation Stable Diffusion grand public. Les modèles pré-entraînés ControlNet ne peuvent pas être directement utilisés. dans le cadre de l'utilisation des diffuseurs.

Deuxièmement, le chargement des modèles est limité Actuellement, les modèles sont enregistrés dans différents formats, tels que .bin, .ckpt, .pth, .satetensors, etc. En plus de webui, le framework des diffuseurs dispose actuellement. prise en charge limitée de ces formats de modèles. Étant donné que la plupart des modèles LoRA sont principalement enregistrés dans des tenseurs de sécurité, il est difficile pour les utilisateurs de charger directement des modèles LoRA dans des modèles existants formés sur la base du cadre des diffuseurs.

Troisièmement, Le modèle de base est limité Actuellement, ControlNet et T2I-Adapter sont formés sur la base de Stable-Diffusion-1.5, et seuls les poids du modèle sous SD1.5 sont open source. il existe des modèles d'animation de haute qualité tels que any-v4, ChilloutMix, etc. Même si des informations contrôlables sont introduites, les résultats finaux générés sont toujours limités par les capacités d'UNet dans SD1.5.

Enfin, la formation des modèles est limitée LoRA a été largement vérifiée comme étant l'une des méthodes les plus efficaces pour la migration de style et le maintien d'une adresse IP d'image spécifique. Cependant, le cadre des diffuseurs ne prend actuellement en charge que l'intégration et l'intégration LoRA d'UNet. ne peut pas prendre en charge le texte. L'intégration de l'encodeur limitera la formation de LoRA.

Après avoir discuté avec la communauté open source, nous avons appris que le framework diffusers, en tant que bibliothèque de code générale, envisage de s'adapter en même temps aux modèles de génération récemment lancés car cela implique de réécrire de nombreuses interfaces sous-jacentes, cela reste toujours le cas. a besoin d'un certain temps pour se mettre à jour. À cette fin, nous sommes partis des problèmes réels ci-dessus et avons pris les devants en proposant des solutions auto-développées pour chaque problème afin d'aider rapidement les développeurs à développer plus facilement.

Solution d'adaptation complète de LoRA, ControlNet, T2I-Adapter aux diffuseurs

LoRA pour diffuseurs

Cette solution consiste à intégrer de manière flexible différents types de modèles dans le cadre des diffuseurs, c'est-à-dire en fonction du modèle enregistré par la formation des diffuseurs. Format des poids LoRA. Étant donné que la formation de LoRA gèle généralement le modèle de base, il peut être facilement intégré dans les modèles existants en tant que modules enfichables en tant que contraintes de style ou de condition IP. LoRA lui-même est une technique de formation générale. Son principe de base est que grâce à une décomposition de bas rang, le nombre de paramètres du module peut être considérablement réduit. Actuellement, dans la génération d'images, il est généralement utilisé pour former des modules enfichables indépendants du module. modèle de base. , l'utilisation réelle est de le fusionner avec la sortie du modèle de base sous forme de résidus.

Le premier est l'intégration des poids LoRA Actuellement, les poids fournis sur la plateforme Civitai sont principalement stockés au format ckpt ou safetensors, qui peuvent être répartis dans les deux situations suivantes.

(1) Modèle complet (modèle de base + module LoRA)

Si le modèle complet est au format safetensors, il peut être converti par le script diffuseurs suivant

python ./scripts/convert_original_stable_diffusion_to_diffusers.py --checkpoint_path xxx.safetensors--dump_path save_dir --from_safetensors

Si le modèle complet est en ckpt format, il peut être converti par le script de diffuseurs suivant Conversion

python ./scripts/convert_original_stable_diffusion_to_diffusers.py --checkpoint_path xxx.ckpt--dump_path save_dir

Une fois la conversion terminée, vous pouvez directement utiliser l'API des diffuseurs pour charger le modèle

from diffusers import StableDiffusionPipeline
pipeline = StableDiffusionPipeline.from_pretrained (save_dir,torch_dtype=torch.float32)

(2) LoRA uniquement (inclut uniquement le module LoRA )

Actuellement, les diffuseurs ne peuvent officiellement pas prendre en charge le chargement uniquement des poids LoRA, et les poids LoRA sur les plates-formes open source sont essentiellement stockés sous cette forme. Essentiellement, il complète le remappage de la valeur-clé dans les poids LoRA et l'adapte au modèle des diffuseurs. C'est pour cette raison que nous prenons nous-mêmes en charge cette fonctionnalité et fournissons des scripts de conversion.

pipeline = StableDiffusionPipeline.from_pretrained (model_id,torch_dtype=torch.float32)
model_path = "onePieceWanoSagaStyle_v2Offset.safetensors"
state_dict = load_file (model_path)

Précisez simplement le modèle au format diffuseurs, et les poids LoRA stockés au format safetensors. Nous fournissons un exemple de conversion.

# the default mergering ratio is 0.75, you can manually set it 
python convert_lora_safetensor_to_diffusers.py

De plus, en raison de sa légèreté, LoRA lui-même peut effectuer rapidement une formation avec de petites données et peut être intégré à d'autres réseaux. Afin de ne pas être limités aux poids LoRA existants, nous prenons en charge la formation multi-modules (UNet + encodeur de texte) de LoRA dans le cadre des diffuseurs, et avons soumis un PR dans la base de code officielle (https://github.com/ huggingface/diffusers/pull /2479), et prend en charge la formation LoRA dans ColossalAI.

Le code est open source à: https://github.com/haofanwang/lora-for-diffusers

Controlnet pour les diffuseurs

Un ensemble complet de tutoriels pour adapter le framework Diffusers est ici ! De ladaptateur T2I au populaire ControlNet

diffuseurs dans le cadre , ControlNet est utilisé. Sur la base de certaines tentatives de la communauté open source, nous fournissons un cas d'utilisation complet de ControlNet+Anything-V3, prenant en charge le remplacement du modèle de base du SD1.5 d'origine par le modèle any-v3, afin que ControlNet dispose d'une meilleure génération d'animations. capacités.

De plus, nous prenons également en charge ControlNet+Inpainting et fournissons un pipeline adapté aux diffuseurs,

Un ensemble complet de tutoriels pour adapter le framework Diffusers est ici ! De ladaptateur T2I au populaire ControlNet

Un ensemble complet de tutoriels pour adapter le framework Diffusers est ici ! De ladaptateur T2I au populaire ControlNet

et Multi-ControlNet pour un contrôle multi-conditions.

Un ensemble complet de tutoriels pour adapter le framework Diffusers est ici ! De ladaptateur T2I au populaire ControlNet

Le code est open source sur : https://github.com/haofanwang/ControlNet-for-Diffusers

T2I-Adaptateur pour diffuseurs

Un ensemble complet de tutoriels pour adapter le framework Diffusers est ici ! De ladaptateur T2I au populaire ControlNet

Semblable à ControlNet, nous prenons également en charge l'adaptation de l'adaptateur open source T2I aux diffuseurs en même temps.

Le code est open source sur : https://github.com/haofanwang/T2I-Adapter-for-Diffusers

Actuellement, les trois solutions d'adaptation ci-dessus sont open source pour la communauté et ont été officiellement reconnues respectivement dans ControlNet et T2I-Adapter. Elles ont également reçu les remerciements de l'auteur de stable-diffusion-webui-colab. Nous maintenons des discussions avec les responsables des diffuseurs et achèverons prochainement l'intégration de la solution ci-dessus dans la base de code officielle. Vous êtes également invités à essayer notre travail à l'avance. Si vous avez des questions, vous pouvez directement soulever un problème et nous vous répondrons dans les plus brefs délais.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer