(跨模态)AI作画——使用stable-diffusion生成图片

news2024/10/5 15:33:57

AI作画——使用stable-diffusion生成图片

  • 0. 简介
  • 1. 注册并登录huggingface
  • 2. 下载模型
  • 3. 生成

0. 简介

自从DallE问世以来,AI绘画越来越收到关注,从最初只能画出某些特征,到越来越逼近真实图片,并且可以利用prompt来指导生成图片的风格。

前不久,stable-diffusion的v1-4版本终于开源,本文主要面向不熟悉huggingface的同学,介绍一下stable-diffusion如何使用(非常简单)。

1. 注册并登录huggingface

直接打开compvis的stable-diffusion:
https://huggingface.co/CompVis/stable-diffusion-v1-4
然后,去找它的模型,想给它下载下来,但是进入下载界面,会显示404。没关系,如果没注册过huggingface,需要先注册一个账号,一分钟搞定。
1
然后回到model card,有一个用户协议,点击接受:
2

2. 下载模型

在切回模型文件,发现就可以下载了:
3
点击每个文件后边的小箭头,就可以下载了,把所有下载的文件扔到一个文件夹里,你可以把这个文件夹命名为stable_diffusion,注意里边的这些文件夹的名称也要与项目里保持一致。

其实在这里我们也可以大概看到整个模型的基本结构:

  1. 一个自编码器VAE:用于重构模型(所以在使用的时候只调用了它的解码器);
  2. 一个U型网络;
  3. 一个Clip:用于对输入的文本进行编码;
  4. 还有一个safty checker暂时不太清楚是做什么用的。

官方文档里对模型结构的整体介绍如下:
结构
由于模型我目前也不是很熟,就不多介绍了,怕讲错了。直接进入下一个环节,生成。

3. 生成

首先安装一下环境依赖:

pip install transformers
pip install diffusers

在配置好环境之后,模型的调用非常方便:

import torch
from diffusers import StableDiffusionPipeline

然后建立模型,这里的模型路径可以选择之前下载的所有文件存放的路径。

pipe = StableDiffusionPipeline.from_pretrained('xxxxxx/huggingface/stable-diffusion-v1-4', use_auth_token=True)
# cpu会很慢所以最好在GPU上运行,大概需要10G显存
pipe.to('cuda:0')

输入一句话,直接调用这个类,就可以生成了,生成的图片是PIL格式,可以直接保存。

prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt, guidance_scale=7.5)["sample"][0]
image.save("test_1.png")

5
然后看一下这个类调用方法可以传入的参数都有什么:

help(pipe.__call__)
# __call__(prompt: Union[str, List[str]], height: Union[int, NoneType] = 512, width: Union[int, NoneType] = 512, num_inference_steps: Union[int, NoneType] = 50, guidance_scale: Union[float, NoneType] = 7.5, eta: Union[float, NoneType] = 0.0, generator: Union[torch._C.Generator, NoneType] = None, output_type: Union[str, NoneType] = 'pil', **kwargs) 

查看官方文档可知:

参数含义默认值
height生成图片的高度512
width生成图片的宽度512
num_inference_steps预测步数50
guidance_scale指导度7.5
generator生成器None
output_type输出的类型pil

其中,预测的步数,一般来说步数越大,图片效果越好,但是耗时就越长(调用的时候那个tqdm条就是步数);
guidance_scale,用来控制生成的一个参数,暂时不太了解,官方说设置为7.5-8效果最好。感兴趣的话可以参考:https://arxiv.org/abs/2207.12598

关于生成器参数,主要可以用来生成VAE模型的初始潜在噪声,由于VAE的初始化是采样出来的,具有随机性,所以如果想确保生成的图片一样的话,可以设置seed:

import torch

generator = torch.Generator("cuda").manual_seed(1024)
image = pipe(prompt, generator=generator)["sample"][0]

本文就先介绍到这里,后续如果有更多好玩的text-to-image模型,可能会继续介绍。

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

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

相关文章

软件测试面试题——数据库知识

1、要查询每个商品的入库数量,可以使用以下SQL语句: SELECT 商品编号, SUM(入库数量) AS 入库数量 FROM Stock GROUP BY 商品编号;这将从Stock表中选择每个商品的入库数量,并使用SUM函数对入库数量进行求和。结果将按照商品编号进行分组&…

数据宝藏与精灵法师:探秘Elf擦除魔法的奇幻故事

在数字领域的奇幻王国中,大家视数据为宝藏。作为奇幻王国的国王,在他的宝库中,自然是有着无数的数据宝藏。这么多的数据宝藏,却让国王发难了。因为宝库有限,放不下这么多数据宝藏。因此,国王广招天下的精灵…

【备战秋招】每日一题:3月18日美团春招第三题:题面+题目思路 + C++/python/js/Go/java带注释

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&…

简易someip服务发现SD报文演示

环境 $ cat /etc/os-release PRETTY_NAME"Ubuntu 22.04.1 LTS" NAME"Ubuntu" VERSION_ID"22.04" VERSION"22.04.1 LTS (Jammy Jellyfish)" VERSION_CODENAMEjammy IDubuntu ID_LIKEdebian HOME_URL"https://www.ubuntu.com/"…

chatgpt赋能Python-pythonsum

Pythonsum:优秀的Python算法包介绍 Pythonsum是Python语言的一个优秀的算法包,具有很高的可重用性和性能,支持大规模数据处理和复杂算法实现。本文将为大家介绍Pythonsum的基本功能和优势。 Pythonsum的基本功能 Pythonsum提供了一系列丰富…

华为OD机试真题 Java 实现【对称字符串】【2023Q2 200分】

一、题目描述 对称就是最大的美学,现有一道关于对称字符串的美学。 已知: 第 1 个字符串:R 第 2 个字符串:BR 第 3 个字符串:RBBR 第 4 个字符串:BRRBRBBR 第 5 个字符串:RBBRBRRBBRRBRBBR …

扑克牌大小OJ题

题目链接 扑克牌大小_牛客题霸_牛客网 题目完整代码 #include <iostream> #include<string> #include<algorithm> using namespace std;// left_str 左边牌 // right_str 右边牌// left_count 左边牌数 // right_count 右边牌数// left_first 左边第一个牌…

chatgpt赋能Python-pythonsep怎么用

Python在SEO中的应用 Python一直是广受欢迎的编程语言之一&#xff0c;它拥有强大的功能和易于使用的特性&#xff0c;使得它成为了许多开发人员们的首选。“Pythonsep”是Python在SEO中的应用&#xff0c;它可以帮助用户更好地优化自己的网站&#xff0c;让网站更容易被用户发…

搭建python web环境----Django

第一步&#xff1a;安装Django 1.进入cmd&#xff1a;pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple 2.检测版本&#xff1a; 第二步&#xff1a;配置环境变量 1.查找python安装位置: 2.打开django文件夹中bin文件夹&#xff1a; 查看django的安装位置&am…

火爆CV圈的SAM是什么?

SAM是什么 前言 最近几周&#xff0c;人工智能的圈子里都在讨论SAM&#xff08;Segment Anything Model&#xff09;&#xff0c;一个号称&#xff08;零样本&#xff09;分割一切的图像分割模型。 图&#xff1a;Segment Anything Demo 2023年4月6号&#xff0c;Meta AI发布…

npm install(报错)

1、npm install 报错&#xff08;如图&#xff09; WARN ERESOLVE overriding peer dependency npm WARN While resolving: intervolga/optimize-cssnano-plugin1.0.6 npm WARN Found: webpack3.12.0 npm WARN node_modules/webpack npm WARN peer webpack"^2.0.0 || ^3…

spring源码学习

1.xmlBeanFactory对defaultListableBeanFactory类进行扩展&#xff0c;主要用于从XML文档中获取BeanDefinition&#xff0c;对于注册及获取bean都是使用从父类DefaultListableBeanFactory继承的方法去实现。 xmlBeanFactory 主要是使用reader属性对资源文件进行读取和注册。 2.…

VMware ESXi 6.7 U3 Final - ESXi 6 系列最终版下载

VMware ESXi 6.7 U3 Final - ESXi 6 系列最终版下载 VMware ESXi 6 Standard 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-6/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org VersionRelease NameRelease …

APIO2023 游记

GDOI 和 GDKOI 的游记都咕咕咕了&#xff0c;而且都炸了&#xff0c;APIO 的游记提前发&#xff0c;就是要破釜沉舟。 我是线上选手。 Day -7 我们原题检测&#xff0c;阿克了&#xff0c;毕竟是原题&#xff0c;虽然有两道博弈论黑题确实挺毒瘤的。 教练让我做 APIO2012 的…

centos8安装mysql8

本次介绍捆绑包rpm方式安装mysql 首先到mysql官网:MySQL 1.下载捆绑包 2.上传至服务器 3.解压 tar -xvf mysql捆绑包.tar 4.重点来了,按照以下顺序分别安装(命令中的版本号按照自己下载的版本调整) rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm rpm -ivh my…

东南亚市场攻略:如何利用海外网红实现品牌曝光与销售增长

在当今数字化时代&#xff0c;社交媒体的兴起改变了品牌推广和市场开发的方式。尤其是在东南亚地区&#xff0c;网红营销迅速发展&#xff0c;成为品牌开发该地市场的重要策略之一。本文Nox聚星将和大家详细探讨出海品牌该如何利用海外网红营销来开发东南亚市场。 ​一、东南亚…

怎么做邮件营销?邮件营销必备攻略

电子邮件营销是与受众沟通、建立关系和推动转化有效的方式之一。然而&#xff0c;撰写有效的电子邮件营销活动需要创造力和方法技巧的结合。做好电子邮件营销能够为企业带来长期的客源&#xff0c;并为其培养稳定优质的客户&#xff0c;为企业带来长期收益。在这篇文章中&#…

这样做WhatsApp群组营销,转化率猛UP

WhatsApp群组营销是一种利用WhatsApp群组进行推广和营销活动的策略。通过创建或参与相关主题的群组&#xff0c;您可以与潜在客户建立联系&#xff0c;传递信息并促进销售。 以下是一些WhatsApp群组营销的建议&#xff1a; 1.确定目标受众&#xff0c;建立目标群组&#xff1a…

2023天一永安杯部分wp

web Query 布尔盲注 import requests import stringdictionary string.digitsstring.ascii_letters"_-{,}" url "http://cd5a2660b462c867.node.nsctf.cn/login.php" xxx"" for i in range(1,666):print("正在爆破第{}位".format…

关闭eslint - vue篇

文章目录 一、问题描述二、问题解决1、首先是比较旧的vue项目2、创建项目的时候&#xff0c;不要选eslint3、如果你使用的编辑软件是webstorm4、创建的项目没有webpack.base.conf.js文件&#xff0c;但是有 .eslintrc.js5、比较新的vue项目&#xff0c;目录没有&#xff08;直接…