AIGC-Stable Diffusion发展及原理总结

目录

一. AIGC介绍

1. 介绍

2. AIGC商业化方向

3. AIGC是技术集合

4. AIGC发展三要素

4.1 数据

4.2 算力

4.3 算法

4.3.1 多模态模型CLIP

4.3.2 图像生成模型

二. Stable Diffusion 稳定扩散模型

1. 介绍

1.1 文生图功能(Txt2Img)

1.2 图生图功能(Img2Img)

2. 技术架构

step1 CLIP Text Encoder

(1) CLIP介绍

(2) CLIP架构

step2 LDM之VAE Encoder

step3 LDM之Diffusion

(1) 前向扩散:加噪

(2) 反向扩散:去噪

a) SD核心:U-Net

b) Transformer2DModel: 加入条件控制

(3) 如何训练噪声预测器?

step4 LDM之VAE Decoder

三. 参考


一. AIGC介绍

这两年,短视频平台上“AI绘画“非常火爆,抖音一键换装、前世今生之类的模板大家没玩过也应该听说过。另一个火爆应用当属ChatGPT,自2022年ChatPGT3.5发布后,快速累积了超百万用户,可谓家喻户晓。这两个概念均来自同一个领域,即AIGC。

1. 介绍

AIGC全称是AI Generated Content, 直译:人工智能生成内容,也叫生成式人工智能

AIGC是继­专业生产内容(PGC, Professional-genrated Content)、用户生产内容(UGC,User-generated Content)之后的新型内容创作方式,是互联网内容创作方式的一次革新。AIGC可以在对话、故事、图像、视频和音乐制作等方面,打造全新的数字内容生成与交互形式。


 

2022年8月,一位没有绘画基础的参赛者利用AI绘画工具 Midjourney创作的《太空歌剧院》在美国科罗纳州举办的新型数字艺术家竞赛中,获得“数字艺术/数字修饰照片”类别一等奖,由此,AI绘画进入大众视野。同年,AI绘图模型Stable Diffusion开源,助力AI绘画破圈得到广泛关注。

2022年11月30日,ChatGPT推出,5天后用户破百万,两个月后月活用户突破1亿,称为史上用户增长速度最快的消费级应用程序。

2021年开始,风投对AIGC的投资金额出现爆发式增长,2022年超20亿美元。据美国财经媒体Semafer报道,微软预计向ChatGPT的开发者OpenAI投资100亿美元。

2022年,因此被称为“AIGC元年”

2. AIGC商业化方向

AIGC的出现,打开了一个全新的创作世界,为人们提供了无尽的可能性。AIGC生成的内容种类和范围随着技术的发展也在不断扩大。目前,常见的内容包括:

  • AI文本生成,OpenAI GPT系列为代表的模型,实现自动写邮件、广告营销方案等

  • AI文生图/图生图如使用“跨模态模型CLIP+扩散模型Diffusion“实现的文生图模型Stable Diffusion

  • AI文生视频,如OpenAI今年2.16日发布的Sora,颠覆了全球AI生成视频市场的格局

更多AIGC应用可见:AIGC工具导航 | 生成式AI工具导航平台-全品类AI应用商店!

3. AIGC是技术集合

AIGC不是某一个单一的技术或者模型,AIGC使一个技术集合。概括来说,它是基于生成对抗网络GAN、大型预训练模型等人工智能技术,通过已有数据寻找规律,并通过适当的泛化能力生成相关内容的技术集合。简单理解就是所有的AIGC方向的模型,都不是单一模型实现的,而是通过刚才说的技术组合训练得到的。

4. AIGC发展三要素

4.1 数据

UGC生成的规模化内容,创造了大量学习素材,互联网数据规模快速膨胀。

4.2 算力

图形处理器GPU张量处理器TPU等算力设备性能不断提升,A100,H100等加速卡

4.3 算法

当前AIGC技术已经从最初追求生成内容的真实性的基本要求,发展到满足生成内容多样性、可控性的进阶需求,并开始追求生成内容的组合型。数字内容的组合性一方面关注复杂场景、长文本等内容中各个元素的组合,如虚拟数字世界中人、物和环境间的交互组合,并生成整体场景;另一方面,追求概念、规则等抽象表达的组合,以此完成更加丰富和生动的数字内容生成。这些新需求对传统单一模态的人工智能算法框架提出了新的挑战

预训练大模型多模态方向的发展,为AIGC技术发展和升级提供了基石

4.3.1 多模态模型CLIP

由于CLIP 两模块之一的Text Encoder是基于Transformer的模型,所以Transformer才被称为”跨模态重要开端之一“

4.3.2 图像生成模型

模型

组成

优点

缺点

GAN

GAN = 生成器 + 判别器

  • 生成器将一个随机噪声向量映射到数据空间,生成一个伪造的样本
  • 判别器接收来自真实数据和生成器的样本,进行判断分类成真实还是伪造
  • 生成器的训练是通过与判别器的对抗性训练来实现的,即生成器试图生成能够愚弄判别器的样本,而判别器则试图区分真实样本和生成样本 

生成的图片逼真

  • 由于要同时训练判别器和生成器这两个网络,训练不稳定
  • GAN主要优化目标是使图片逼真,导致图片多样性不足
  • GAN的生成是隐式的,由网络完成,不遵循概率分布,可解释性不强

VAE

VAE = 编码器 + 解码器

AVE将输入数据编码成一个符合正态分布的数据分布,学习图片的数据分布特征

学习的概率分布,可解释性强,图片多样性足

​产生图片模糊,原因可参考:破解VAE的迷思_vae生成的图像为什么模糊-CSDN博客

Diffusion

Diffusion = 前向扩散 + 反向扩散

  • 生成的图片逼真
  • 数学可解释性强

由于是在像素空间做的扩散,数据量多,训练成本高昂、速度慢,需要多步采样

Latent Diffusion

Latention Diffusion = VAE+Diffusion

潜在扩散模型

Latent Diffusion通过引入VAE, 解决速度慢的问题:VAE将像素空间的输入压缩编码成Latent潜在空间的概率分布,SD的Latent Space为4x64x64, 比图像像素空间3x512x512小48倍,减少空间占用,之后再进行模型扩散,这样可以加速训练。

  • 生成的图片逼真
  • 数学可解释性强
  • 训练成本低、速度快

二. Stable Diffusion 稳定扩散模型

1. 介绍

Stable Diffusion 是Stability AI公司于 2022 年10月发布的深度学习文字到图像生成模型。它主要用于根据文字的描述产生详细图像,能够在几秒钟内创作出令人惊叹的艺术作品。Stable Diffusion的源代码和模型权重已分别公开发布在GitHubHugging Face,它的参数量只有1B左右,可以在大多数配备有适度GPU的电脑硬件上运行。

训练数据集

LAION-5B是一个公开的数据集,源自网络上抓取的图片-标题数据,这是一个由6亿张带标题的图片组成的子集。这个最终的子集也排除了低分辨率的图像和被人工智能识别为带有水印的图像。对该模型的训练数据进行的第三方分析发现,在从所使用的原始更广泛的数据集中抽取的1200万张图片的较小子集中,大约47%的图像样本量来自100个不同的网站

训练成本

亚马逊云计算服务平台,256 x NV A100 GPU, 15万个GPU小时(单卡约73h=3day),成本为60万美元

发行版本

1.1 文生图功能(Txt2Img)

Stable Diffusion演示 

1.2 图生图功能(Img2Img)

2. 技术架构

Stable Diffusion是潜在扩散模型Latent Diffusion Model(简称LDM)的一种变体。

Stable Diffusion = CLIP Text Encoder + Latent Diffusion(VAE+Diffusion)

step1 CLIP Text Encoder

SD只用到了CLIP模型的Text Encoder预训练模型,权重固定,它会将文本编码成语义向量,该语义向量对应一个图像。

(1) CLIP介绍
  • 全称:Contrastive Languange-Image Pre-Training,是OpenAI 2021.1发布的基于对比学习的文图多模态模型,核心是“Connecting text and images
  • 训练数据集:WIT(WebImage Text,OpenAI自己网页爬虫创建的一个超过4亿图像-文本对数据集)
  • 模型组成:
    • 基于Transformer Text Encoder
    • 基于CNN/VITImage Encoder两个模型

(2) CLIP架构

CLIP会提取文本特征和图像特征,通过对比学习,计算文本特征和图像特征的余弦相似性(cosine similarity),让模型学习到文本和图像的匹配关系。

SD只用到了步骤(1)的成果:

  1. CLIP是自监督模型,就是说,CLIP不像传统的视觉模型,如Resnet系列模型,需要用标注好类别的图像进行训练,CLIP使用的数据集本身带有文本-图片的对应关系。
  2. 前向推理时,N组图片-文本数据,分别编码得到语义特征和图片特征后,计算其相似度,得到NxN个预测值,表明文本特征和每一个图片特征的相似度
  3. 若对角线是匹配的文本-图像对,则记为正样本,其他位置则记为不匹配的负样本;
  4. 定义对比损失函数Contrastive Loss,计算正负样本的相似度,得到损失函数的结果值(这个损失函数的目标是:最大化正样本对的相似度, 同时最小化负样本对的相似度——计算原理暂未研究)
  5. 对损失函数进行求导,计算梯度,用于指导参数的更新方向
  6. 更新模型参数,迭代优化

对比学习预训练学习的是整个句子与其描述的图像之间的关系,而不是像猫、狗、树等单一类别;比如传统的视觉模型,如Resnet系列模型,ResNet使用的是有监督学习,训练集是经过标注的图片,标注信息就是图片的分类,这个信息相比CLIP而言就很单一了。

当在整个句子上进行训练时,模型可以学习更多的东西(而非单一的类别),找到图像和文本之间的关系。CLIP在图像分类等比赛中的表现,也证明了CLIP对于文本-图像对比学习的优越性。

 

所以,我们若问SD为什么选择了CLIP Text Ecnoder作为其文本编码器?

CLIP开创性地提出训练模型学习图像和文本之间的联系,并在各项视觉比赛中证明了其优越性。CLIP预训练模型的Text Encoder编码处理的语义向量,有对应近似的图像特征向量,便于跨模态处理图像相关的下游任务,如图像生成等。

step2 LDM之VAE Encoder

CLIP全称:Varitional AutoEncoder(VAE) 变分自编码器

CLIP思路:VAE将输入转换成Latent空间的概率分布,如标准高斯分布;
  SDLatent Space4x64x64, 比图像像素空间3x512x51248倍,减少空间占用,加速训练

CLIP组成:Encoder + decoder

step3 LDM之Diffusion

扩散模型的目的:学习从噪声生成图片的方法

先宏观了解LDM做了什么(下为图生图样例,有图片输入+关键字)

  1. 隐向量通过前向扩散增加噪声图像数据点的复杂分布逐渐转为简单分布
  2. 通过CLIP Text Encoder编码出来的语义向量作为监督信号作用噪过程
  3. 噪声向量通过反向扩散去除噪声,得到图像最终的隐向量

动图示例

Q: 图像逐渐从噪声中转变而来,这一过程是如何实现的呢?

A: 训练噪声预测器

(1) 前向扩散:加噪

向图像逐渐添加高斯噪声以破坏图像原始的特征,直到图像完全无法识别。这个过程就像一滴墨水滴入了一杯水中,墨水在水里diffuses(扩散).几分钟后,墨水会随机分散并融入水里。数据通过逐步添加噪声,从一个真实图像的复杂分布逐渐过渡到噪点图的简单分布(符合高斯分布)

为什么添加高斯噪声?
高斯噪声是一种正太分布的噪声,正态分布在自然界中广泛存在,如人的身高、体重、智商等都可以用正态分布来描述。因此使用高斯噪声可以称为一个正确的基本假设,符合真实世界规律。

如何添加噪声?

如何反向去除噪声?

正向过程不同,不能使用q(xₜ₋₁|xₜ)来反转噪声,因为它是难以处理的(无法计算)。所以我们需要训练神经网络(xₜ₋₁|xₜ)来近似q(xₜ₋₁|xₜ)。近似(xₜ₋₁|xₜ)服从正态分布。

小结

1. LDM前向扩散可以用封闭形式的固定公式计算

2. LDM反向扩散可以用训练好的神经网络来完成(Noising Predictor, U-Net)

    为了近似所需的去噪步骤,我们只需要使用神经网络推理结果近似预期噪声

因此噪声预测器实际训练的就是反向扩散的U-Net网络 !!

(2) 反向扩散:去噪

前面已经讲了,反向扩散要想像时光倒流一样,将噪点图逐渐恢复到原图,需要教会该神经网络预测(1)中添加的噪声,然后从前向扩散得到的符合高斯分布的噪声矩阵中,连续减去预测噪声,最终恢复到原图。这个神经网络就是U-Net网络。

a) SD核心:U-Net

从上图中放大UNet模块:

U-Net主要对Forward Diffusion输出的高斯噪声矩阵进行迭代降噪,并且每次都使用CLIP Text-encoder的文本特征向量+timesteps作为条件控制来预测噪声,然后在高斯噪声矩阵上去除预测噪声,经过多次迭代后,将高斯噪声矩阵转换成图片的Latent特征。

U-Net原本的结构

SD中的U-Net,在原本Encoder-Decoder(下采样-上采样)结构基础上,增加了新模块:

  • 1. Time Embedding 时间编码
  • 将时间信息映射到一个连续的向量空间,使得时间之间的关系可以被模型学习和利用。这些时间嵌入帮助神经网络获得图像当前处于哪个状态(步骤)的某些信息。这对于了解图像中当前是否存在更多或更少的噪声很有用,从而使模型减去更多或更少的噪声。
  • 2.Cross Attenion模块(交叉注意力机制)
  • 3.Self-Attention模块(自注意力机制)

b) Transformer2DModel: 加入条件控制

先说一下注意力机制中QKV的作用:

举个例子,我在网页上输入关键字“Query”来搜索某些信息,网站会根据Q去数据库查询相关联的“Key”, 然后返回给我”Key”对应的“Value”。

更通俗的说法可以是:QKV模式就像是你在找答案时,先提出问题(Query),然后根据问题找到相关的关键信息(Key),最终得到你想要的具体答案或内容(Value)。

详见:Transformer_transformer qkv不同源-CSDN博客

SD的U-Net既用到了自注意力,也用到了交叉注意力。

  • Self-Attention用于图像特征自己内部信息聚合
  • Cross-Attention用于让生成图像对齐文本,其Q来自图像特征,K,V来自文本编码。我们知道CLIP Text Encoder编码出来的文本编码跟其对应的图像向量是近似的,所以这个文本编码本身也对应表示一幅图像Cross-attentionKV替换成来自文本编码的KV, 就可以关联原图像和关键字,生成的图片会既和原本生成的图相似,也会和参考图像相似。(个人理解)

(3) 如何训练噪声预测器?

 

step4 LDM之VAE Decoder

看看step2就行了,知道这一步是将 去噪后的矩阵解码回像素空间就行。具体VAE的原理没有过多研究。

三. 参考

  1. 中国信通院-京东探索研究所-人工智能生成内容(AIGC)白皮书(2022年).pdf
  2. AIGC深度报告:新一轮内容生产力革命的起点(国海证券).pdf
  3. 硬核解读Stable Diffusion(完整版)
  4. https://zh.wikipedia.org/wiki/Stable_Diffusion
  5. 7. 稳定扩散模型(Stable diffusion model) — 张振虎的博客 张振虎 文档
  6. 深入浅出完整解析Stable Diffusion(SD)核心基础知识
  7. CLIP:用文本作为监督信号训练可迁移的视觉模型
  8. OpenAI CLIP模型的简单实现:教程
  9. 神器CLIP:连接文本和图像,打造可迁移的视觉模型
  10. 【Stable Diffusion】之原理篇
  11. LDM(Latent Diffusion Model)详解
  12. stable diffusion原理解读通俗易懂,史诗级万字爆肝长文!
  13. Stable Diffusion 文生图技术原理_stable diffusion csdn-CSDN博客  

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Golang实战:深入hash/crc64标准库的应用与技巧

Golang实战:深入hash/crc64标准库的应用与技巧 引言hash/crc64简介基本原理核心功能 环境准备安装Golang创建一个新的Golang项目引入hash/crc64包测试环境配置 hash/crc64的基本使用计算字符串的CRC64校验和计算文件的CRC64校验和 高级技巧与应用数据流和分块处理网…

5、axios请求、动画、组件、路由重定向、UI组件

一、axios请求 Axios是一个基于Promise的HTTP状态库&#xff0c;封装ajax。ajax包含axios安装 npm install axios 引入 import axios form “axios” 1、get请求 <script> // 1.本页面引入 import axios from "axios";data() {return {imgSrc: ""…

ICLR2024:南洋理工发布!改几个参数就为大模型注入后门

随着大语言模型&#xff08;LLMs&#xff09;在处理自然语言处理&#xff08;NLP&#xff09;相关任务中的广泛应用&#xff0c;它们在人们日常生活中的作用日益凸显。例如&#xff0c;ChatGPT等模型已被用于各种文本生成、分类和情感分析任务。然而&#xff0c;这些模型潜在的…

系统分析师-参考模型

前言 网络术语中的参考模型指的是OSI参考模型&#xff0c;由ISO&#xff08;国际标准化组织&#xff09;制定的一套普遍适用的规范集合&#xff0c;以使得全球范围的计算机平台可进行开放式通信。 ISO创建了一个有助于开发和理解计算机的通信模型&#xff0c;即开放系统互联OS…

vivado 生成比特流或器件镜像

在生成比特流或器件镜像之前 &#xff0c; 请复查其设置 &#xff0c; 确保这些设置对于您的设计都正确无误 &#xff0c; 这一点至关重要。 Vivado IDE 中的比特流和器件镜像设置分为 2 种类型 &#xff1a; 1. 比特流或器件镜像文件格式设置。 2. 器件配置设置。 在 V…

【MySQL】DQL-基础查询-语句&演示(查询多个字段 / 所有字段/并设置别名/去重)

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

【探索Linux】—— 强大的命令行工具 P.31(守护进程)

阅读导航 引言一、守护进程简介1. 概念2. 特点 二、用C创建守护进程⭕代码✅主要步骤 温馨提示 引言 当谈到计算机系统中运行的特殊进程时&#xff0c;守护进程&#xff08;daemon&#xff09;无疑是一个备受关注的话题。作为在后台默默运行并提供各种服务的进程&#xff0c;守…

Linux(4)常见操作整理-静态路由-双网卡-文件上传下载-运维思路-性能监测方法-jar包查找

五、常见操作 1、静态路由配置 【描述】&#xff1a;当前ifconfig eno16777728 对应ip&#xff1a;172.41.0.120 【解决】&#xff1a; &#xff08;1&#xff09; [rootlocalhost ~]# cd /etc/sysconfig/network-scripts/ &#xff08;2&#xff09; 添加文件&#xff1a…

LeetCode_1.两数之和

一、题目描述 二、方法 1.方法1&#xff08;暴力枚举法&#xff09; 利用两个for循环&#xff0c;对数组进行逐一的遍历&#xff0c;直到找到两个数的和为目标值时返回这两个数的下标。以下为c实现的完整代码。 # include<iostream> using namespace std; #include<…

C语言例4-35:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡、问鸡翁、鸡母和鸡雏各几何?

方法一&#xff1a; 代码如下&#xff1a; //鸡翁一&#xff0c;值钱五&#xff1b;鸡母一&#xff0c;值钱三&#xff1b;鸡雏三&#xff0c;值钱一。百钱买百鸡、问鸡翁、鸡母和鸡雏各几何&#xff1f; //方法一&#xff1a; #include<stdio.h> int main(void) {int x…

智慧城市一屏统览,数字孪生综合治理

现代城市作为一个复杂系统&#xff0c;牵一发而动全身&#xff0c;城市化进程中产生新的矛盾和社会问题都会影响整个城市系统的正常运转。智慧城市是应对这些问题的策略之一。城市工作要树立系统思维&#xff0c;从构成城市诸多要素、结构、功能等方面入手&#xff0c;系统推进…

Paper Digest|基于在线聚类的自监督自蒸馏序列推荐模型

论文标题&#xff1a; Leave No One Behind: Online Self-Supervised Self-Distillation for Sequential Recommendation 作者姓名&#xff1a; 韦绍玮、吴郑伟、李欣、吴沁桐、张志强、周俊、顾立宏、顾进杰 组织单位&#xff1a; 蚂蚁集团 录用会议&#xff1a; WWW 2024 …

CSS之动画

一&#xff0c;动画的制作 实现盒子绕圈走 二&#xff0c; 动画的常用属性 三&#xff0c;动画简写属性 前面两个属性一定要写&#xff0c;第三个linear是指匀速的意思&#xff08;默认是ease&#xff09;

【Java多线程】4——特定场景解决办法

4 特定场景解决方法 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个st…

C语言结合体和枚举的魅力展现

前言 ✨✨欢迎&#x1f44d;&#x1f44d;点赞☕️☕️收藏✍✍评论 个人主页&#xff1a;秋邱’博客 所属栏目&#xff1a;人工智能 &#xff08;感谢您的光临&#xff0c;您的光临蓬荜生辉&#xff09; 引言: 前面我们已经讲了结构体的声明&#xff0c;自引用&#xff0c;内存…

排序C++

题目 法1 sort升序排序&#xff0c;再逆序输出 #include<iostream> #include<algorithm> using namespace std;const int N 5e53;//注意const&#xff0c;全局 int a[N]; int main() {//错误int N5e53;//错误const int a[N];int n;cin >> n;for (int i 1;…

【数据结构】新篇章 -- 顺序表

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

【数据结构】顺序表习题之移除元素和合并两个有效数组

&#x1f451;个人主页&#xff1a;啊Q闻 &#x1f387;收录专栏&#xff1a;《数据结构》 &#x1f389;道阻且长&#xff0c;行则将至 前言 嗨呀&#xff0c;今天的博客是关于顺序表的两道题目&#xff0c;是力扣的移除元素和合并有序数组的题目。 一.移除…

EXCEL通过VBA字典快速分类求和

EXCEL通过VBA字典快速分类求和 汇总截图 Option ExplicitOption Explicit Sub answer3() Dim wb As Workbook Dim sht As Worksheet Set wb ThisWorkbook Set sht wb.Worksheets(2) Dim ss1 As Integer Dim ss2 As Integer Dim i As Integer Dim j As Integer j 1Dim aa()…

人工智能:数字化转型中的关键角色

人工智能&#xff1a;数字化转型中的关键角色 数字化转型是十多年来商业变革的核心&#xff0c;它本身也在人工智能的崛起中发生转变。人工智能有望极大地改变数字化转型&#xff0c;从企业设定的目标到从业者用来推进计划的工具。本文将深入探讨人工智能在数字化转型中的扮演的…