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

news2024/11/25 4:18:09

文章目录

    • xformers
      • bug 记录
    • txt2img
    • diffusers
    • 参考

基础环境承接Stable Diffusion v1, 详情请见我的博文【文生图系列】 Stable Diffusion v1复现教程。然后更新pytorch和torchvision的版本,因为要使用GPU和xformers,需要下载gpu版本的pytorch。再下载open-clip-torch库文件,安装命令如下所示:

conda install pytorch == 1.12.1 torchvision == 0.13.1 torchaudio0.12.1 cudatoolkit=11.3 -c pytorch
pip install open-clip-torch
2.7.0
pip install -e .

在pytorch官网上寻找下载命令,pytorch为1.12.1时,有cuda 10.2, 11.3 和11.6的版本,我选择了cuda为11.3版本,那么对应的cudatoolkit=11.3,pytorch安装命令如上所示。

xformers

xformers能够有效地利用GPU,未安装xformers,我的GPU内存为15多G,会出现CUDA out of memory的错误,利用xformer,运行scripts/txt2img.py时,GPU内存占用最高为13多G。

官方文档中是cuda-11.4,由于我的pytorch的cuda是11.3,按照官方教程安装xformers,会出现xFormers wasn’t build with CUDA support cuda错误。所以将cuda的版本更改为11.3。

export CUDA_HOME=/usr/local/cuda-11.3
conda install -c nvidia/label/cuda-11.3.0 cuda-nvcc
conda install -c conda-forge gcc
conda install -c conda-forge gxx_linux-64==9.5.0

下载并安装xformers,在pip install -e .时,会耗费较长时间。

cd …
git clone https://github.com/facebookresearch/xformers.git
cd xformers
git submodule update --init --recursive
pip install -r requirements.txt
pip install -e .
cd …/stablediffusion

bug 记录

  1. Torch not compiled with CUDA,需要下载带有cuda版本的pytorch
  2. xFormers wasn’t build with CUDA support cuda版本不匹配,就如上述所述,将cuda版本由11.4更改为11.3,然后重新安装xformers

txt2img

下载stable-diffusion-2-1 模型,下载链接如下所示。stable-diffusion-2-1 是在stable-diffusion-2模型上微调得到的。数据未变,设置punsafe=0.1额外训练了55k步,然后调整punsafe=0.98后再额外训练155k步。

v2-1_768-ema-pruned.ckpt下载: https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-ema-pruned.ckpt

sd v2版本和sd v1版本的超参数几乎一样,这里不再赘述,具体见【文生图系列】 Stable Diffusion v1复现教程。sd v2相比于v1支持更高分辨,能生成更高清的图片。

python scripts/txt2img.py --prompt “a professional photograph of an astronaut riding a horse” --ckpt v2-1_768-ema-pruned.ckpt --config configs/stable-diffusion/v2-inference-v.yaml --H 768 --W 768 --device cuda

宇航员骑马的生成图片如下所示,相比于v1,生成的图片更全面,也更有质感。马生成的不错,不够露脸的宇航员有些恐怖。

在这里插入图片描述ps: 原图近乎9M,CSDN最高上传5M的图片,将图片进行了压缩到了3M。

租赁的服务器,明天就要到期了。配置完环境之后,趁着最后的时间极速测试一下。下图是生成的一张白发帅哥,超级帅气,很像贝克汉姆。

python scripts/txt2img.py --prompt “a best-quality photo of an extremely handsome young man with white hair who is muscle” --ckpt v2-1_768-ema-pruned.ckpt --config configs/stable-diffusion/v2-inference-v.yaml --H 768 --W 768 --device cuda

在这里插入图片描述

python scripts/txt2img.py --prompt “a best-quality photo of a classical Chinese Tang Dynasty beauty who is drinking tea” --ckpt v2-1_768-ema-pruned.ckpt --config configs/stable-diffusion/v2-inference-v.yaml --H 768 --W 768 --device cuda

和sd v1相比,相同的提示词,“唐朝美女喝茶的提示词”,sd v2能把品茗这个动作画出来,但是服饰不怎么像唐朝。

在这里插入图片描述
原图近乎9M,CSDN最高上传5M的图片,将图片进行了压缩到了3M。

diffusers

使用diffusers库能够更简单更有效率地运行sd 2。

Cannot initialize model with low cpu memory usage because accelerate was not found in the environment. Defaulting to low_cpu_mem_usage=False. It is strongly recommended to install accelerate for faster and less memory-intense model loading. You can do so with:

pip install accelerate safetensors

import torch
from diffusers import StableDiffusionPipeline, DPMSolverMultistepScheduler

model_id = "stabilityai/stable-diffusion-2-1"

# Use the DPMSolverMultistepScheduler (DPM-Solver++) scheduler here instead
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe.enable_attention_slicing()#如果出现CUDA out of memory.加这行代码
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
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")

"a photo of an astronaut riding a horse on mars"在火星上骑马的生成图片如下所示,宇航员、马和火星三个要素都具备,而且riding这个动词也能够很好地表现出来。同样的prompt,sd v2相比于sd V1版本的生成图像更全面。

在这里插入图片描述

参考

  1. Stability-AI/stablediffusion
  2. stabilityai/stable-diffusion-2-1

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

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

相关文章

学习笔记之微服务(一)

一、了解微服务 1、服务架构演变 **单体架构:**所有业务功能都集中在一个项目中开发,打成一个包部署。 优点:架构简单、部署成本低 缺点:耦合度高 分布式架构:根据业务拆分系统功能,每个业务模块独立项…

微信小程序map 之个性化地图(日出日落主题)

微信小程序map 之个性化地图(日出日落主题) 个性化地图之根据日出日落时间动态变换地图主题个性化前的准备进入腾讯地址服务官网小程序开发html 代码. layer-style 编号为样式名称js代码. 注意的是,layer-style只能定义一次,所以值…

Yarn【常用命令】

1、yarn application 查看Application运行情况 1.1、列出所有Application yarn application -list 可以通过Web UI端来查看: 1.2、根据Application状态过滤: yarn application -list -appStates (所有状态: ALL 、 NEW 、 NEW…

Spring Cloud Alibaba 同时兼容dubbo与openfeign

一、前言 dubbo与springcloud都可以单独作为微服务治理框架在生产中进行使用,但使用过springcloud的同学大概了解到,springcloud生态的相关组件这些年已经逐步停更,这就导致在服务架构演进过程中的迭代断层,以至于一些新的技术组…

聚合/组合

谨慎使用继承的方式来进行扩展,优先使用聚合/组合的方式来实现。 Father类里有两个方法A和方法B,并且A调用了B。子类Son重写了方法B,这时候如果子类调用继承来的方法A,那么方法A调用的就不再是Father.B(),而是子类中的…

使用kali里的dnschef进行DNS欺骗

1. 前言 DNSChef是针对渗透测试人员和恶意软件分析师的高度可配置的DNS代理。它能够精细配置哪些DNS回复以修改或简单地代理真实响应。为了利用该工具,您必须手动配置DNS服务器以指向DNSChef。 2. 执行参数 选项参数: -h,--help显示帮助信息并退出--f…

C语言:计算 1! + 2! + 3! + ... + n!

题目: 从键盘输入一个值n,计算 1的阶乘 至 n的阶乘 的和, 如:输入10,计算 1的阶乘 至 n的阶乘 的和 --> 计算:1! 2! 3! ... 10! 思路一: 效率比较低,会重复计算之前计算过的…

Stable Diffusion 从听说到超神日记

1.安装模型(B站搜秋叶) 2.下载模型,安装好的界面有模型下载 有了上面模型已经可以根据模型风格去生成一些照片了 3.使用Additional Networks/lora模型 模型大多都是继承了很多网友自行训练的图库模型,各类风格都有! …

分享一个卡通人物

这几天较忙&#xff0c;像它一样&#xff1a; 代码在这里&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>卡通打字</title><script src"https://s3-us-west-2.amazonaws…

《MySQL(五):基础篇- 多表查询》

文章目录 5. 多表查询5.1 多表关系5.1.1 一对多5.1.2 多对多5.1.3 一对一 5.2 多表查询概述5.2.1 数据准备5.2.2 概述5.2.3 分类 5.3 内连接5.4 外连接5.5 自连接5.5.1 自连接查询5.5.2 联合查询5.6.2 标量子查询5.6.3 列子查询5.6.5 表子查询 5.7 多表查询案例 5. 多表查询 我…

【Sql】根据字段分组排序,取其第一条数据

【Sql】根据字段分组排序&#xff0c;取组内第一条数据 【一】问题描述【二】解决方案&#xff08;oracle和mysql都可用&#xff09;【三】总结 【一】问题描述 &#xff08;1&#xff09;问题描述 有时候我们需要对数据进行去重处理&#xff0c;例如查询结果里的文件名有重复…

常用模拟低通滤波器的设计——契比雪夫I型滤波器

目录 常用模拟低通滤波器的设计——契比雪夫I型滤波器 1、cheb1ap 函数 2、cheb1ord 函数 3、cheby1函数 4、实例演示 常用模拟低通滤波器的设计——契比雪夫I型滤波器 巴特沃斯滤波器的频率特性曲线在通带和阻带内&#xff0c;幅度特性是单调下降的&#xff0c;如果阶次一…

RISC-V体系结构的U-Boot引导过程

RISC-V体系结构的U-Boot引导过程 flyfish BootLoader Boot是Bootstrap&#xff08;鞋带&#xff09;的缩写&#xff0c;它来自于一句谚语&#xff1a;“Pull oneself up by one’s own bootstraps”&#xff0c;直译的意思是“拽着鞋带把自己拉起来” 干这件事&#xff0c;得…

文心一言 VS 讯飞星火 VS chatgpt (33)-- 算法导论5.2 5题

五、设A[1…n]是由n个不同数构成的数列。如果i<j且A[i]>A[j]&#xff0c;则称(i&#xff0c;j)对为A的一个逆序对(inversion)。(参看思考题2-4 中更多关于逆序对的例子。)假设A的元素构成(1&#xff0c;2&#xff0c;… &#xff0c;n)上的一个均匀随机排列。请用指示器随…

Win11配置Anaconda-Cuda-Pytorch-Tenserflow环境

之前搞了一个月左右时间用WSL2跑模型&#xff0c;后来发现还是不太习惯&#xff08;其实用不明白&#xff09;&#xff0c;就转成Windows了。这次也是记录一下自己配环境的过程&#xff0c;以免下次还需要 安装Anaconda 下载方式 Anaconda官网清华镜像下载 tip&#xff1a;…

OpenHarmony源码解析(11): hiview维测平台

作者: 鸿湖万联(武汉) 许文龙 1、概述 Hiview是一个跨平台的终端设备维测服务集,由插件管理平台和基于平台上运行的服务插件来构成整套系统。Hiview维测服务是由HiSysEvent事件驱动的,其核心为分布在系统各处的HiSysEvent桩点,格式化的事件会通过HiSysEvent打点API上报至H…

Tomcat【尚硅谷】

一、Tomcat基础 1、常见的web服务器 概念 服务器&#xff1a;安装了服务器软件的计算机服务器软件&#xff1a;接收用户的请求&#xff0c;处理请求&#xff0c;做出响应web服务器软件&#xff1a;在web服务器软件中&#xff0c;可以部署web项目&#xff0c;让浏览器来访问这…

【模块系列】DHT11时序理论

前言 基于stm32f103C6T6核心板STM32CubeMX的DHT11的使用。其实吧&#xff0c;要不是网上关于stm32调用DHT11的代码大多数用不了或者乱七八糟的&#xff0c;我也不想推时序的&#xff0c;嘎嘎麻烦。写着写着就发现&#xff0c;本章的篇幅有点长了&#xff0c;所以本文就先介绍DH…

Fiddler抓包返回的Response中总是出现“Response body is encoded. Click to decode. “的解决办法

在进行网页开发和接口调试时&#xff0c;我们经常会用到Fiddler这个工具。 但是&#xff0c;有时候我们会遇到一个非常头疼的问题&#xff0c;就是在抓取网页返回的Response时总是出现“Response body is encoded. Click to decode.”的提示。 这种情况下我们可能无法正常查看…

【Web服务应用】Nginx七层反向代理与四层反向代理

Nginx七层反向代理与四层反向代理 一、代理1.1什么是代理1.2正向代理1.3反向代理1.4反向代理的适用场景1.5正向代理与反向代理的区别 二、反向代理2.1负载均衡2.2动静分离 三、Nginx实战3.1七层反向代理&#xff0c;负载均衡&#xff0c;动静分离3.2四层反向代理 一、代理 1.1…