diffusers-Load adapters

https://huggingface.co/docs/diffusers/main/en/using-diffusers/loading_adaptersicon-default.png?t=N7T8https://huggingface.co/docs/diffusers/main/en/using-diffusers/loading_adapters

有几种训练技术可以个性化扩散模型,生成特定主题的图像或某些风格的图像。每种训练方法都会产生不同类型的适配器。一些适配器会生成全新的模型,而其他适配器只修改较小的一组嵌入或权重。这意味着每个适配器的加载过程也是不同的。

1.Dreambooth

DreamBooth针对一个主题的几张图像微调整个扩散模型,以生成该主题的具有新风格和设置的图像。这种方法是通过在提示中使用一个特殊单词来触发模型学习与主题图像相关联。在所有的训练方法中,DreamBooth生成的文件大小最大(通常为几GB),因为它是一个完整的模型。

from diffusers import AutoPipelineForText2Image
import torchpipeline = AutoPipelineForText2Image.from_pretrained("sd-dreambooth-library/herge-style", torch_dtype=torch.float16).to("cuda")
prompt = "A cute herge_style brown bear eating a slice of pizza, stunning color scheme, masterpiece, illustration"
image = pipeline(prompt).images[0]

2.Textual inversion

Textual inversion与DreamBooth非常相似,也可以个性化扩散模型,从仅有的几张图像中生成特定的概念(风格、物体)。这种方法通过训练和寻找新的嵌入来表示在提示中使用特殊单词提供的图像。因此,扩散模型的权重保持不变,而训练过程会生成一个相对较小(几KB)的文件。由于文本反演会创建嵌入,它不能像DreamBooth一样单独使用,需要另一个模型。

from diffusers import AutoPipelineForText2Image
import torchpipeline = AutoPipelineForText2Image.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16).to("cuda")pipeline.load_textual_inversion("sd-concepts-library/gta5-artwork")
prompt = "A cute brown bear eating a slice of pizza, stunning color scheme, masterpiece, illustration, <gta5-artwork> style"
image = pipeline(prompt).images[0]

文本反演还可以训练不受欢迎的内容,以创建负向嵌入,防止模型生成具有这些不受欢迎的内容的图像,例如模糊的图像或手上额外的手指。这是一个快速改进提示的简单方法。您也可以使用load_textual_inversion()来加载嵌入,但这次需要两个参数:

weight_name:如果文件以特定名称保存在Diffusers格式中,或者文件存储在A1111格式中,则指定要加载的权重文件。 token:指定在提示中使用的特殊单词,以触发嵌入。

pipeline.load_textual_inversion("sayakpaul/EasyNegative-test", weight_name="EasyNegative.safetensors", token="EasyNegative"
)prompt = "A cute brown bear eating a slice of pizza, stunning color scheme, masterpiece, illustration, EasyNegative"
negative_prompt = "EasyNegative"image = pipeline(prompt, negative_prompt=negative_prompt, num_inference_steps=50).images[0]

3.lora

LoRA是一种流行的训练技术,因为它速度快且生成较小的文件大小(几百MB),可以训练模型从仅有的几张图像中学习新的风格。它通过向扩散模型中插入新的权重,然后仅对新的权重进行训练,而不是整个模型。LoRA是一种非常通用的训练技术,可与其他训练方法一起使用。例如,通常使用DreamBooth和LoRA共同训练模型。

from diffusers import AutoPipelineForText2Image
import torchpipeline = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16).to("cuda")pipeline.load_lora_weights("ostris/super-cereal-sdxl-lora", weight_name="cereal_box_sdxl_v1.safetensors")
prompt = "bears, pizza bites"
image = pipeline(prompt).images[0]

load_lora_weights()方法会将LoRA的权重加载到UNet和文本编码器中。这是加载LoRA首选的方式,因为它可以处理以下情况:1.LoRA的权重没有分别给UNet和文本编码器的单独标识符;2.LoRA的权重有单独给UNet和文本编码器的标识符。但是,如果只需要将LoRA的权重加载到UNet中,那么可以使用load_attn_procs()方法。加载jbilcke-hf/sdxl-cinematic-1的LoRA权重:

from diffusers import AutoPipelineForText2Image
import torchpipeline = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16).to("cuda")
pipeline.unet.load_attn_procs("jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors")# use cnmt in the prompt to trigger the LoRA
prompt = "A cute cnmt eating a slice of pizza, stunning color scheme, masterpiece, illustration"
image = pipeline(prompt).images[0]

可以传递cross_attention_kwargs={"scale":0.5}来调节lora的权重。

4. load multiple lora

融合权重可以加快推理延迟,因为不需要单独加载基础模型和LoRA!可以使用save_pretrained()保存融合后的管道,以避免每次使用模型时都需要加载和融合权重。

from diffusers import StableDiffusionXLPipeline, AutoencoderKL
import torchvae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipeline = StableDiffusionXLPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0",vae=vae,torch_dtype=torch.float16,
).to("cuda")pipeline.load_lora_weights("ostris/ikea-instructions-lora-sdxl")
pipeline.fuse_lora(lora_scale=0.7)# to unfuse the LoRA weights
pipeline.unfuse_lora()pipeline.load_lora_weights("ostris/super-cereal-sdxl-lora")
pipeline.fuse_lora(lora_scale=0.7)prompt = "A cute brown bear eating a slice of pizza, stunning color scheme, masterpiece, illustration"
image = pipeline(prompt).images[0]

5.PEFT

from diffusers import DiffusionPipeline
import torchpipeline = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16).to("cuda")
pipeline.load_lora_weights("ostris/ikea-instructions-lora-sdxl", weight_name="ikea_instructions_xl_v1_5.safetensors", adapter_name="ikea")
pipeline.load_lora_weights("ostris/super-cereal-sdxl-lora", weight_name="cereal_box_sdxl_v1.safetensors", adapter_name="cereal")pipeline.set_adapters(["ikea", "cereal"], adapter_weights=[0.7, 0.5])prompt = "A cute brown bear eating a slice of pizza, stunning color scheme, masterpiece, illustration"
image = pipeline(prompt, num_inference_steps=30, cross_attention_kwargs={"scale": 1.0}).images[0]

kohya and TheLastBen

from diffusers import AutoPipelineForText2Image
import torchpipeline = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0").to("cuda")
pipeline.load_lora_weights("path/to/weights", weight_name="blueprintify-sd-xl-10.safetensors")# use bl3uprint in the prompt to trigger the LoRA
prompt = "bl3uprint, a highly detailed blueprint of the eiffel tower, explaining how to build all parts, many txt, blueprint grid backdrop"
image = pipeline(prompt).images[0]

无法加载LyCORIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/157156.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【设计模式】第8节:结构型模式之“适配器模式”

一、简介 适配器模式是用来做适配的&#xff0c;它将不兼容的接口转换为可兼容的接口&#xff0c;让原本由于接口不兼容而不能一起工作的类可以一起工作。 适配器模式角色&#xff1a; 请求者client&#xff1a;调用服务的角色目标Target&#xff1a;定义了Client要使用的功…

Unity Perception合成数据生成、标注与ML模型训练

在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D场景编辑器 任何训练过机器学习模型的人都会告诉你&#xff0c;模型是从数据得到的&#xff0c;一般来说&#xff0c;更多的数据和标签会带来更好的性能。 …

[idea]关于idea开发乱码的配置

在JAVA开发中&#xff0c;一般统一设置为UTF-8的编码&#xff0c;包括但不限于开发工具、日志架构、虚拟机、文件编码等。常见配置如下&#xff1a; 1、IDEA工具 在idea64.exe.vmoptions、idea.exe.vmoptions中添加&#xff1a; -Dfile.encodingUTF-8 2、JAVA 运行在window…

钡铼技术ARM工控机在机器人控制领域的应用

ARM工控机是一种基于ARM架构的工业控制计算机&#xff0c;用于在工业自动化领域中进行数据采集、监控、控制和通信等应用。ARM&#xff08;Advanced RISC Machine&#xff09;架构是一种低功耗、高性能的处理器架构&#xff0c;广泛应用于移动设备、嵌入式系统和物联网等领域。…

TypeScript之装饰器

一、是什么 装饰器是一种特殊类型的声明&#xff0c;它能够被附加到类声明&#xff0c;方法&#xff0c; 访问符&#xff0c;属性或参数上 是一种在不改变原类和使用继承的情况下&#xff0c;动态地扩展对象功能 同样的&#xff0c;本质也不是什么高大上的结构&#xff0c;就…

目标检测中常见指标 - mAP

文章目录 1. 评价指标2. 计算示例3. COCO评价指标 1. 评价指标 在目标检测领域&#xff0c;比较常用的两个公开数据集&#xff1a;pascal voc和coco。 目标检测与图像分类明显差距是很大的&#xff0c;在图像分类中&#xff0c;我们通常是统计在验证集当中&#xff0c;分类正…

SpringBoot动态切换数据源

Spring提供一个DataSource实现类用于动态切换数据源——AbstractRoutingDataSource pom.xml <dependencies><!--meiyouyemeishi--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</ar…

2023最新全国拉新app推广接单平台合集 地推网推项目平台渠道

平台 ”聚量推客“ 服务商直营的拉新平台 数据和结算都有保障 地推平台承上启下&#xff0c;对上承接甲方项目&#xff0c;对下对接渠道&#xff0c;方便甲方放单又方便渠道统一接单 以下是全国国内十大地推拉新app推广接单平台分享&#xff0c;2023最新全国拉新app推广接单平…

【MATLAB源码-第60期】OFDM通信链路仿真包含卷积编码,交织,QPSK调制,子载波和CP以及多径数目可自行设置。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 %% 仿真过程 % 产生0-1随机序列 >&#xff08;交织&#xff09;> 符号映射 > 串并转换 > 插入导频 % > IFFT变换 > 加循环前缀CP > 并串转换 > &#xff08;信道编码&#xff09; > 多径信道% …

Vue:实现复制按钮功能

作者:CSDN @ _乐多_ 本文记录了vue开发中,复制按钮的实现代码。用于复制网页中的一个数或者字符串啥的。 效果如下图所示, 文章目录 <el-button @click="copyToClipboard(wgs84Position2.altitude)">复制</el-button>data(

Greenplum管理和监控工具-gpcc-web介绍

Greenplum管理和监控工具-gpcc-web介绍 1. gpcc-web简介 ​ gpcc&#xff08;Greenplum Command Center&#xff09;的Web用户界面是一个强大的工具&#xff0c;它可以帮助用户管理Greenplum数据库集群&#xff0c;提高效率&#xff0c;优化性能&#xff0c;并确保数据的安全…

【Linux】第八站:gcc和g++的使用

文章目录 一、解决sudo命令的问题二、Linux编译器-gcc/g1.gcc的使用2.g的使用 三、gcc编译链接过程1.预处理2.编译&#xff08;生成汇编&#xff09;3.汇编&#xff08;生成机器可识别代码&#xff09;4.链接&#xff08;生成可执行文件或库文件&#xff09;5.一些选项的意义 四…