最强文生图跨模态大模型:Stable Diffusion

文章目录

    • 一、概述
    • 二、Stable Diffusion v1 & v2
      • 2.1 简介
      • 2.2 LAION-5B数据集
      • 2.3 CLIP条件控制模型
      • 2.4 模型训练
    • 三、Stable Diffusion 发展
      • 3.1 图形界面
        • 3.1.1 Web UI
        • 3.1.2 Comfy UI
      • 3.2 微调方法
        • 3.1 Lora
      • 3.3 控制模型
        • 3.3.1 ControlNet
    • 四、其他文生图模型
      • 4.1 DALL-E2
      • 4.2 Imagen
      • 4.3 Midjurney
    • 五、部署使用

一、概述

Stable diffusion是一种潜在的文本到图像的扩散模型。基于之前的大量工作(如DDPM、LDM的提出),并且在Stability AI的算力支持和LAION的海量数据支持下,Stable diffusion才得以成功。

Stable diffusion能够在来自LAION- 5B数据库子集的512x512图像上训练潜在扩散模型。与谷歌的Imagen类似,这个模型使用一个冻结的CLIP vitl /14文本编码器来根据文本提示调整模型。

Stable diffusion拥有860M的UNet和123M的文本编码器,该模型相对轻量级,可以运行在具有至少10GB VRAM的GPU上。具体可以参考:https://huggingface.co/CompVis/stable-diffusion

在这里插入图片描述

二、Stable Diffusion v1 & v2

2.1 简介

Stable Diffusion v1指的是模型架构的特定配置,它使用下采样因子8的自动编码器,带有860M UNet和CLIP vitl /14文本编码器用于扩散模型。该模型在256x256图像上进行预训练,然后在512x512图像上进行微调。

SD v1 是在LDM的基础上建立的,与LDM的主要区别在于:

  • 将原来的条件机制改成用强大的CLIP模型
  • 采用更大的数据集LAION- 5B进行训练

关于训练程序和数据的详细信息,以及模型的预期用途,可以参考:https://github.com/CompVis/stable-diffusion/blob/main/Stable_Diffusion_v1_Model_Card.md。

在这里插入图片描述

模型获取地址:https://huggingface.co/CompVis

2.2 LAION-5B数据集

LAION-5B 包含 58.5 亿个 CLIP 过滤的图像-文本对的数据集,比 LAION-400M 大 14 倍,是世界第一大规模、多模态的文本图像数据集,共80T数据,并提供了色情图片过滤、水印图片过滤、高分辨率图片、美学图片等子集和模型,供不同方向研究。

LAION-5B通过CommonCrawl获取文本和图片,OpenAI的CLIP计算后获取图像和文本的相似性,并删除相似度低于设定阈值的图文对(英文阈值0.28,其余阈值0.26),500亿图片保留了不到60亿,最后形成58.5亿个图文对,包括23.2亿的英语,22.6亿的100+语言及12.7亿的未知语言。

LAION-5B 进一步扩展了语言视觉模型的开放数据集规模,使得更多研究者能够参与到多模态领域中。并且为了推动研究,提供了多个子集用于训练各种规模的模型,也可以通过web界面检索构建子集训练。已有多个模型和论文证明了基于LAION子集训练的模型能够取得良好甚至SOTA的效果。

LAION-5B数据集官网:https://laion.ai/blog/laion-5b/

2.3 CLIP条件控制模型

  • SD采用CLIP text encoder来对输入text提取text embeddings,具体的是采用目前OpenAI所开源的最大CLIP模型:clip-vit-large-patch14,这个CLIP的text encoder是一个transformer模型(只有encoder模块):层数为12,特征维度为768,模型参数大小是123M。对于输入text,送入CLIP text encoder后得到最后的hidden states(即最后一个transformer block得到的特征),其特征维度大小为77x768(77是token的数量),这个细粒度的text embeddings将以cross attention的方式送入UNet中。

  • 值得注意的是,这里的tokenizer最大长度为77(CLIP训练时所采用的设置),当输入text的tokens数量超过77后,将进行截断,如果不足则进行paddings,这样将保证无论输入任何长度的文本(甚至是空文本)都得到77x768大小的特征。 在训练SD的过程中,CLIP text encoder模型是冻结的。在早期的工作中,比如OpenAI的GLIDE和latent diffusion中的LDM均采用一个随机初始化的tranformer模型来提取text的特征,但是最新的工作都是采用预训练好的text model。 比如谷歌的Imagen采用纯文本模型T5 encoder来提出文本特征,而SD则采用CLIP text encoder,预训练好的模型往往已经在大规模数据集上进行了训练,它们要比直接采用一个从零训练好的模型要好。

在这里插入图片描述

2.4 模型训练

SD的训练是采用了32台8卡的A100机器(32 x 8 x A100_40GB GPUs),单卡的训练batch size为2,并采用gradient accumulation,其中gradient accumulation steps=2,那么训练的总batch size就是32x8x2x2=2048。

训练优化器采用AdamW,训练采用warmup,在初始10,000步后学习速率升到0.0001,后面保持不变。至于训练时间,文档上只说了用了150,000小时,这个应该是A100卡时,如果按照256卡A100来算的话,那么大约需要训练25天左右。

SD提供了不同版本的模型,其训练过程如下:

  • SD v1.1:在laion2B-en数据集上以256x256大小训练237,000步,上面我们已经说了,laion2B-en数据集中256以上的样本量共1324M;然后在laion5B的高分辨率数据集以512x512尺寸训练194,000步,这里的高分辨率数据集是图像尺寸在1024x1024以上,共170M样本。
  • SD v1.2:以SD v1.1为初始权重,在improved_aesthetics_5plus数据集上以512x512尺寸训练515,000步数,这个improved_aesthetics_5plus数据集上laion2B-en数据集中美学评分在5分以上的子集(共约600M样本),注意这里过滤了含有水印的图片(pwatermark>0.5)以及图片尺寸在512x512以下的样本。
  • SD v1.3:以SD v1.2为初始权重,在improved_aesthetics_5plus数据集上继续以512x512尺寸训练195,000步数,不过这里采用了CFG(以10%的概率随机drop掉text)。
  • SD v1.4:以SD v1.2为初始权重,在improved_aesthetics_5plus数据集上采用CFG以512x512尺寸训练225,000步数。
  • SD v1.5:以SD v1.2为初始权重,在improved_aesthetics_5plus数据集上采用CFG以512x512尺寸训练595,000步数。

其实可以看到SD v1.3、SD v1.4和SD v1.5其实是以SD v1.2为起点在improved_aesthetics_5plus数据集上采用CFG训练过程中的不同checkpoints,目前最常用的版本是SD v1.4和SD v1.5。

三、Stable Diffusion 发展

SDv2在SDv1的基础上引入了更强大的图文编码器(如OpenCLIP),性能进一步得到提升;随着图形界面的出现,微调方法的发布,控制模型的提出,Stable Diffusion逐渐进入了SDvXL时代。

在这里插入图片描述

3.1 图形界面

3.1.1 Web UI

Stable Diffusion Web UI 是一个基于 Stable Diffusion 的基础应用,利用 gradio 模块搭建出的交互程序,可以在低代码 GUI 中立即访问 Stable Diffusion。

Stable Diffusion Web UI 提供了多种功能,如 txt2img、img2img、inpaint 等,还包含了许多模型融合改进、图片质量修复等附加升级。通过调节不同参数可以生成不同效果,用户可以根据自己的需要和喜好进行创作。

除此之外,可以通过Stable Diffusion Web UI 训练我们自己的模型,它提供了多种训练方式,通过掌握训练方法可以自己制作模型。

具体介绍可参考:Stable Diffusion Web UI

3.1.2 Comfy UI

ComfyUI 是一个基于节点流程式的stable diffusion AI 绘图工具WebUI, 通过将stable diffusion的流程拆分成节点,实现了更加精准的工作流定制和完善的可复现性。但节点式的工作流也提高了一部分使用门槛。

同时,因为内部生成流程做了优化,生成图片时的速度相较于webui又10%~25%的提升(根据不同显卡提升幅度不同),生成大图片的时候不会爆显存,只是图片太大时,会因为切块运算的导致图片碎裂(个人测试在8G显存下直接生成2360x1440分辨率没有问题,往上有几率切碎)

ComfyUI中简单的lora+Highresfix流程:
在这里插入图片描述
具体介绍可参考:Stable Diffusion Comfy UI

3.2 微调方法

3.1 Lora

LoRA,英文全称Low-Rank Adaptation of Large Language Models,直译为大语言模型的低阶适应,这是微软的研究人员为了解决大语言模型微调而开发的一项技术。比如,GPT-3有1750亿参数,为了让它能干特定领域的活儿,需要做微调,但是如果直接对GPT-3做微调,成本太高太麻烦了。

LoRA的做法是,冻结预训练好的模型权重参数,然后在每个Transformer(Transforme就是GPT的那个T)块里注入可训练的层,由于不需要对模型的权重参数重新计算梯度,所以,大大减少了需要训练的计算量。研究发现,LoRA的微调质量与全模型微调相当,我愿称之为神器。

要做个比喻的话,就好比是大模型的一个小模型,或者说是一个插件。LoRA本来是给大语言模型准备的,但把它用在cross-attention layers(交叉关注层)也能影响用文字生成图片的效果。最早的Stable Diffusion模型其实不支持LoRa的,后来才加入了对LoRa的支持。

参考链接:https://huggingface.co/blog/lora

3.3 控制模型

3.3.1 ControlNet

ControlNet 是用来控制SD模型的一种神经网络模型,是SD的一种扩展模型。通过这种扩展模型,可以 引入更多条件来干预图像生成过程,比如能够将参考图像的构图(compositions )或者人体姿势迁移到目标图像。

比如使用canny边缘检测 来控制图像生成:

在这里插入图片描述

四、其他文生图模型

4.1 DALL-E2

2022年OpenAI发表了《Hierarchical Text-Conditional Image Generation with CLIP Latents》这篇论文,这正是DALL-E2的由来。DALL-E2并不是一蹴而就,而是基于OpenAI最近数年已有的工作成果,包括DALL-E、CLIP、GLIDE等。

DALL-E2 的基本原理和SD一样,都是源于最初的扩散概率模型(DDPM),与之不同发是,SD继承了LDM的思想,在潜在空间中进行扩散学习;而DALL-E2是在像素空间中进行扩散学习,所以其计算复杂度较高。

在这里插入图片描述

4.2 Imagen

Imagen 于 2022 年 5 月由谷歌发布,Imagen 使用 T5-XXL 通用大型语言模型作为文本编码器,通过扩散模型实现文本到低分辨率图像的生成,最后将低分辨率图像进行两次超分,得到高分辨率图像。
在这里插入图片描述

4.3 Midjurney

midjourney是一个AI绘画工具,其源码是未公开的,算法整体是基于stable diffusion,在稳定扩散算法的基础上进行了改进。Midjourney 的优势在于:

  • 更高的图像质量:Midjourney 能够生成更高质量的图像,这得益于其引入了一个新的中间状态表示,使得模型更好地学习图像的细节和结构。
  • 更好的控制能力:Midjourney 的中间状态表示使得其可以对图像生成过程进行更精细的控制,包括颜色、纹理等方面。
  • 更快的训练速度:Midjourney 的训练速度相对较快,这得益于其采用了一种新的训练策略,能够更好地平衡生成图像的质量和训练速度。

五、部署使用

在这里插入图片描述

  • 后续持续更新

相关参考:

  • 文生图模型之Stable Diffusion
  • 2 万字带你了解 Stable Diffusion 发展史
  • 从DDPM到DALL-E2和Stable Diffusion——扩散模型相关论文阅读
  • Stable Diffusion ComfyUI 入门感受
  • stable diffusion LORA模型训练最全最详细教程

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

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

相关文章

Unity光照模型实践

光照作为3D渲染中最重要的部分之一,如何去模拟真实环境的光照是重要的研究内容,但是现实环境光照过于复杂,有很多经典好用的光照模型去近似真实光照。 根据基础的Phong模型 最终某个点的结果为 环境光Ambient 漫反射光Diffuse 高光Specula…

一文讲解关于MCU启动原理的几个关键问题

MCU最开始一启动后去哪里读代码? CPU上电启动后被设计为去地址0x00000000位置处读取代码;首先会连续读取两个字,分别是栈指针初始值和复位异常处理函数的地址;然后跳去执行复位异常处理函数。 当然在一些早期的ARM处理器设计中&a…

在Spring Cloud中使用组件Ribbon和Feign,并分别创建子模块注册到Eureka中去

ok,在上篇文章中我们讲了在Spring cloud中使用Zuul网关,这篇文章我们将Spring Cloud的五大核心组件的Ribbon和Feign分别创建一个微服务模块。 题外话,本篇博客就是配置子模块,或者说是微服务,然后将微服务正式启动之前…

Stimulus—需求形式化建模和验证工具

产品概述 Stimulus是法国达索公司产品,其目的是通过需求建模分析来验证需求的正确性。Stimulus的核心理念是运用“自然语言”对功能性需求进行建模,并通过仿真来查找需求中的缺陷,例如需求一致性、不二义性和完整性检查等。借助Stimulus可以在…

2023-12-05 Qt学习总结9

点击 <C 语言编程核心突破> 快速C语言入门 Qt学习总结 前言二十五 QFile文件操作总结 前言 要解决问题: 学习qt最核心知识, 多一个都不学. 二十五 QFile文件操作 QFile是Qt提供的文件读写类&#xff0c;支持对文件进行读写、复制、重命名、删除等操作。常用C函数如下&…

内核上项目【通信】

文章目录 目的操作步骤逆向分析实现代码参考文献 目的 在Win7 64位系统上编写驱动利用ExRegisterAttributeInformationCallback注册回调进行通信 操作步骤 1.利用MmGetSystemRoutineAddress获取ExRegisterAttributeInformationCallback中ExpDisSetAttributeInformation、Exp…

接口自动化多层嵌套json数据处理代码实例

最近在做接口自动化测试&#xff0c;响应的内容大多数是多层嵌套的json数据&#xff0c;在对响应数据进行校验的时候&#xff0c;可以通过&#xff08;key1.key2.key3&#xff09;形式获取嵌套字典值的方法获取响应值&#xff0c;再和预期值比较 1 2 3 4 5 6 7 8 9 10 11 12 13…

Enabling Application Engine Tracing 启用应用程序引擎跟踪

Enabling Application Engine Tracing 启用应用程序引擎跟踪 By default, all Application Engine traces are turned off. To see a trace or a combination of traces, set trace options before you run a program. 默认情况下&#xff0c;所有应用程序引擎跟踪都处于关闭…

自动化测试基础知识:什么是自动化测试?需要学习哪些知识与工具!

1、自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常&#xff0c; 在设计了测试用例并通过评审之后&#xff0c;由测 试人员根据测试用例中描述的规程一步步执行测试&#xff0c;得到实际结果与期望结果的比较。简言之&#xff0c;自动化测试…

12.12 作业

1&#xff0c; 源代码&#xff1a; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);speerornew QTextToSpeech(this);idstartTimer(1000);//每隔一秒&#xf…

LLM之RAG理论(一)| CoN:腾讯提出笔记链(CHAIN-OF-NOTE)来提高检索增强模型(RAG)的透明度

论文地址&#xff1a;https://arxiv.org/pdf/2311.09210.pdf 检索增强语言模型&#xff08;RALM&#xff09;已成为自然语言处理中一种强大的新范式。通过将大型预训练语言模型与外部知识检索相结合&#xff0c;RALM可以减少事实错误和幻觉&#xff0c;同时注入最新知识。然而&…

【无标题】重生奇迹mu召唤萤石魂石最强搭配

荧光宝石搭配&#xff1a; 1、每个装备上都会有不同的孔洞&#xff0c;所镶嵌的3个宝石都是不相同的。 2、宝石也分为很多的种类。选择比较困难。 推荐搭配&#xff1a; 如果有宝石等级比较高&#xff0c;那么就选择高的来搭配。最好的搭配是就是同样的属性搭配一套&#x…

优雅玩转实验室服务器(一)登录服务器

这篇文章更加偏向于使用python程序进行研究的朋友们 原料 Windows主机实验室Linux服务器&#xff08;可以访问互联网&#xff09;一点点耐心 step.0 windows terminal is all you need 别跟我说什么putty&#xff0c;什么winscp&#xff0c;我就是单推Win11自带的软件——win…

005、Softmax损失

之——softmax与交叉熵 杂谈 我们常用到softmax函数与交叉熵的结合作为损失函数以监督学习&#xff0c;这里做一个小小的总结。 正文 1.softmax的基本改进 所谓softmax就是在对接全连接层输出时候把输出概率归一化&#xff0c;最基础的就是这样&#xff1a; 效果就是这样&…

【Android嵌入式开发及实训课程实验】【项目1】 图形界面——计算器项目

【项目1】 图形界面——计算器项目 需求分析界面设计实施1、创建项目2、 界面实现实现代码1.activity_main.xml2.Java代码 - MainActivity.java 3、运行测试 注意点结束~ 需求分析 开发一个简单的计算器项目&#xff0c;该程序只能进行加减乘除运算。要求界面美观&#xff0c;…

【异常解决】SpringBoot + Maven 在 idea 下启动报错 Unable to start embedded Tomcat(已解决)

Unable to start embedded Tomcat&#xff08;已解决&#xff09; 一、背景介绍二、原因分析2.1 网络上整理2.2 其他原因 三、解决方案 一、背景介绍 spring boot(v2.5.14) maven idea 启动项目 之前项目一直启动的好好的&#xff0c;都能正常运行。重启的时候突然就不能启…

汽车服务行业分析:预计2028年将达到38亿元

在推进加快检验机构建设同时&#xff0c;综合评估检验机构数量、分布和检测能力&#xff0c;探索试点汽车 4S 店开展检验&#xff0c;提供维修、保养、车检一体化服务。汽车服务主要是指围绕汽车展开的一系列服务活动&#xff0c;包括维修、美容、金融等&#xff0c;除具有一般…

Wireshark中的http协议包分析

Wireshark可以跟踪网络协议的通讯过程&#xff0c;本节通过http协议&#xff0c;在了解Wireshark使用的基础上&#xff0c;重温http协议的通讯过程。 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于 字节流…

【C++】类与对象(下)

本文目录 1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字 2. static成员2.1 概念2.2 特性 3. 友元3.1 友元函数3.2 友元类 4. 内部类5. 匿名对象6. 拷贝对象时的一些编译器优化7. 再次理解类和对象 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&am…

山西电力市场日前价格预测【2023-12-09】

1.日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-09&#xff09;山西电力市场全天平均日前电价为366.40元/MWh。其中&#xff0c;最高日前电价为629.26元/MWh&#xff0c;预计出现在08:00。最低日前电价为216.58元/MWh&#xff0c;预…