【扩散模型】LCM LoRA:一个通用的Stable Diffusion加速模块

潜在一致性模型:[2310.04378] Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference (arxiv.org)

原文:Paper page - Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference (huggingface.co)

简介:LCM 只需 4,000 个训练步骤(约 32 个 A100 GPU/小时)即可从任何预训练的稳定扩散 (SD) 中提取出来,只需 2~4 个步骤甚至一步即可生成高质量的 768 x 768 分辨率图像,从而显着加速文本转换 -图像生成。 

潜在一致性模型

介绍

潜在扩散模型(Latent Diffusion models, ldm)在高分辨率图像合成方面取得了显著的成果。然而,迭代采样过程计算量大,导致生成速度慢。受一致性模型的启发,我们提出了潜在一致性模型(Latent Consistency Models, lcm),能够在任何预训练的ldm上以最小的步骤进行快速推理,包括稳定扩散。

原理:将引导反向扩散过程视为求解增强概率流ODE (PF-ODE), lcm设计用于直接预测潜在空间中此类ODE的解,从而减少了多次迭代的需要,并允许快速,高保真采样。有效地从预训练的无分类器引导扩散模型中提取,高质量的768×768 2 ~ 4步LCM仅需32 A100 GPU小时即可进行训练。此外,引入了潜在一致性微调(LCF),这是一种针对自定义图像数据集微调LCF的新方法。

一致性模型(CMs):作为一种新型生成模型显示出巨大的潜力,可以在保持生成质量的同时加快采样速度。一致性模型采用一致性映射,直接将ODE轨迹中的任意点映射到原点,实现快速一步生成。可以通过提取预训练的扩散模型或作为独立的生成模型进行训练。

原理

潜在空间中的一致性蒸馏

在诸如稳定扩散(Stable Diffusion, SD)(Rombach et al, 2022)等大规模扩散模型中,利用图像的潜在空间有效地提高了图像生成质量并减少了计算负载。在SD中,首先训练一个自编码器(E, D)来将高维图像数据压缩为低维潜在向量 𝑧=𝐸(𝑥)z=E(x),然后解码以重建图像 𝑥ˆ=𝐷(𝑧)xˆ=D(z)。在潜在空间中训练扩散模型与基于像素的模型相比,大大降低了计算成本并加快了推理过程;潜在扩散模型(LDMs)使得在笔记本电脑的GPU上生成高分辨率图像成为可能。

对于潜在一致性模型(LCMs),我们利用潜在空间的一致性蒸馏优势,与一致性模型(CMs)(Song et al, 2023)中使用的像素空间形成对比。这种方法被称为潜在一致性蒸馏(LCD),应用于预训练的SD,允许在1至4步内合成高分辨率的768×768图像。我们专注于条件生成。回顾一下逆扩散过程的PF-ODE:

其中𝑧𝑡是图像潜在变量,𝜖𝜃(𝑧𝑡,𝑐,𝑡) 是噪声预测模型,𝑐 是给定的条件(例如文本)。通过从 𝑇 到 0 解决 PF-ODE 可以抽取样本。为了执行潜在一致性蒸馏(LCD),我们引入一致性函数 𝑓𝜃:(𝑧𝑡,𝑐,𝑡)→𝑧0​,直接预测 𝑡=0 时 PF-ODE 的解(公式8)。通过噪声预测模型 𝜖^𝜃参数化 𝑓𝜃,如下所示:

其中 𝑐skip(0)=1,𝑐out(0)=0,且 𝜖^𝜃(𝑧,𝑐,𝑡) 是噪声预测模型,其初始参数与教师扩散模型相同。假设有一个高效的ODE求解器 Ψ(𝑧𝑡,𝑡,𝑠,𝑐),用于近似积分公式8的右侧,从时间 𝑡 到 𝑠。在实际操作中,可以使用DDIM,DPM-Solver或DPM-Solver++ 作为 Ψ(⋅,⋅,⋅,⋅)。

只在训练/蒸馏中使用这些求解器,而不是在推理中。潜在一致性模型(LCM)旨在通过最小化一致性蒸馏损失来预测PF-ODE的解:

通过求解增强的PF-ODE进行单阶段引导蒸馏

无分类器引导(Classifier-free guidance, CFG)对于在稳定扩散(SD)中合成高质量的文本对齐图像至关重要,通常需要大于6的CFG比例 𝜔。因此,将CFG集成到蒸馏方法中变得不可或缺。之前的方法 Guided-Distill引入了一个两阶段蒸馏以支持从引导扩散模型中进行少步采样。然而,这种方法计算密集估计,2步推理至少需要45个A100 GPU天)。相比之下,潜在一致性模型(LCM)仅需要32个A100 GPU小时的训练时间来进行2步推理,如图1所示。此外,两阶段引导蒸馏可能导致累积误差,导致性能不佳。相反,LCM通过求解增强的PF-ODE采用高效的单阶段引导蒸馏。回顾在逆扩散过程中使用的CFG:

其中用条件噪声和无条件噪声的线性组合代替原有的噪声预测,ω称为引导标度。为了从引导逆向过程中采样,我们需要求解以下增广的PF-ODE(即,与ω相关的项增广):

为了有效地进行一级导向蒸馏,我们引入增广一致性函数fθ:(zt, ω, c, t)→z0来直接预测t = 0时增广PF-ODE (Eq. 13)的解。我们以与Eq. 9相同的方式参数化fθ,除了λ θ(z, c, t)被λ ϵθ(z, ω, c, t)取代,这是一个用与教师扩散模型相同的参数初始化的噪声预测模型,但还包含额外的可训练参数,用于ω的调节。一致性损失与Eq. 10相同,只是我们使用增广一致性函数fθ(zt, ω, c, t)。

跳过时间步加速蒸馏

离散扩散模型通常通过长时间步长计划 {𝑡𝑖}𝑖(也称为离散化计划或时间计划)训练噪声预测模型,以实现高质量的生成结果。例如,稳定扩散(SD)有一个长度为1000的时间计划。然而,直接将潜在一致性蒸馏(LCD)应用于具有如此长时间计划的SD可能会有问题。模型需要在所有1000个时间步长上进行采样,而一致性损失试图使LCM模型 𝑓𝜃(𝑧𝑡𝑛+1,𝑐,𝑡𝑛+1) 的预测与在相同轨迹上下一步 𝑓𝜃(𝑧𝑡𝑛,𝑐,𝑡𝑛) 的预测对齐。由于 𝑡𝑛 − 𝑡𝑛+1​ 很小,𝑧𝑡𝑛 和 𝑧𝑡𝑛+1(因此 𝑓𝜃(𝑧𝑡𝑛+1,𝑐,𝑡𝑛+1)和 𝑓𝜃(𝑧𝑡𝑛,𝑐,𝑡𝑛))已经彼此接近,导致一致性损失很小,因此收敛速度慢。

为了解决这个问题,我们引入了跳步方法(SKIPPING-STEP),大大缩短了时间计划的长度(从数千缩短到几十),以实现快速收敛,同时保持生成质量。

一致性模型(CMs)使用EDM连续时间计划,并使用欧拉或Heun求解器作为数值连续PF-ODE求解器。对于LCMs,为了适应稳定扩散中的离散时间计划,我们使用DDIM,DPM-Solver或DPM-Solver++作为ODE求解器。

现在,我们介绍潜在一致性蒸馏(LCD)中的跳步方法。与确保相邻时间步长 𝑡𝑛+1→𝑡𝑛 之间的一致性不同,LCMs旨在确保当前时间步长和相隔 𝑘 步的时间步长 𝑡𝑛+𝑘→𝑡𝑛之间的一致性。注意,设置 𝑘=1k=1 会恢复到中的原始计划,导致收敛速度慢,而非常大的 𝑘 可能会导致ODE求解器的大近似误差。在我们的主要实验中,我们设置 𝑘=20,将时间计划的长度从数千减少到几十。第5.2节的结果显示了不同 k 值的效果,并揭示跳步方法在加速LCD过程中的重要性。具体来说,公式14中的一致性蒸馏损失被修改为确保从 𝑡𝑛+𝑘 到 𝑡𝑛 的一致性:

 上述推导类似于公式15。对于LCM,我们在此使用三种可能的ODE求解器:DDIM (Song et al, 2020a)、DPM-Solver (Lu et al, 2022a)、DPM-Solver++。

LCM-LoRA

原理

在使用原始 LCM 蒸馏时,每个模型都需要单独蒸馏。而 LCM LoRA 的核心思想是只对少量适配器 (即 LoRA 层) 进行训练,而不用对完整模型进行训练。推理时,可将生成的 LoRA 用于同一模型的任何微调版本,而无需对每个版本都进行蒸馏。如果你已经迫不及待地想试试这种方法的实际效果了,可以直接跳到 下一节 试一下推理代码。如果你想训练自己的 LoRA,流程如下:

  1. 从 Hub 中选择一个教师模型。如: 你可以使用 SDXL (base),或其任何微调版或 dreambooth 微调版,随你喜欢。
  2. 在该模型上 训练 LCM LoRA 模型。LoRA 是一种参数高效的微调 (PEFT),其实现成本比全模型微调要便宜得多。有关 PEFT 的更详细信息,请参阅 此博文 或 diffusers 库的 LoRA 文档。
  3. 将 LoRA 与任何 SDXL 模型和 LCM 调度器一起组成一个流水线,进行推理。就这样!用这个流水线,你只需几步推理即可生成高质量的图像。

推理

根据使用 LCM LoRA 4 步完成 SDXL 推理 (huggingface.co) 的说明进行推理。给出的使用说明只进行了T2I的示例,不知道Talking face生成的结果如何,首先尝试直接使用了SD-v1.5的预训练权重:latent-consistency/lcm-lora-sdv1-5 · Hugging Face

生成一段14s的视频,原模型用时:15min

使用LCM-LoRA后:

训练

参考:使用 LCM LoRA 4 步完成 SDXL 推理 (huggingface.co)

Stable Diffusion 1.5 训练脚本:diffusers/examples/consistency_distillation/README.md at main · huggingface/diffusers (github.com)

使用时,先加载微调后的模型,然后加载适合 Stable Diffusion v1.5 的 LCM LoRA 权重:

from diffusers import DiffusionPipeline, LCMScheduler
import torch

model_id = "wavymulder/collage-diffusion"
lcm_lora_id = "latent-consistency/lcm-lora-sdv1-5"

pipe = DiffusionPipeline.from_pretrained(model_id, variant="fp16")
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)
pipe.load_lora_weights(lcm_lora_id)
pipe.to(device="cuda", dtype=torch.float16)

prompt = "collage style kid sits looking at the night sky, full of stars"

generator = torch.Generator(device=pipe.device).manual_seed(1337)
images = pipe(
    prompt=prompt,
    generator=generator,
    negative_prompt=negative_prompt,
    num_inference_steps=4,
    guidance_scale=1,
).images[0]
images
  • 使用 Stable Diffusion v1.5 模型去实例化一个标准的 diffusion pipeline。
  • 应用 LCM-LoRA。
  • 将调度器改为 LCMScheduler,这是 LCM 模型使用的调度器。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java常见面试题汇总带答案

本文分为十九个模块,分别是: Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网 络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、 Kafka、Zookeeper、MySQL、Redis、JVM 等等… JDK 和 JRE 有什么区别? JDK:Jav…

《基于 defineProperty 实现前端运行时变量检测》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,欢迎多多交流~ &am…

Threejs环境、透视相机、坐标系、光源

文章目录 如何引入threejsnpm方式script方式script module方式 基本流程与坐标摄像机Geometry(几何体)和Material(材质)光源 如何引入threejs 对于很多刚刚上手threejs的朋友,可能第一步引入threejs就出问题了, 明明已经导入了,就是这样问题…

scala基础

scala基础: hello world: 写scala可运行文件的注意事项1、如果一个scala文件要运行,class要改成object2、如果是class,就仅单纯代表一个类,如果是object代表的是单例对象3、scala语法中,一句话结束不需要加分号4、scal…

Linux——进程间通信一(共享内存、管道、systrem V)

一、进程间通信介绍 1.1、进程间通信的概念和意义 进程间通信(IPC interprocess communication)是一组编程接口,让不同进程之间相互传递、交换信息(让不同的进程看到同一份资源) 数据传输:一个进程需要将它的数据发送给另外一个进程 资源共享:多个进程之间共享同样…

Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行

章节内容 上一节我们完成了: Metastore的基础概念配置模式:内嵌模式、本地模式、远程模式实机配置远程模式 并测试 背景介绍 这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。 之前已经在 V…

Hadoop-YARN-Tutorial

Hadoop-YARN-Tutorial 1 What is YARN? Yarn is the acronym for yet another resource negotiator. Yarn是yet another resource negotiator的缩写。 Yarn is a resource manager created by separating the processing engine and the management function of mapreduce. …

YOLOv8_obb数据集可视化[旋转目标检测实践篇]

先贴代码,周末再补充解析。 这个篇章主要是对标注好的标签进行可视化,虽然比较简单,但是可以从可视化代码中学习到YOLOv8是如何对标签进行解析的。 import cv2 import numpy as np import os import randomdef read_obb_labels(label_file_path):with open(label_file_path,…

ViewController 生命周期

ViewController 生命周期 ViewController 生命周期测试程序:ViewControllerLifeCircle ViewController 生命周期 ViewController 是 iOS 开发中 MVC 框架中的 C,ViewColllecter 是 View(视图)的 Collecter(控制器&…

Vim编辑器与Shell命令脚本

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录 一、Vim文本编辑器 二、编写Shell脚本 三、流程控制语句 四、计划任务服务程序 致谢 一、Vim文本编辑器 “在Linux系统中一切都是文件&am…

TQ15EG开发板教程:MPSOC创建fmcomms8工程

链接:https://pan.baidu.com/s/1jbuYs9alP2SaqnV5fpNgyg 提取码:r00c 本例程需要实现在hdl加no-OS系统中,通过修改fmcomms8/zcu102项目,实现在MPSOC两个fmc口上运行fmcomms8项目。 目录 1 下载文件与切换版本 2 编译fmcomms8项…

【SpringCloud】概述 -- 微服务入门

在Java的整个学习过程中,大家势必会听见一些什么分布式-微服务、高并发、高可用这些专业术语,给人的感觉很高级,有一种高深莫测的感觉。可以看一下这篇博客对这些技术架构的演变有一个初步的认识: 服务端⾼并发分布式结构演进之路-CSDN博客文…

Java开源ERP系统Axelor汉化方法初探

Axelor简介 汉化过程介绍 定义语言和本地化 导出多语言记录 导入翻译 验证翻译 调整翻译 Axelor简介 2024年6月份Axelor ERP发布了8.1版本,适配JDK11及PostgreSQL12及以上版本(7及以前版本适配JDK8及PostgreSQL10)数据库。v8版本较之前…

kubernetes集群部署:node节点部署和cri-docker运行时安装(四)

安装前准备 同《kubernetes集群部署:环境准备及master节点部署(二)》 安装cri-docker 在 Kubernetes 1.20 版本之前,Docker 是 Kubernetes 默认的容器运行时。然而,Kubernetes 社区决定在 Kubernetes 1.20 及以后的…

昇思MindSpore学习入门-评价指标

当训练任务结束,常常需要评价函数(Metrics)来评估模型的好坏。不同的训练任务往往需要不同的Metrics函数。例如,对于二分类问题,常用的评价指标有precision(准确率)、recall(召回率&…

代码随想录算法训练Day58|LeetCode417-太平洋大西洋水流问题、LeetCode827-最大人工岛

太平洋大西洋水流问题 力扣417-太平洋大西洋水流问题 有一个 m n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。 这个岛被分割成一个由若干方形单元格组成的网格。给定一个…

调度系统揭秘(下):调度算法与架构设计

文章目录 一、调度算法1.1、广度优先:1.2、深度优先1.3、总结广度优先搜索(BFS)深度优先搜索(DFS) 二、架构设计2.1、Master/Slave架构优劣分析 2.2、Leader架构优劣分析 2.3、总结 一、调度算法 在调度系统中,调度算…

【】AI八股-神经网络相关

Deep-Learning-Interview-Book/docs/深度学习.md at master amusi/Deep-Learning-Interview-Book GitHub 网上相关总结: 小菜鸡写一写基础深度学习的问题(复制大佬的,自己复习用) - 知乎 (zhihu.com) CV面试问题准备持续更新贴 …

本安防爆手机:危险环境下的安全通信解决方案

在石油化工、煤矿、天然气等危险环境中,通信安全是保障工作人员生命安全和生产顺利进行的关键。防爆智能手机作为专为这些环境设计的通信工具,提供了全方位的安全通信解决方案。 防爆设计与材料: 防爆智能手机采用特殊的防爆结构和材料&…

机械硬盘故障分析及损坏处理(坏道屏蔽)

机械硬盘故障分析: 1、加电后没有声音就是电机不转,是电路问题,更换电路板解决。 2、加电后电机转,有连续敲击声音,或有异响,磁头损坏或机械故障。 3、加电后电机转,运行正常,BIOS无…