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…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...

【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...