【文生图系列】 Stable Diffusion v1复现教程

文章目录

    • Stable Diffusion v1
      • 环境配置
      • 权重下载
      • txt2img
        • bug
        • 超参数
      • Diffusers
    • 参考

Stable Diffusion v1

stable diffusion是一个潜在的文本到图像的扩散模型,能够在给定任何文本输入的情况下生成照片逼真的图像。

环境配置

https://github.com/CompVis/stable-diffusion.git ( Stable Diffusion v1)
conda env create -f environment.yaml 使用conda创建一个名字为ldm的虚拟环境
conda activate ldm

权重下载

在README.md中,点击权重下载链接时,出现的huggingface页面,有Dataset card、Files and versions和Community,但是找不到ckpt文件。这个时候需要在红色的框中输出"stable-diffusion-v1",转到runwayml/stable-diffusion-v1-5界面。
在这里插入图片描述

v1-5用v1-2的权重进行初始化,随后在"laion-aesthetics v2 5+"上以分辨率 512 × 512 512 \times 512 512×512微调了595k步,将文本条件降低了10%,以提高classifier-free guidance sampling。v1-5提供了两个ckpt,v1-5-pruned-emaonly.ckpt,4.27G,使用较少的VRAM,适用于推理。v1-5-pruned.ckpt较重,7.7G,使用更多的VRAM,适合微调。

v1-5-pruned-emaonly.ckpt下载链接: https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt
v1-5-pruned.ckpt下载链接:https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.ckpt

在这里插入图片描述

txt2img

mkdir -p models/ldm/stable-diffusion-v1/
将下载好的v1-5-pruned-emaonly.ckpt模型放到models/ldm/stable-diffusion-v1/文件夹下,并更名为model.ckpt,不然会报找不到model的错误,软链接不行。也可以定义txt2img的ckpt超参数,设定模型的位置。
python scripts/txt2img.py --prompt “a photograph of an astronaut riding a horse” --plms

在这里插入图片描述

bug

在这里插入图片描述

运行txt2img.py时,报上述ImportError错误,受issues_627启发,可能diffusers和transformers的版本太高了,所以降低diffusers和transformers的版本。在environment.yaml中更改diffusers和transformers的版本号,更新conda env update -f environment.yaml,bug消除,正常运行。

diffusers: 0.16.1 —> 0.15.0
transformers: 4.19.2 —>4.28.1

python scripts/txt2img.py --prompt “a photograph of an astronaut riding a horse” --plms
依据提示词"a photograph of an astronaut riding a horse",生成如下六张图片。六张图片中有两张图片宇航员没有骑马,其他四张图片,完成度还不错。
在这里插入图片描述

超参数

txt2img的超参数解释如下所示。在推理时,可以通过设定相应的参数得到符合要求的图片。

参数用途
prompt提示词
outdir结果保存文件夹,默认是outputs/txt2img-samples
skip_grid不保存网格,只保存单个样本。在评估大量样本时很有用
skip_save不保存单个样本,用于速度测量
ddim_stepsddim 采样步骤数
plms使用plms采样
laion400m使用LAION400M模型
fixed_code如果启用,样本见使用相同的起始代码
ddim_etaddim eta,默认为0.0,eta=0.0对应于确定性采样
H像素空间上的图像高度,默认是512
W像素空间上的图像宽度,默认是512
C隐藏通道数,默认是4
f下采样因子,默认是8
n_samples每个给定提示输出的样本数量,又称批次,默认是3
n_rows网格中的行,默认是n_samples
scale无条件制导标度,默认是7.5,eps = eps(x, empty) + scale * (eps(x, cond) - eps(x, empty))
from-file从文件中导入提示词
config模型的config文件,默认是"configs/stable-diffusion/v1-inference.yaml"
ckpt模型checkpoint的位置,默认是"models/ldm/stable-diffusion-v1/model.ckpt"
seed用于重复取样的种子,默认是42
precision以精度进行评估,有"full"和"autocast"两种选择,默认是"autocast"

当以下面命令行python scripts/txt2img.py --prompt "A classical Chinese Tang Dynasty beauty is drinking tea" --plms --skip_grid运行时,并没有生成上面和宇航员一样的网格图,有四张图片并保存下来。下面是其中生成的最好的照片。典型的唐朝仕女,有茶,但是在喝茶的动作并没有表现出来。
在这里插入图片描述

Diffusers

from diffusers import StableDiffusionPipeline
import torchmodel_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]  image.save("astronaut_rides_horse.png")

下述是上述代码的运行结果展示。
在这里插入图片描述
在这里插入图片描述

生成结果如下,只生成一个宇航员在火星上,提示词中的horse并没有出现。

在这里插入图片描述

参考

  1. CompVis/stable-diffusion
  2. runwayml/stable-diffusion-v1-5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/351889.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

excel相同内容单元格数值等于固定值怎么做?

如下表,让该表格所有“苹果”内容的单价都等于D3的20元,怎么批量操作? 可以使用Excel的条件格式功能来实现该需求,具体步骤如下: 1. 选中表格中所有的“苹果”单元格,可以使用鼠标拖动或者按住Ctrl键单击选…

奇门遁甲

奇门遁甲应用 一:奇门总要 奇门是中国古代的一种兵学,分为高层应用和中低层应用,高层应用主要用在战争,低层主要是民用预测、风水选择等等。当然这是和当时所处时代是分不开的,奇门在预测方面属于阴性预测学的一种。奇…

程序猿的创业故事:一个游走于计算机编程、高中数学、高中物理、爱好木工的全栈工程师,转行做高中教学的亲生经历!

这个故事有点长 上帝视觉:“转行穷三年,不转穷一生!” 我的视觉:“我命由我不由天!这个哲理仅仅是正态分布下的一个理论,我是不会服从正态分布的。” 问题1:转不转,为什么转&#…

【Linux初阶】基础IO - 简易 shell添加重定向功能

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux初阶】 ✒️✒️本篇内容:shell重定向功能的代码实现 🚢🚢作者简介:计算机海洋的新进船长一枚&#…

惊人的磁场定律:你是谁,就会遇见谁

作者:洞见ADC 生命里的磁场无法被看见,但它却在改变我们的人生。 点我 物理学上存在万有引力定律,即自然界任何两个物体,都是存在相互吸引的。 人与人之间,也不例外。 朗达拜恩在《力量》中写道: “每个人身…

基于RPC协议的接口自动化测试可以用Python语言实现

基于RPC协议的接口自动化测试可以用Python语言实现。下面是实现步骤: 1、安装依赖库,如protobuf、grpc。 2、编写.proto文件定义接口参数和返回值。 3、使用protoc编译.proto文件生成Python代码。 4、编写客户端代码调用远程接口进行测试。 具体实现…

【软件测试】cookie、session和token的区别

今天就来说说session、cookie、token这三者之间的关系!最近这仨玩意搞得头有点大 为什么会有它们三个 我们都知道 HTTP 协议是无状态的,所谓的无状态就是客户端每次想要与服务端通信,都必须重新与服务端链接,意味着请求一次客户…

阿宝的成长记录

宝宝需要减肥了,翻身有点困难!

阿宝的生日礼物

阿宝的生日蛋糕很好吃,很难的事情,在任何时候,都会有自己的判断和想法。

图片主色调提取

本文主要阐述用传统图像处理的手段来解决RGB图的颜色量化问题; 简单解释下颜色量化,一张RGB图,图上每个像素点分别有R、G、B三个分量,每个分量由一个字节表示,那么颜色空间大小是256^3。显然人眼观测的时候&#xff0…

如何获得完美的调色板?完美的配色素材专辑拿走!

第1步--原色和系统色 从一个主色开始,根据喜好、研究颜色含义来确定。 选择的主色是品牌色。 一旦有了主色,就需要文字、背景、容器等的颜色。 通常情况下,会选择一个深色的颜色,用于文本,而背景则是浅灰色的颜色。…

Seaborn的调色板(palette)

Seaborn的调色板(palette) Seaborn可以很容易地使用适合数据特征和可视化目标的颜色。本章讨论了指导您选择的一般原则和帮助您快速找到给定应用程序的最佳解决方案的seaborn工具。 由于我们眼睛的工作方式,一种特定的颜色可以用三个成分来定…

图片色调识别

图片色调识别 色调定义色调提取方法中位切分法RGB与色调 色调定义 (1) 暖色调温暖与热烈是暖色的基调。当人们见到红、橙、黄、红紫等暖色调后,比较容易联想到太阳、火焰、热血等事物,会有温暖、欢乐、刺激等感觉。按照给人温暖感觉的强度有高到低排序:…

Haishoku识别图片主色调和配色方案

对于图片分析,一直觉得很高大上,从来不动这方面。今天翻看python weekly,发现一个很有趣的库-Haishoku。 简介 haishoku 是一个日语词, 意思是配色. Haishoku 是一个用来获取图片主色调和主要配色方案的python库,依赖于python3和…

半色调技术

这个主要是为了对付作业,对各处找到的资料缝缝补补的整合,因为比较杂乱,已经忘记是在哪儿看到大佬们的文章了,整理一下思路。 背景 半色调图像如常见的印刷品图像,其由浅到深或由淡到浓的变化,是靠网点面…

DaVinci:调色版本

调色版本 Grade Version记录着片段的全部调色信息。 将一种调色风格或效果,保存为一个调色版本,从而可在多个调色版本之间查看、比较、挑选或者渲染输出。 调色版本类型 本地版本 Local Versions 在没有创建新的调色版本之前,片段的调色信息默…

seaborn库调色板color设置【知识整理】

seaborn库的使用(color设置) 综述代码模块调色板分类色板(离散)颜色的亮度及饱和度颜色对比xkcd选取颜色连续色板(连续)cubehelix_palette调色板RGB值选取颜色 小结 综述 学生党整理一些关于数据分析的知识…

转载之色调映射

一、概述 虽然HDR 图像有较大的动态范围,能更细致地反映真实场景,但他的缺点也很明显。一是同尺寸的数据比低动态范围图像大,需要更大的存储空间与传输带宽。二是难以输出,目前大多数显示器、打印机等图形输出设备的动态范围要比普…

Windows OpenGL 图像色调

目录 一.OpenGL 图像色调调节 1.原始图片2.效果演示 二.OpenGL 图像色调调节源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL…