当前位置:AIGC资讯 > AIGC > 正文

Stability AI推出Stable Diffusion XL 1.0,文本到图像模型

Stability AI宣布推出Stable Diffusion XL 1.0,这是一个文本到图像的模型,该公司将其描述为迄今为止“最先进的”版本。

Stability AI表示,SDXL 1.0能生成更加鲜明准确的色彩,在对比度、光线和阴影方面做了增强,可生成100万像素的图像(1024×1024)。而且还支持在网页上直接对生成图像进行后期编辑。

提示词也能比之前更简单了。这是因为SDXL 1.0的基础模型参数量达到了35亿,理解能力更强。对比基础版Stable Diffusion,参数量只有10亿左右。由此,SDXL 1.0也成为当前最大规模的开放图像模型之一。

Stability AI博客介绍了SDXL 1.0的更多技术细节。首先,模型在规模和架构上都有了新突破。它创新性地使用了一个基础模型(base model)+一个细化模型(refiner model),二者的参数规模分别为35亿和66亿。

这也使得SDXL 1.0成为目前规模最大的开放图像模型之一。

Stability AI创始人莫斯塔克(Emad Mostaque)表示,更大规模的参数量能让模型理解更多概念,教会它更深层次的东西。同时在SDXL 0.9版本还进行了RLHF强化。

这也是为什么现在SDXL 1.0支持短提示词,而且能分清红场(the Red Square)和一个红色的广场(a Red Square)。

在具体合成过程中,第一步,基础模型产生有噪声的latent,然后由细化模型进行去噪。

其中基础模型也可以作为独立模块使用。这两种模型结合能生成质量更好的图像,且不需要消耗更多计算资源。

测试效果:


安装:

1.克隆回购

git clone git@github.com:Stability-AI/generative-models.git

cd generative-models

2.设置虚拟环境

这是假设您已经导航到generative-models克隆后的根。

注意:这是在下测试的python3.8和python3.10。对于其他python版本,您可能会遇到版本冲突。

PyTorch 1.13

# install required packages from pypi

python3 -m venv .pt13source .pt13/bin/activate

pip3 install -r requirements/pt13.txt

PyTorch 2.0

# install required packages from pypi

python3 -m venv .pt2source .pt2/bin/activate

pip3 install -r requirements/pt2.txt

3.安装sgm

pip3 install .

4.安装sdata用于培训

pip3 install -e git+https://github.com/Stability-AI/datapipelines.git@main#egg=sdata

包装

该存储库使用符合PEP 517的打包方式舱口.

要构建可分配的轮子,请安装hatch然后跑hatch build(指定-t wheel将跳过构建sdist,这是不必要的)。

pip install hatch

hatch build -t wheel

您将在中找到构建的包dist/。您可以用以下工具安装车轮pip install dist/*.whl.

请注意,该包不当前指定的依赖项;根据您的用例以及PyTorch版本,您需要手动安装所需的包。

推理

我们提供一个细流文本到图像和图像到图像采样演示scripts/demo/sampling.py。我们提供完整文件的文件哈希,以及文件中仅保存的张量的文件哈希(参见型号规格让脚本来评估这一点)。目前支持以下型号:

· SDXL-base-1.0

File Hash (sha256): 31e35c80fc4829d14f90153f4c74cd59c90b779f6afe05a74cd6120b893f7e5b

Tensordata Hash (sha256): 0xd7a9105a900fd52748f20725fe52fe52b507fd36bee4fc107b1550a26e6ee1d7

· SDXL-精炼机-1.0

File Hash (sha256): 7440042bbdc8a24813002c09b6b69b64dc90fded4472613437b7f55f9b7d9c5f

Tensordata Hash (sha256): 0x1a77d21bebc4b4de78c474a90cb74dc0d2217caf4061971dbfa75ad406b75d81

· SDXL-base-0.9

· SDXL-精炼机-0.9

· SD-2.1-512

· SD-2.1-768

SDXL的重量:

SDXL-1.0:SDXL-1.0的重量可用(根据CreativeML Open RAIL++-M许可证)这里:

· 基本型号:https://hugging face . co/stability ai/stable-diffusion-XL-base-1.0/

· 精炼机型号:https://hugging face . co/stability ai/stable-diffusion-XL-refiner-1.0/

SDXL-0.9:SDXL-0.9的重量可用,并受a研究许可证。如果您想访问这些模型进行研究,请使用以下链接之一进行申请:SDXL-base-0.9型号,以及SDXL-精炼机-0.9。这意味着你可以申请这两个链接中的任何一个,如果你被批准,你就可以访问这两个链接。请使用您的组织电子邮件登录到您的拥抱脸帐户以请求访问。

获得重量后,将它们放入checkpoints/。接下来,使用

streamlit run scripts/demo/sampling.py --server.port <your_port>

不可见水印检测

用我们的代码生成的图像使用不可见水印库将不可见的水印嵌入到模型输出中。我们还提供了一个脚本来轻松检测水印。请注意,此水印与之前的稳定扩散1.x/2.x版本不同。

要运行该脚本,您需要有一个如上所述的工作安装或尝试一个实验的仅使用最少量的包导入:

python -m venv .detectsource .detect/bin/activate


pip install "numpy>=1.17" "PyWavelets>=1.1.1" "opencv-python>=4.1.0.25"

pip install --no-deps invisible-watermark

要运行该脚本,您需要有一个如上所述的工作安装。该脚本可以通过以下方式使用(不要忘记提前激活您的虚拟环境,例如source .pt1/bin/activate):

# test a single file

python scripts/demo/detect.py <your filename here># test multiple files at once

python scripts/demo/detect.py <filename 1> <filename 2> ... <filename n># test all files in a specific folder

python scripts/demo/detect.py <your folder name here>/*

培训:

我们在中提供了示例培训配置configs/example_training。要启动培训,请运行

python main.py --base configs/<config1.yaml> configs/<config2.yaml>

其中配置从左到右合并(后面的配置会覆盖相同的值)。这可用于组合模型、训练和数据配置。然而,所有这些也可以在单个配置中定义。例如,要在MNIST上运行基于类条件像素的扩散模型训练,请运行

python main.py --base configs/example_training/toy/mnist_cond.yaml

注1:使用非玩具数据集配置configs/example_training/imagenet-f8_cond.yaml,&nbsp;configs/example_training/txt2img-clipl.yaml和configs/example_training/txt2img-clipl-legacy-ucg-training.yaml对于训练,将需要根据所使用的数据集进行编辑(数据集预计存储在web dataset-格式).要查找需要修改的部分,请搜索包含以下内容的注释USER:在各自的配置中。

注2:该存储库支持这两者pytorch1.13和pytorch2用于训练生成模型。但是,对于自动编码器培训,例如configs/example_training/autoencoder/kl-f4/imagenet-attnfree-logvar.yaml,仅pytorch1.13受支持。

注3:训练潜在的生成模型(例如configs/example_training/imagenet-f8_cond.yaml)需要从检索检查点拥抱脸并替换了CKPT_PATH占位符在这条线。对于所提供的文本到图像的配置,也要做同样的事情。

建立新的扩散模型

调节器

这GeneralConditioner是通过conditioner_config。它唯一的属性是emb_models不同嵌入器的列表(都继承自AbstractEmbModel)用于调节生成模型。所有嵌入器应该定义它们是否是可训练的(is_trainable,默认False),使用无分类器的引导丢失率(ucg_rate,默认0),以及输入键(input_key),比如,txt用于文本调节或cls为了阶级调节。当计算条件时,嵌入器将获得batch[input_key]作为输入。我们目前支持二维到四维条件,并且不同嵌入器的条件被适当地连接起来。请注意,嵌入程序在conditioner_config很重要。

网络

神经网络是通过network_config。这曾被称为unet_config,这还不够普遍,因为我们计划用基于变压器的扩散主干进行实验。

失败

损耗通过以下方式配置loss_config。对于标准扩散模型训练,您必须设置sigma_sampler_config.

采样器配置

如上所述,采样器独立于模型。在……里sampler_config,我们设置数值解算器的类型、步骤的数量、离散化的类型,以及例如用于无分类器引导的引导包装器。

数据集处理

对于大规模培训,我们建议使用我们的数据管道数据管道项目。该项目包含在需求中,并在遵循安装部分。小型地图样式数据集应在存储库中定义(例如,MNIST、CIFAR-10、...),并返回数据键/值的字典,例如,

example = {"jpg": x, &nbsp;# this is a tensor -1...1 chw

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"txt": "a beautiful image"}

我们期望图像在-1...1,渠道优先的格式。


官方介绍SDXL 1.0可以运行在8GB VRAM的消费级GPU上,或者是云端。除此之外,SDXL 1.0在微调也有了提升,可以生成自定义LoRAs或者checkpoints。

Stability AI团队现在也正在构建新一代可用于特定任务的结构、风格和组合控件,其中T2I/ControlNet专门用于SDXL。



更新时间 2023-12-11