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

Stable Diffusion 1 - 初始跑通 文字生成图片

文章目录

    • 关于 Stable Diffusion
      • Lexica
    • 代码实现
      • 安装依赖库
      • 登陆 huggingface
        • 查看 huggingface token
      • 下载模型
      • 计算生成
        • 设置宽高
        • 测试迭代次数
        • 生成多列图片


关于 Stable Diffusion

A latent text-to-image diffusion model

Stable Diffusion 是一个文本到图像的潜在扩散模型,由CompVis、Stability AI和LAION的研究人员和工程师创建。
它使用来自LAION-5B数据库子集的512x512图像进行训练。使用这个模型,可以生成包括人脸在内的任何图像,因为有开源的预训练模型,所以我们也可以在自己的机器上运行它。


  • github : https://github.com/CompVis/stable-diffusion
  • stability.ai 公司主页:https://stability.ai
  • 官方创作平台:http://dreamstudio.ai/ 付费/可试用
    https://beta.dreamstudio.ai
  • hugginface : https://huggingface.co/CompVis/stable-diffusion

教程资源

  • 数据派THU : Stable Diffusion的入门介绍和使用教程
    https://mp.weixin.qq.com/s/Y3XsytE4_ewCc6yVp6G43A
  • 35张图,直观理解Stable Diffusion
    https://mp.weixin.qq.com/s/9ngMKHLYKjMASUYeashDJw
  • 当下最强的 AI art 生成模型 Stable Diffusion 最全面介绍
    https://mp.weixin.qq.com/s/Q4ZYjUxt22Jsx2W2179C8Q

Lexica

  • Lexica: The Stable Diffusion search engine
    https://lexica.art

在这里插入图片描述


代码实现

这里我使用 colab 运行,colab 使用操作可参考:
https://blog.csdn.net/lovechris00/article/details/123960622


Stable Diffusion 操作方法可详见:
https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/stable_diffusion.ipynb#scrollTo=AAVZStIokTVv


安装依赖库

!pip install "ipywidgets>=7,<8"
!pip install diffusers==0.12.1 
!pip install  transformers scipy ftfy
!pip install accelerate
!pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113 

如果 diffusers 版本较低(如,小于等于 0.4.0),后面可能会报如下错误:

getattr(): attribute name must be string


查看信息

import diffusers
print(diffusers.__version__)!nvidia-smi

from google.colab import output
output.enable_custom_widget_manager()  

登陆 huggingface

from huggingface_hub import notebook_login
notebook_login()

在这里插入图片描述


查看 huggingface token

settings --> tokens
https://huggingface.co/settings/tokens
你的huggingface 如果还没有激活邮箱,需要激活后操作。在这里插入图片描述


登陆成功后,会返回下述结果:

Token is valid.
Your token has been saved in your configured git credential helpers (store).
Your token has been saved to /root/.cache/huggingface/token
Login successful

下载模型

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", revision="fp16", torch_dtype=torch.float16, use_auth_token=True)   

pip 内容如下:

StableDiffusionPipeline {"_class_name": "StableDiffusionPipeline","_diffusers_version": "0.12.1","feature_extractor": ["transformers","CLIPFeatureExtractor"],"requires_safety_checker": true,"safety_checker": ["stable_diffusion","StableDiffusionSafetyChecker"],"scheduler": ["diffusers","PNDMScheduler"],"text_encoder": ["transformers","CLIPTextModel"],"tokenizer": ["transformers","CLIPTokenizer"],"unet": ["diffusers","UNet2DConditionModel"],"vae": ["diffusers","AutoencoderKL"]
}

计算生成

from torch import autocast # 移动到 cuda 
pipe = pipe.to('cuda')prompt = "a photo of an astronut riding a horse"
with autocast("cuda"):ret = pipe(prompt)

ret 的内容是:

StableDiffusionPipelineOutput(images=[<PIL.Image.Image image mode=RGB size=512x512 at 0x7F99A7332310>], nsfw_content_detected=[False])

有的demo会使用 sample 键,我这里没有,所以如果调用 sample 会报错


查看图片文件

ret.images[0]

在这里插入图片描述


设置宽高

宽高必须被 8 整除

# `height` and `width` have to be divisible by 8 but are 300 and 200.
with autocast("cuda"):ret = pipe(prompt, width=400, height=640)ret.images[0]

在这里插入图片描述


测试迭代次数

设置随机种子

 # 先快速生成低质量图片看效果,然后调高画质
generator = torch.Generator("cuda").manual_seed(1024)with autocast("cuda"):ret = pipe(prompt, generator=generator)ret.images[0]

在这里插入图片描述


# 调整迭代次数
with autocast("cuda"):ret = pipe(prompt, generator=generator, num_inference_steps=15)ret.images[0]

在这里插入图片描述


生成多列图片

from PIL import Imagedef image_grid(imgs, rows, cols):assert len(imgs) == rows * colsw, h = imgs[0].sizegrid = Image.new("RGB", size=(cols*w, rows*h) )grid_w, grid_h = grid.sizefor i, img in enumerate(imgs):grid.paste(img, box=(i%cols * w, i // cols * h) )return grid  

num_imgs = 3
prompts = [prompt] * num_imgswith autocast("cuda"):ret = pipe(prompts, generator=generator, num_inference_steps=15)

ret 内容如下,包含三张图片

StableDiffusionPipelineOutput(images=[<PIL.Image.Image image mode=RGB size=512x512 at 0x7F99A7150820>, <PIL.Image.Image image mode=RGB size=512x512 at 0x7F99A7103280>, <PIL.Image.Image image mode=RGB size=512x512 at 0x7F99A7103520>], nsfw_content_detected=[False, False, False])

显示图片

grid = image_grid(ret.images, rows=1, cols=3)

在这里插入图片描述


2023-02-15(情人节快乐)

相关文章:

Stable Diffusion 1 - 初始跑通 文字生成图片

文章目录关于 Stable DiffusionLexica代码实现安装依赖库登陆 huggingface查看 huggingface token下载模型计算生成设置宽高测试迭代次数生成多列图片关于 Stable Diffusion A latent text-to-image diffusion model Stable Diffusion 是一个文本到图像的潜在扩散模型&#xff…...

【cuda入门系列】通过代码真实打印线程ID

【cuda入门系列】通过代码真实打印线程ID1.gridDim(6,1),blockDim(4,1)2.gridDim(3,2),blockDim(2,2)【cuda入门系列之参加CUDA线上训练营】在Jetson nano本地跑 hello cuda&#xff01; 【cuda入门系列之参加CUDA线上训练营】一文认识cuda基本概念 【cuda入门系列之参加CUDA线…...

【Python语言基础】——Python NumPy 数据类型

Python语言基础——Python NumPy 数据类型 文章目录 Python语言基础——Python NumPy 数据类型一、Python NumPy 数据类型一、Python NumPy 数据类型 Python 中的数据类型 默认情况下,Python 拥有以下数据类型: strings - 用于表示文本数据,文本用引号引起来。例如 “ABCD”…...

数据工程师需要具备哪些技能?

成为数据工程师需要具备哪些技能&#xff1f;数据工程工作存在于各个行业&#xff0c;在银行业、医疗保健业、大型科技企业、初创企业和其他行业找到工作机会。许多职位描述要求数据工程师、拥有数学或工程学位&#xff0c;但如果有合适的经验学位往往没那么重要。 大数据开发…...

Cosmos 基础 -- Ignite CLI(二)Module basics: Blog

一、快速入门 Ignite CLI version: v0.26.1 在本教程中&#xff0c;我们将使用一个模块创建一个区块链&#xff0c;该模块允许我们从区块链中写入和读取数据。这个模块将实现创建和阅读博客文章的功能&#xff0c;类似于博客应用程序。最终用户将能够提交新的博客文章&#x…...

Quartz 快速入门案例,看这一篇就够了

前言 Quartz 是基于 Java 实现的任务调度框架&#xff0c;对任务的创建、修改、删除、触发以及监控这些操作直接提供了 api&#xff0c;这意味着开发人员拥有最大的操作权&#xff0c;也带来了更高的灵活性。 什么是任务调度&#xff1f; 任务调度指在将来某个特定的时间、固…...

图解LeetCode——1233. 删除子文件夹(难道:中等)

一、题目 你是一位系统管理员&#xff0c;手里有一份文件夹列表 folder&#xff0c;你的任务是要删除该列表中的所有 子文件夹&#xff0c;并以 任意顺序 返回剩下的文件夹。 如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下&#xff0c;那么 folder[i] 就是 folder[j] …...

Doris--简单使用

一、数据表的创建与数据导入 1.1、创建表 1.1.1、单分区 CREATE TABLE table1 (siteid INT DEFAULT 10,citycode SMALLINT,username VARCHAR(32) DEFAULT ,pv BIGINT SUM DEFAULT 0 -- 聚合模型&#xff0c; value column 使用sum聚合 ) AGGREGATE KEY(siteid, citycode, …...

使用GPT让你的RStudio如虎添翼

API的的调用目前来说不限制地区&#xff0c;但是OpenAI的API的申请限制了地区。运行的时候&#xff0c;如果出现了429&#xff0c;意味着你被限流了&#xff0c;需要等一会才行。 前提是&#xff0c;你需要注册一个OpenAI的账户&#xff0c;然后在https://openai.com/api/ 里申…...

Python 算法交易实验45 再探量化

说明 去年大部分精力都在构建底层架构和工具了,一直都没有时间搞量化。目前底层的数据库服务(ADB)和清洗(衍生 AETL) 工具已经好了,我想尽快的把量化启动起来。 内容 1 思想 作为交易来说,只有买卖。通过数据分析与模型,我们获得的增强点是决策。在合适的时候进行买卖的…...

Dubbo加载配置文件方式,加载流程,加载配置文件源码解析

配置方法 API配置 以Java编码的方式组织配置&#xff0c;Dubbo3配置API详解 &#xff1a;https://dubbo.apache.org/zh/docs3-v2/java-sdk/reference-manual/config/api/#bootstrap-api public static void main(String[] args) throws IOException {ServiceConfig<Greet…...

十大开源测试工具和框架,一定有你需要的

目录 前言 Katalon Studio Selenium Appium JMeter SOAP UI Robot Framework Watir JUnit Robotium Citrus 总结 前言 免费的开源框架和工具由于其开源特性&#xff0c;现在逐渐成为自动化测试的首选解决方案。区别在于&#xff0c;你是喜欢使用类库编写一个全新的…...

加密技术在android中的应用

1、算法基础 算法基础参照linux的全盘加密与文件系统加密在android中的应用 消息摘要算法 对称加密算法 非对称加密算法...

备战蓝桥杯【一维前缀和】

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…...

研报精选230214

目录 【行业230214艾瑞股份】中国增强现实&#xff08;AR&#xff09;行业研究报告【行业230214国信证券】信息安全深度剖析5&#xff1a;密评和信创双催化&#xff0c;密码产业开启从1到N【行业230214民生证券】磁性元器件深度报告&#xff1a;乘新能源之风&#xff0c;磁性元…...

【SSL/TLS】准备工作:证书格式

证书格式1. 格式说明1.1 文件编码格式1.2 文件后缀格式2. xca导出格式1. 格式说明 1.1 文件编码格式 1. PEM格式: 使用Base 64 ASCII进行编码的纯文本格式。后缀为“.pem”, ".cer", ".crt", ".key" 2. DER格式 二进制编码格式&#xff0c;文件…...

Linux常用命令---系统常用命令

Linux系统常用命令场景一&#xff1a; 查看当前系统内核版本相关信息场景二&#xff1a; sosreport 命令场景三&#xff1a; 如何定位并确定命令&#xff1f;场景四&#xff1a;查看当前系统运行负载怎场景五&#xff1a; 查看当前系统的内存可用情况场景六&#xff1a;查看网卡…...

C 结构体

C 数组允许定义可存储相同类型数据项的变量&#xff0c;结构是 C 编程中另一种用户自定义的可用的数据类型&#xff0c;它允许您存储不同类型的数据项。结构用于表示一条记录&#xff0c;假设您想要跟踪图书馆中书本的动态&#xff0c;您可能需要跟踪每本书的下列属性&#xff…...

手语检测识别

论文&#xff1a;Real-Time Sign Language Detection using Human Pose Estimation Github&#xff1a;https://github.com/google-research/google-research/tree/master/sign_language_detection SLRTP 2020 手语识别任务包括手语检测&#xff08;Sign language detection&a…...

android fwk模块之Sensor架构

本文基于Android 12源码整理&#xff0c;包含如下内容&#xff1a; 通信架构应用层实现使用方式SensorManager抽象接口具体实现fwk层的实现native中的SensorManager的初始化流程native中的消息队列初始化与数据读取sensorservice实现HAL层的实现通信架构 应用层实现 涉及代码&…...

M2FP多人人体解析:内置拼图算法,可视化结果一目了然

M2FP多人人体解析&#xff1a;内置拼图算法&#xff0c;可视化结果一目了然 你是否曾面对一张多人合影&#xff0c;想要精确地分析每个人的穿着、姿态&#xff0c;甚至为每个人物单独“抠图”进行二次创作&#xff0c;却苦于没有合适的工具&#xff1f;传统的人像分割工具往往…...

7个外显子测序的克隆进化快速搞定4分文章

第三期线上直播肿瘤克隆进化生信分析培训课程报名啦&#xff01;深度解析&#xff1a;Reconstructing oral cavity tumor evolution through brush biopsy文章基本信息标题: Reconstructing oral cavity tumor evolution through brush biopsy作者: John, E., Lesluyes, T., Ba…...

Ostrakon-VL-8B与传统CV模型对比:在开放域理解上的优势

Ostrakon-VL-8B与传统CV模型对比&#xff1a;在开放域理解上的优势 最近在和朋友聊起计算机视觉项目选型时&#xff0c;他提了个挺有意思的问题&#xff1a;“现在大模型这么火&#xff0c;像Ostrakon-VL-8B这种视觉语言模型&#xff0c;和咱们以前常用的YOLOv8这类传统模型&a…...

Ollma部署LFM2.5-1.2B-Thinking:Docker镜像定制+模型嵌入一体化部署

Ollma部署LFM2.5-1.2B-Thinking&#xff1a;Docker镜像定制模型嵌入一体化部署 1. 为什么选择LFM2.5-1.2B-Thinking模型 如果你正在寻找一个既强大又轻量的文本生成模型&#xff0c;LFM2.5-1.2B-Thinking绝对值得关注。这个模型专门为设备端部署设计&#xff0c;在保持小巧体…...

进来看看你对进程虚拟内存的了解有多深?

在 Linux 中&#xff0c;每个进程都好像是楚门&#xff0c;生活在一个别人为它精心构建的世界里&#xff0c;而它却以为自己独占了整个系统的内存空间。这正是内核通过虚拟内存机制实现的。 本文将带你穿过用户态的表象&#xff0c;深入 Linux 内核源码与底层硬件&#xff0c;分…...

“水莲花数”

#include<stdio.h>main(){int a,b,c,d;for(a100;a<999;a){ba/100;ca/10%10;d%10if(b*b*bc*c*cd*d*da)printf(“对了 %d %d %d %d\n”,a,b,c,d);}}...

赫蹏JavaScript增强脚本终极解析:自动化中西文混排的实现原理与实战指南

赫蹏JavaScript增强脚本终极解析&#xff1a;自动化中西文混排的实现原理与实战指南 【免费下载链接】heti 赫蹏&#xff08;ht&#xff09;是专为中文内容展示设计的排版样式增强。它基于通行的中文排版规范而来&#xff0c;可以为网站的读者带来更好的文章阅读体验。 项目地…...

MATLAB实战:5步搞定MSK调制解调完整流程(附信号对比图生成技巧)

MATLAB实战&#xff1a;从零构建MSK调制解调系统&#xff0c;掌握信号可视化与性能验证全链路 在通信系统仿真与算法验证领域&#xff0c;MATLAB以其强大的矩阵运算能力和丰富的信号处理工具箱&#xff0c;成为了工程师和研究人员不可或缺的利器。对于学习数字调制技术的同学&a…...

Compose Stability Analyzer Gradle插件使用指南:自动化稳定性验证

Compose Stability Analyzer Gradle插件使用指南&#xff1a;自动化稳定性验证 【免费下载链接】compose-stability-analyzer &#x1f984; Real-time analysis of Jetpack Compose composable functions stability directly within Android Studio or IntelliJ. 项目地址: …...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...