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, 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, # this is a tensor -1...1 chw
"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,这是一个文本到图像的模型,该公司将其描述为迄今为止“最先进的”版本。 Stability AI表示,SDXL 1.0能生成更加鲜明准确的色彩,在对比度、光线和阴影方面做了增强,可生成…...
B076-项目实战--宠物上下架 展示 领养 收购订单
目录 上下架功能提供后台宠物列表实现 前台展示前台宠物列表和详情展示店铺展示 领养分析前台后端PetControllerPetServiceImpl 订单需求分析可能产生订单的模块订单模块额外功能 订单设计表设计流程设计 集成基础代码收购订单创建订单前端后端 上下架功能提供 后台宠物列表实…...
【iOS】—— 持久化
文章目录 数据持久化的目的iOS中数据持久化方案数据持久化方式分类内存缓存磁盘缓存 沙盒机制获取应用程序的沙盒路径沙盒目录的获取方式 持久化数据存储方式XML属性列表Preferences偏好设置(UserDefaults)数据库存储什么是序列化和反序列化,…...
教程 - 在 Vue3+Ts 中引入 CesiumJS 的最佳实践@2023
1. 本篇适用范围与目的 1.1. 适用范围 严格使用 Vue3 TypeScript 的前端项目,包管理器默认使用 pnpm 构建工具使用 Vite4 使用原生 CesiumJS 依赖做应用开发 客户端渲染,因为我不太熟悉 Vue 的服务端渲染,有本篇的介绍后,熟悉…...
最优化方法
一. 图论 1.最小生成树 图的生成树是它的一颗含有其所有顶点的无环连通子图,一 幅加权图的最小生成树(MST)是它的一颗权值(树中的所有边的权值之和) 最小的生成树 • 适用场景:道路规划、通讯网络规划、管道铺设、电线布设等 题目数据 kruskal算法 稀疏图&#x…...
Mongodb 多文档聚合操作处理方法二(Map-reduce 函数)
聚合 聚合操作处理多个文档并返回计算结果。您可以使用聚合操作来: 将多个文档中的值分组在一起。 对分组数据执行操作以返回单个结果。 分析数据随时间的变化。 要执行聚合操作,您可以使用: 聚合管道 单一目的聚合方法 Map-reduce 函…...
ant design vue j-modal 修改高度
问题描述 今天在项目中遇到关于j-modal组件修改弹窗大小问题,我尝试使用直接使用:height"300",没用效果,弹窗大小依然和没改之前一样,后来找到了这种方式可以去修改j-modal弹窗大小,下面来看下代码实现&…...
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,这是一种简单的全局变量机制。这套机制在uni-app里也可以使用,并且全端通用 因为uniapp基本上都是将页面,或者页面中相同的部分,进行组件化,所以会存在父,子,(子…...
Profinet转EtherNet/IP网关连接AB PLC的应用案例
西门子S7-1500 PLC(profinet)与AB PLC以太网通讯(EtherNet/IP)。本文主要介绍捷米特JM-EIP-PN的Profinet转EtherNet/IP网关,连接西门子S7-1500 PLC与AB PLC 通讯的配置过程,供大家参考。 1, 新建工程&…...
Python组合模式介绍、使用方法
一、Python组合模式介绍 概念: 组合模式(Composite Pattern)是一种结构型设计模式,它通过将对象组合成树状结构来表示“整体/部分”层次结构,让客户端可以以相同的方式处理单个对象和组合对象。 功能: 统一对待组合对象和叶子对…...
生成模型和判别模型工作原理介绍
您解决的大多数机器学习和深度学习问题都是从生成模型和判别模型中概念化的。在机器学习中,人们可以清楚地区分两种建模类型: 将图像分类为狗或猫属于判别性建模生成逼真的狗或猫图像是一个生成建模问题神经网络被采用得越多,生成域和判别域就增长得越多。要理解基于这些模型…...
shardingsphere读写分离配置
注: 如果是升级之前的单库单表,要将之前的 数据库接池 druid-spring-boot-starter 注释掉,换成 druid,否则无法连接数据库。 原因: 因为数据连接池的starter(比如druid)可能会先加载并且其创…...
登录报错 “msg“:“Request method ‘GET‘ not supported“,“code“:500
1. 登录失败 2. 排查原因, 把 PostMapping请求注释掉, 或改成GetMapping请求就不会报错 3. 找到SecurityConfig.java , 新增 .antMatchers("/**/**").permitAll() //匹配允许所有路径 4. 登录成功...
Python 日期和时间
Python 日期和时间 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。 Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。 时间间隔是以秒为单位的浮点小数。 每个时间戳都以自从1970年1月1日午夜(历元&…...
pytorch的发展历史,与其他框架的联系
我一直是这样以为的:pytorch的底层实现是c(这一点没有问题,见下边的pytorch结构图),然后这个部分顺理成章的被命名为torch,并提供c接口,我们在python中常用的是带有python接口的,所以被称为pytorch。昨天无意中看到Torch是由lua语言写的&…...
Kibana-elastic--Elastic Stack--ELK Stack
Kibana 是什么? | Elastic 将数据转变为结果、响应和解决方案 使用 Kibana 针对大规模数据快速运行数据分析,以实现可观测性、安全和搜索。对来自任何来源的任何数据进行全面透彻的分析,从威胁情报到搜索分析,从日志到应用程序监测…...
Docker复杂命令便捷操作
启动所有状态为Created的容器 要启动所有状态为"created"的Docker容器,可以使用以下命令: docker container start $(docker container ls -aq --filter "statuscreated")上述命令执行了以下步骤: docker container l…...
Python中的datetime模块
time模块用于取得UNIX纪元时间戳,并加以处理。但是,如果以方便的格式显示日期,或对日期进行算数运算,就应该使用datetime模块。 目录 1. datetime数据类型 1) datetime.datetime.now()表示特定时刻 2)da…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...
