当前位置: 首页 > news >正文

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

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

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

4aba73476c72ae5ec1a08d0bca1afe03.jpeg

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

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

83053fde8496bb70e4d64b58db939ad1.jpeg

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

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

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

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

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

测试效果:

07e5788e20a4e12a78357324d2f6504c.jpeg


安装:

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。



相关文章:

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

Stability AI宣布推出Stable Diffusion XL 1.0&#xff0c;这是一个文本到图像的模型&#xff0c;该公司将其描述为迄今为止“最先进的”版本。 Stability AI表示&#xff0c;SDXL 1.0能生成更加鲜明准确的色彩&#xff0c;在对比度、光线和阴影方面做了增强&#xff0c;可生成…...

B076-项目实战--宠物上下架 展示 领养 收购订单

目录 上下架功能提供后台宠物列表实现 前台展示前台宠物列表和详情展示店铺展示 领养分析前台后端PetControllerPetServiceImpl 订单需求分析可能产生订单的模块订单模块额外功能 订单设计表设计流程设计 集成基础代码收购订单创建订单前端后端 上下架功能提供 后台宠物列表实…...

【iOS】—— 持久化

文章目录 数据持久化的目的iOS中数据持久化方案数据持久化方式分类内存缓存磁盘缓存 沙盒机制获取应用程序的沙盒路径沙盒目录的获取方式 持久化数据存储方式XML属性列表Preferences偏好设置&#xff08;UserDefaults&#xff09;数据库存储什么是序列化和反序列化&#xff0c;…...

教程 - 在 Vue3+Ts 中引入 CesiumJS 的最佳实践@2023

1. 本篇适用范围与目的 1.1. 适用范围 严格使用 Vue3 TypeScript 的前端项目&#xff0c;包管理器默认使用 pnpm 构建工具使用 Vite4 使用原生 CesiumJS 依赖做应用开发 客户端渲染&#xff0c;因为我不太熟悉 Vue 的服务端渲染&#xff0c;有本篇的介绍后&#xff0c;熟悉…...

最优化方法

一. 图论 1.最小生成树 图的生成树是它的一颗含有其所有顶点的无环连通子图,一 幅加权图的最小生成树(MST)是它的一颗权值(树中的所有边的权值之和) 最小的生成树 • 适用场景&#xff1a;道路规划、通讯网络规划、管道铺设、电线布设等 题目数据 kruskal算法 稀疏图&#x…...

Mongodb 多文档聚合操作处理方法二(Map-reduce 函数)

聚合 聚合操作处理多个文档并返回计算结果。您可以使用聚合操作来&#xff1a; 将多个文档中的值分组在一起。 对分组数据执行操作以返回单个结果。 分析数据随时间的变化。 要执行聚合操作&#xff0c;您可以使用&#xff1a; 聚合管道 单一目的聚合方法 Map-reduce 函…...

ant design vue j-modal 修改高度

问题描述 今天在项目中遇到关于j-modal组件修改弹窗大小问题&#xff0c;我尝试使用直接使用:height"300"&#xff0c;没用效果&#xff0c;弹窗大小依然和没改之前一样&#xff0c;后来找到了这种方式可以去修改j-modal弹窗大小&#xff0c;下面来看下代码实现&…...

spring学习笔记七

一、自动装配 1.1、BookDao接口和实现类 public interface BookDao {void save(); } public class BookDaoImpl implements BookDao {public void save(){System.out.println("book dao save......");} } 1.2、BookService接口和实现类 public interface BookSer…...

hw技战法整理参考

目录 IP溯源反制 账户安全策略及预警 蜜罐部署联动方案...

uniapp 全局数据(globalData)的设置,获取,更改

globalData&#xff0c;这是一种简单的全局变量机制。这套机制在uni-app里也可以使用&#xff0c;并且全端通用 因为uniapp基本上都是将页面&#xff0c;或者页面中相同的部分&#xff0c;进行组件化&#xff0c;所以会存在父&#xff0c;子&#xff0c;&#xff08;子&#xf…...

Profinet转EtherNet/IP网关连接AB PLC的应用案例

西门子S7-1500 PLC&#xff08;profinet&#xff09;与AB PLC以太网通讯&#xff08;EtherNet/IP&#xff09;。本文主要介绍捷米特JM-EIP-PN的Profinet转EtherNet/IP网关&#xff0c;连接西门子S7-1500 PLC与AB PLC 通讯的配置过程&#xff0c;供大家参考。 1, 新建工程&…...

Python组合模式介绍、使用方法

一、Python组合模式介绍 概念&#xff1a; 组合模式(Composite Pattern)是一种结构型设计模式&#xff0c;它通过将对象组合成树状结构来表示“整体/部分”层次结构&#xff0c;让客户端可以以相同的方式处理单个对象和组合对象。 功能&#xff1a; 统一对待组合对象和叶子对…...

生成模型和判别模型工作原理介绍

您解决的大多数机器学习和深度学习问题都是从生成模型和判别模型中概念化的。在机器学习中,人们可以清楚地区分两种建模类型: 将图像分类为狗或猫属于判别性建模生成逼真的狗或猫图像是一个生成建模问题神经网络被采用得越多,生成域和判别域就增长得越多。要理解基于这些模型…...

shardingsphere读写分离配置

注&#xff1a; 如果是升级之前的单库单表&#xff0c;要将之前的 数据库接池 druid-spring-boot-starter 注释掉&#xff0c;换成 druid&#xff0c;否则无法连接数据库。 原因&#xff1a; 因为数据连接池的starter&#xff08;比如druid&#xff09;可能会先加载并且其创…...

登录报错 “msg“:“Request method ‘GET‘ not supported“,“code“:500

1. 登录失败 2. 排查原因, 把 PostMapping请求注释掉, 或改成GetMapping请求就不会报错 3. 找到SecurityConfig.java , 新增 .antMatchers("/**/**").permitAll() //匹配允许所有路径 4. 登录成功...

Python 日期和时间

Python 日期和时间 Python 程序能用很多方式处理日期和时间&#xff0c;转换日期格式是一个常见的功能。 Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。 时间间隔是以秒为单位的浮点小数。 每个时间戳都以自从1970年1月1日午夜&#xff08;历元&…...

pytorch的发展历史,与其他框架的联系

我一直是这样以为的&#xff1a;pytorch的底层实现是c(这一点没有问题&#xff0c;见下边的pytorch结构图),然后这个部分顺理成章的被命名为torch,并提供c接口,我们在python中常用的是带有python接口的&#xff0c;所以被称为pytorch。昨天无意中看到Torch是由lua语言写的&…...

Kibana-elastic--Elastic Stack--ELK Stack

Kibana 是什么&#xff1f; | Elastic 将数据转变为结果、响应和解决方案 使用 Kibana 针对大规模数据快速运行数据分析&#xff0c;以实现可观测性、安全和搜索。对来自任何来源的任何数据进行全面透彻的分析&#xff0c;从威胁情报到搜索分析&#xff0c;从日志到应用程序监测…...

Docker复杂命令便捷操作

启动所有状态为Created的容器 要启动所有状态为"created"的Docker容器&#xff0c;可以使用以下命令&#xff1a; docker container start $(docker container ls -aq --filter "statuscreated")上述命令执行了以下步骤&#xff1a; docker container l…...

Python中的datetime模块

time模块用于取得UNIX纪元时间戳&#xff0c;并加以处理。但是&#xff0c;如果以方便的格式显示日期&#xff0c;或对日期进行算数运算&#xff0c;就应该使用datetime模块。 目录 1. datetime数据类型 1&#xff09; datetime.datetime.now()表示特定时刻 2&#xff09;da…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...