0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Stable Diffusion:一种新型的深度学习AIGC模型

GPU视觉识别 来源:GPU视觉识别 作者:GPU视觉识别 2023-04-07 10:27 次阅读

潜在扩散模型 | AIGC|Diffusion Model

图片感知压缩 | GAN |Stable Diffusion

随着生成型AI技术的能力提升,越来越多的注意力放在了通过AI模型提升研发效率上。业内比较火的AI模型有很多,比如画图神器Midjourney、用途多样的Stable Diffusion,以及OpenAI此前刚刚迭代的DALL-E 2。

对于研发团队而言,尽管Midjourney功能强大且不需要本地安装,但它对于硬件性能的要求较高,甚至同一个指令每次得到的结果都不尽相同。相对而言,Stable Diffusion因具备功能多、开源、运行速度快,且能耗低内存占用小成为更理想的选择。

AIGC和ChatGPT4技术的爆燃和狂飙,让文字生成、音频生成、图像生成、视频生成、策略生成、GAMEAI、虚拟人等生成领域得到了极大的提升。不仅可以提高创作质量,还能降低成本,增加效率。同时,对GPU和算力的需求也越来越高,因此GPU服务器厂商开始涌向该赛道,为这一领域提供更好的支持。

本文将重点从Stable Diffusion如何安装、Stable Diffusion工作原理及Diffusion model与GAN相比的优劣势为大家展开详细介绍。

poYBAGQvf2mANN5RAAKygy4tSfw736.png

Stable Diffusion如何安装

Stable Diffusion是一个非常有用的工具,可以帮助用户快速、准确地生成想要的场景及图片。它的安装也非常简单,只需要按照上述步骤进行即可。如果您需要快速生成图片及场景,Stable Diffusion是一个值得尝试的工具。

一、环境准备

1、硬件方面

1)显存

4G起步,4G显存支持生成512*512大小图片,超过这个大小将卡爆失败。这里小编建议使用RTX 3090。

2)硬盘

10G起步,模型基本都在5G以上,有个30G硬盘不为过吧?现在硬盘容量应该不是个问题。

pYYBAGQvf2qASAfyAAJ6OXX-d7s415.png

2、软件方面

1)Git

https://git-scm.com/download/win

下载最新版即可,对版本没有要求。

2)Python

https://www.python.org/downloads/

3)Nvidia CUDA

https://developer.download.nvidia.cn/compute/cuda/11.7.1/local_installers/cuda_11.7.1_516.94_windows.exe

版本11.7.1,搭配Nvidia驱动516.94,可使用最新版。

4)stable-diffusion-webui

https://github.com/AUTOMATIC1111/stable-diffusion-webui

核心部件当然用最新版本~~但注意上面三个的版本的兼容性。

5)中文语言包

https://github.com/VinsonLaro/stable-diffusion-webui-chinese

下载chinese-all-0306.json 和 chinese-english-0306.json文件

6)扩展(可选)

https://github.com/Mikubill/sd-webui-controlnet

下载整个sd-webui-controlnet压缩包

https://huggingface.co/Hetaneko/Controlnet-models/tree/main/controlnet_safetensors

https://huggingface.co/lllyasviel/ControlNet/tree/main/models

https://huggingface.co/TencentARC/T2I-Adapter/tree/main

试用时先下载第一个链接中的control_openpose.safetensors 或 第二个链接中的control_sd15_openpose.pth文件

7)模型

https://huggingface.co/models

https://civitai.com

可以网上去找推荐的一些模型,一般后缀名为ckpt、pt、pth、safetensors ,有时也会附带VAE(.vae.pt)或配置文件(.yaml)。

poYBAGQvf2qAeKpXAAJRKB35jio288.png

二、安装流程

1)安装Git

就正常安装,无问题。

2)安装Python

建议安装在非program files、非C盘目录,以防出现目录权限问题。

注意安装时勾选Add Python to PATH,这样可以在安装时自动加入windows环境变量PATH所需的Python路径。

3)安装Nvidia CUDA

正常安装,无问题。

4)安装stable-diffusion-webui

国内需要用到代理和镜像,请按照下面的步骤操作:

a) 编辑根目录下launch.py文件

将https://github.com替换为https://ghproxy.com/https://github.com,即使用Ghproxy代理,加速国内Git。

b) 执行根目录下webui.bat文件

根目录下将生成tmp和venv目录。

c) 编辑venv目录下pyvenv.cfg文件

将include-system-site-packages = false改为include-system-site-packages = true。

d) 配置python库管理器pip

方便起见,在venvScripts下打开cmd后执行如下命令:

pYYBAGQvf2uAXpMCAAEozLzwfu4571.png

xformer会安装到venvLibsite-packages中,安装失败可以用pip install -U xformers命试试。

e) 安装语言包

将文件chinese-all-0306.json 和 chinese-english-0306.json放到目录localizations目录中。运行webui后进行配置,操作方法见下。

f) 安装扩展(可选)

将sd-webui-controlnet解压缩到extensions目录中。将control_sd15_openpose.pth文件复制到/extensions/sd-webui-controlnet/models目录中。不同的扩展可能还需要安装对应的系统,比如controlnet要正常使用则还需要安装ffmpeg等。

g) 安装模型

下载的各种模型放在modelsStable-diffusion目录中即可。

h) 再次执行根目录下webui.bat文件

用浏览器打开webui.bat所提供的网址即可运行。

poYBAGQvf2uAH8XSAAFcmzzZiKs351.png

其中提供了网址:http://127.0.0.1:7860。

打开该网址后在Settings -> User interface -> Localization (requires restart)设置语言,在菜单中选择chinese-all-0220(前提是已经在目录中放入了对应语言包,见上),点击Apply Settings确定,并且点击Reload UI重启界面后即可。

pYYBAGQvf2yADwZfAAFOVg0-juI116.png

Stable Diffusion背后的原理

Latent Diffusion Models(潜在扩散模型)的整体框架如下图所示。首先需要训练一个自编码模型,这样就可以利用编码器对图片进行压缩,然后在潜在表示空间上进行扩散操作,最后再用解码器恢复到原始像素空间。这种方法被称为感知压缩(Perceptual Compression)。个人认为这种将高维特征压缩到低维,然后在低维空间上进行操作的方法具有普适性,可以很容易地推广到文本、音频、视频等领域。

poYBAGQvf22AVDLaAAOxI5iUflk235.png

在潜在表示空间上进行diffusion操作的主要过程和标准的扩散模型没有太大的区别,所使用的扩散模型的具体实现为time-conditional UNet。但是,论文为扩散操作引入了条件机制(Conditioning Mechanisms),通过cross-attention的方式来实现多模态训练,使得条件图片生成任务也可以实现。

下面我们针对感知压缩、扩散模型、条件机制的具体细节进行展开。

一、图片感知压缩(Perceptual Image Compression)

感知压缩本质上是一个tradeoff。之前的许多扩散模型没有使用这种技术也可以进行,但是原有的非感知压缩的扩散模型存在一个很大的问题,即在像素空间上训练模型时,如果希望生成高分辨率的图像,则训练空间也是高维的。感知压缩通过使用自编码模型,忽略高频信息,只保留重要的基础特征,从而大幅降低训练和采样阶段的计算复杂度,使文图生成等任务能够在消费级GPU上在10秒内生成图片,降低了落地门槛。

感知压缩利用预训练的自编码模型,学习到一个在感知上等同于图像空间的潜在表示空间。这种方法的优势在于,只需要训练一个通用的自编码模型,就可以用于不同的扩散模型的训练,在不同的任务上使用。

因此,基于感知压缩的扩散模型的训练本质上是一个两阶段训练的过程,第一阶段需要训练一个自编码器,第二阶段才需要训练扩散模型本身。在第一阶段训练自编码器时,为了避免潜在表示空间出现高度的异化,作者使用了两种正则化方法,一种是KL-reg,另一种是VQ-reg,因此在官方发布的一阶段预训练模型中,会看到KL和VQ两种实现。在Stable Diffusion中主要采用AutoencoderKL这种实现。

二、潜在扩散模型(Latent Diffusion Models)

首先简要介绍一下普通的扩散模型(DM),扩散模型可以解释为一个时序去噪自编码器(equally weighted sequence of denoising autoencoders)

pYYBAGQvf26AEckrAAAI6RARqN8001.png

,其目标是根据输入

pYYBAGQvf26AEXp8AAABtQWZCfI901.png

去预测一个对应去噪后的变体,或者说预测噪音,其中

poYBAGQvf2-AIBrCAAACwCInpvc903.png

是输入

pYYBAGQvf2-AZZ0AAAAB_ckNkUM772.png

的噪音版本。相应的目标函数可以写成如下形式:

poYBAGQvf3CAJ3m-AAAcRXbSB8M233.png

。其中

pYYBAGQvf3CAAK8pAAABnfa_Tg0176.png

poYBAGQvf3CAFKxXAAAGqN4ft6k460.png

中均匀采样获得。

而在潜在扩散模型中,引入了预训练的感知压缩模型,它包括一个编码器

poYBAGQvf3GAe893AAACMhiUYBk993.png

和一个解码器

pYYBAGQvf3GAdMlzAAACqWl9Yno365.png

。这样就可以利用在训练时就可以利用编码器得到

poYBAGQvf3KAQ-PVAAACS_ObOO8811.png

,从而让模型在潜在表示空间中学习,相应的目标函数可以写成如下形式:

pYYBAGQvf3KAd6E3AAAgmkntseU278.png

三、条件机制

除了无条件图片生成外,我们也可以进行条件图片生成,这主要是通过拓展得到一个条件时序去噪自编码器(conditional denoising autoencoder)

poYBAGQvf3OAbYe9AAAJqWBQ19w014.png

来实现的,这样一来我们就可通过

pYYBAGQvf3OAc0ryAAACVHlS5cU813.png

来控制图片合成的过程。具体来说,论文通过在UNet主干网络上增加cross-attention机制来实现

poYBAGQvf3SAQb5oAAAKG_yPUVE095.png

。为了能够从多个不同的模态预处理

pYYBAGQvf3SAWAShAAACKkvUyaA175.png

,论文引入了一个领域专用编码器(domain specific encoder)

poYBAGQvf3SAIfRCAAACeecR5E0206.png

,它用来将

pYYBAGQvf3WAblvsAAACIRRYCT0537.png

映射为一个中间表示

poYBAGQvf3WAbMidAAAN0yS_4gw498.png

,这样我们就可以很方便的引入各种形态的条件(文本、类别、layout等等)。最终模型就可以通过一个cross-attention层映射将控制信息融入到UNet的中间层,cross-attention层的实现如下:

pYYBAGQvf3aASuFjAABYEOjF1ug790.png

其中

poYBAGQvf3aAKTYKAAAOPjGAYiM812.png

是UNet的一个中间表征。相应的目标函数可以写成如下形式:

pYYBAGQvf3eAfNUVAAAmP23x98E635.png

四、效率与效果的权衡

分析不同下采样因子f∈{1,2,4,8,16,32}(简称LDM-f,其中LDM-1对应基于像素的DMs)的效果。为了获得可比较的测试结果,固定在一个NVIDIA A100上进行了实验,并使用相同数量的步骤和参数训练模型。实验结果表明,LDM-{1,2}这样的小下采样因子训练缓慢,因为它将大部分感知压缩留给扩散模型。而f值过大,则导致在相对较少的训练步骤后保真度停滞不前,原因在于第一阶段压缩过多,导致信息丢失,从而限制了可达到的质量。LDM-{4-16}在效率和感知结果之间取得了较好的平衡。与基于像素的LDM-1相比,LDM-{4-8}实现了更低的FID得分,同时显著提高了样本吞吐量。对于像ImageNet这样的复杂数据集,需要降低压缩率以避免降低质量。总之,LDM-4和-8提供了较高质量的合成结果。

Diffusion model与GAN相比的优劣势

一、优点

Diffusion Model相比于GAN,明显的优点是避免了麻烦的对抗学习。此外,还有几个不太明显的好处:首先,Diffusion Model可以“完美”用latent去表示图片,因为我们可以用一个ODE从latent变到图片,同一个ODE反过来就可以从图片变到latent。而GAN很难找到真实图片对应什么latent,所以可能会不太好修改非GAN生成的图片。其次,Diffusion Model可以用来做“基于色块的编辑”(SDEdit),而GAN没有这样的性质,所以效果会差很多。再次,由于Diffusion Model和score之间的联系,它可以用来做inverse problem solver的learned prior,例如我有一个清晰图片的生成模型,看到一个模糊图片,可以用生成模型作为先验让图片更清晰。最后,Diffusion Model可以求model likelihood,而这个GAN就很难办。Diffusion Model最近的流行一部分也可能是因为GAN卷不太动了。虽然严格意义上说,Diffusion Model最早出自Jascha Sohl-Dickstein在ICML 2015就发表的文章,和GAN的NeurIPS 2014也差不了多少;不过DCGAN/WGAN这种让GAN沃克的工作在2015-17就出了,而Diffusion Model在大家眼中做沃克基本上在NeurIPS 2020,所以最近看上去更火也正常。

二、不足之处

Diffusion model相比于GAN也存在一些缺陷。首先,无法直接修改潜在空间的维度,这意味着无法像StyleGAN中使用AdaIN对图像风格进行操作。其次,由于没有判别器,如果监督条件是“我想要网络输出的东西看起来像某个物体,但我不确定具体是什么”,就会比较困难。而GAN可以轻松地实现这一点,例如生成长颈鹿的图像。此外,由于需要迭代,生成速度比较慢,但在单纯的图像生成方面已经得到了解决。目前在条件图像生成方面的研究还不够充分,但可以尝试将Diffusion model应用于这一领域。

poYBAGQvf3iAI7zHAABVmeksc3c377.jpg

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    87

    文章

    26458

    浏览量

    264072
  • ChatGPT
    +关注

    关注

    27

    文章

    1409

    浏览量

    4750
  • AIGC
    +关注

    关注

    1

    文章

    261

    浏览量

    909
收藏 人收藏

    评论

    相关推荐

    韩国科研团队发布新型AI图像生成模型KOALA,大幅优化硬件需求

    由此模型的核心在于其运用了“知识蒸馏”(knowledge distillation)技术,这使得开源图像生成工具Stable Diffusion XL可大幅缩小其规模。原Stable
    的头像 发表于 03-01 14:10 219次阅读

    一种新的分割模型Stable-SAM

    SAM、HQ-SAM、Stable-SAM在提供次优提示时的性能比较,Stable-SAM明显优于其他算法。这里也推荐工坊推出的新课程《如何将深度学习
    的头像 发表于 12-29 14:35 296次阅读
    <b class='flag-5'>一种</b>新的分割<b class='flag-5'>模型</b><b class='flag-5'>Stable</b>-SAM

    Stable Diffusion的完整指南:核心基础知识、制作AI数字人视频和本地部署要求

    Stable Diffusion一种扩散模型diffusion model)的变体,叫做“潜在扩散
    的头像 发表于 09-18 10:06 1580次阅读
    <b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b>的完整指南:核心基础知识、制作AI数字人视频和本地部署要求

    Stable Diffusion的完整指南:核心基础知识、制作AI数字人视频和本地部署要求

    13400;i3 12100;i7 12700 ;i9 12900  在当今的数字时代,人工智能正在逐步改变人们的生活和工作方式。其中,Stable Diffusion作为一种深度
    的头像 发表于 09-07 14:12 1437次阅读
    <b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b>的完整指南:核心基础知识、制作AI数字人视频和本地部署要求

    在本地跑AIGC,英特尔PC没问题

    不管被动还是主动,大模型AIGC,ChatGPT,Stable Diffusion,MidJourney 等等名词在大家的新闻列表里狂轰滥炸,经历了上半年的惊喜、恐慌、期待和担忧之后
    的头像 发表于 08-22 09:40 443次阅读
    在本地跑<b class='flag-5'>AIGC</b>,英特尔PC没问题

    aigc软件需要什么云算力?

    aigc软件需要什么云算力? AIGC(人工智能大规模图像处理平台)作为一种基于深度学习算法的图像处理平台,需要巨大的云算力作为支撑。本文将
    的头像 发表于 08-21 17:16 508次阅读

    aigc是什么概念?aigc的应用场景

    的一个新的概念和工具,旨在加速机器学习深度学习的发展,提高人工智能在各个领域的应用效率和质量。AIGC可以帮助开发人员在从数据到模型的整个
    的头像 发表于 08-21 17:16 3607次阅读

    树莓派能跑Stable Diffusion了?

    Stable Diffusion一种文本到图像生成的大型深度学习模型,它可以根据文本的描述生成
    的头像 发表于 07-26 11:46 1108次阅读

    使用OpenVINO在Stable Diffusion V2.1上实现AI硬件加速的方法

    随着 AIGC 模型越来越强大,并取得了更惊人的结果,任意运行 AIGC 模型, 比如 Stable D
    的头像 发表于 07-21 11:47 1309次阅读
    使用OpenVINO在<b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b> V2.1上实现AI硬件加速的方法

    美格智能高算力AI模组成功运行Stable Diffusion模型

    研发团队成功在自研高算力模组上运行文生图大模型Stable Diffusion,而这仅仅是我们将思索变为实际行动的第一步,AIGC的大时代,才刚刚开始!
    的头像 发表于 07-21 11:17 609次阅读

    iPhone两秒出图,目前已知的最快移动端Stable Diffusion模型来了

    近日,Snap 研究院推出最新高性能 Stable Diffusion 模型,通过对网络结构、训练流程、损失函数全方位进行优化,在 iPhone 14 Pro 上实现 2 秒出图(512x512
    的头像 发表于 06-12 15:25 545次阅读
    iPhone两秒出图,目前已知的最快移动端<b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b><b class='flag-5'>模型</b>来了

    基于一种移动端高性能 Stable Diffusion 模型

      Stable Diffusion (SD)是当前最热门的文本到图像(text to image)生成扩散模型。尽管其强大的图像生成能力令人震撼,一个明显的不足是需要的计算资源巨大,推理速度很慢
    的头像 发表于 06-12 10:14 430次阅读
    基于<b class='flag-5'>一种</b>移动端高性能 <b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b> <b class='flag-5'>模型</b>

    优化 Stable Diffusion 在 GKE 上的启动体验

    以下文章来源于谷歌云服务,作者 Google Cloud 背景 现如今随着 AIGC 这个话题越来越热,越来越多优秀的开源项目基于文生图的 AI 模型如 MidJourney,Stable
    的头像 发表于 06-03 08:35 579次阅读

    使用OpenVINO™在算力魔方上加速stable diffusion模型

    Stable Diffusion 是 stability.ai 开源的 AI 图像生成模型,实现输入文字,生成图像的功能。Stable Diffus
    的头像 发表于 05-12 09:10 950次阅读
    使用OpenVINO™在算力魔方上加速<b class='flag-5'>stable</b> <b class='flag-5'>diffusion</b><b class='flag-5'>模型</b>

    一文读懂Stable Diffusion教程,搭载高性能PC集群,实现生成式AI应用

    PC Farm、生成式AI和Stable Diffusion模型都是非常有用的工具和技术,可以帮助用户快速构建和管理计算机集群,生成高质量的数据和图像,提高模型的泛化能力和鲁棒性。
    的头像 发表于 05-01 07:47 1893次阅读
    一文读懂<b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b>教程,搭载高性能PC集群,实现生成式AI应用