三句话,让Ai帮你画18万张图

news2024/11/19 14:30:52

本文介绍Stable Diffusion的快速上手,本地部署,以及更多有趣的玩法展示。

在 DALL-E 2 和 Imagen 之后,AI绘图领域又一个热乎的深度学习模型出炉——Stable Diffusion 。8月份发布的 Stable Diffusion 更加高效且轻量,可以在消费级 GPU 上运行。StableAI公司表示:“它在速度和质量上的突破意味着它可以在消费者级的 GPU 上运行。这将允许研究人员和公众在一系列条件下运行它,并使图像生成普及化。”

 

这意味着现在你只需一句话和几十秒的时间,就可以让你脑海中天马行空的画面出现在你眼前:

或者随手画一笔,让ai帮你加“亿点点“细节:

怎么上手玩起来

前两种方式都比较简单,Colab看起来复杂,实际上一步一步按照提示来,也很简单。所以本文着重讲解本地部署的步骤和如何解决会遇到的坑。

  1. 官方在线Web App - DreamStudio
    • 👍 最易上手,登录即可直接使用
    • 👍 可视化调参
    • 😡 免费次数有限
  2. Google Colab运行
    • 👍 免费,次数无限
    • 😥 操作略微繁琐
    • 😥 不能持久运行
  3. 本地、云服务器部署
    • 👍 本地部署免费,次数无限
    • 👍 功能完整,可玩性高
    • 😥 硬件要求高
    • 😥 租用云服务挺贵
    • 😥 初次部署较为麻烦

DreamStudio

最简单无脑的上手途径,打开官网,输入一段话,等待结果出来就可以。没啥好说的,适合快速上手体验一下,或者付费玩家。

beta.dreamstudio.ai/dream

Google Colab运行

“Colab”,是 Google Research 团队开发的一款产品。可以通过浏览器编写和执行Python。可以免费分配使用包括 GPU 在内的计算资源。

打开这个Colab笔记本页面,按照步骤和提示执行就OK了。可能存在的坑模型的载入,需要用到Hugging Face ,不过也都不是什么问题。

虽然看着繁琐,但是可以薅羊毛用免费的显卡资源,性能也还不错,还是很香的。colab.research.google.com/github/hugg…

本地/云服务器部署

目前存在多个基于官方代码仓库fork出来的不同版本,可以有不同的部署和运行方式,包括docker部署,webUI。这里讲解基于官方的原版进行部署和使用,其他的方式都大同小异。

硬件

本地10G显存以上的显卡(显存不够也有其他办法),或租用拥有对应配置的云服务

环境依赖

Python,Conda

具体步骤

1. 下载模型权重文件

这个放在第一位是因为权重文件太大了,建议先下载起来,其他步骤在操作时,他可以在后台慢慢下载。

目前最新的是sd-v1-4.ckpt,版本越高,训练的数据量越大,下载最新版本即可,4.27GB

去huggingface下载:huggingface.co/CompVis/sta…

curl下载:

curl https://www.googleapis.com/storage/v1/b/aai-blog-files/o/sd-v1-4.ckpt?alt=media > sd-v1-4.ckpt
复制代码

2. 安装python

dddd, 不赘述

3. 安装Conda

Conda 是一个依赖包和环境管理工具,有Anaconda 和 Miniconda两个版本,这里使用Miniconda就可以。

可以官网下载对应的安装包,也可以命令行下载安装。

docs.conda.io/en/latest/m…

如果安装成功,可以通过 conda --version 查看版本,conda准备好就可以进入下一步。

4. 拉取Stable-Diffusion代码库到本地

github.com/CompVis/sta…

git clone https://github.com/CompVis/stable-diffusion.git
cd stable-diffusion/
复制代码

5. 创建并激活 Conda 环境

a. 创建ldm环境

进入Stable Diffusion代码目录,使用environment.yaml文件,创建Conda环境。

conda env create -f environment.yaml
复制代码

这个命令会根据environment.yaml文件,创建一个名字叫做ldm的虚拟环境,下载对应的依赖。这一步是很容易出现问题的地方,因为依赖比较多,安装时间比较长。可能会出现某些依赖安装时间特别长,最后失败的情况。

可能出现的问题:

  1. 因为过程中会用到pip安装依赖,如果安装依赖时间过长,可以在conda create执行前,先配置pip的国内镜像。根据我实际尝试的情况,建议使用清华镜像,阿里云镜像也很慢。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
  1. 如果出现:Pip subprocess error: ERROR: Command errored out with exit status 128: git fetch -q ... 的错误,则检查当前网络环境对github的访问是否通畅。
  2. 安装失败尝试再次安装时,可能出现提示环境已存在。这时候可以删掉原来的ldm环境,再重试安装。
# 查看已存在环境
conda env list
# 先切换到base环境
conda activate base
# 删除ldm
conda env remove --name ldm
复制代码

b. 激活ldm环境

conda activate ldm
复制代码

6. 生成脚本跑起来!

走完前面这些步骤,确认一下你的模型权重文件下载好了没有,--ckp 参数就指向这个文件。按照下面的参数,执行txt2img.py脚本。

python scripts/txt2img.py --prompt "rainbow ice cream cone" --plms --ckpt sd-v1-4.ckpt --skip_grid --n_samples 1
复制代码

如果执行成功,你应该可以在output文件夹内找到生成出来的彩色甜筒🍦的图片。

可能出现的问题:

  • PytorchStreamReader failed reading zip archive
    • 模型文件下载不完整,重新下载即可

尝试把 --prompt 参数换成脑洞大开的各种描述词吧。其他参数详情可以参考git主页。github.com/CompVis/sta…

除了文字生成图,还有可以玩图生图。

一些能让图像更加有趣的提示词内容建议:

  • 描述画面里想要存在的元素,物品,情绪
    • 森林,秋天,雨水,雾,苔藓,城堡,樱花,海浪,山,神庙
  • 氛围,情绪
    • 快乐,阴郁,赛博朋克,霓虹,蒸汽朋克,原子朋克
  • 画风
    • 现实,逼真, 油画, 铅笔画, 概念艺术, 超现实,魔法,幻想,中国山水
  • 艺术家
    • 达芬奇, 梵高 (油画), 莫兰,莫奈 (风景),宫崎骏与吉卜力工作室
    • Artgerm(漫画精致五官),Yuko Shimizu(插画)
  • 润色和修饰(一些神奇咒语)
    • 虚幻引擎,octane render(3D渲染), ArtStation, 8k, 4k, washed colors

Ultra realistic photo, princess peach in the mushroom kingdom, beautiful face, intricate, highly detailed, smooth, sharp focus, art by artgerm and greg rutkowski and alphonse mucha

😝 更多玩法

显存不够10G怎么玩

可以使用显存占用优化的版本,牺牲推理速度,以获得比原始版本更少的显存占用。可以使用2.4G显存生成512*512尺寸图片。

为了减少显存使用进行的优化:

  • 将Stable Diffusion模型分成四个部分,仅在需要时才发送到 GPU。计算完成后移回 CPU。
  • 注意力计算是分部分完成的。

github.com/basujindal/…

接入机器翻译,让他支持中文提示词

开启web服务,接入有道翻译api,让他自动翻译输入的中文提示词,并执行图片生成。

说到中文支持,百度文心大模型发布的“ERNIE-ViLG 文生图”,最近也在开放测试,有更好的中文语境理解,更能理解你的中文梗。不过完整功能需要申请体验,参数较少,可玩性比较弱。

更有意思的图生图

除了单纯的文字作为输入生成图片,Stable Diffusion还支持文字+图片作为输入,生成新的图片。就像最前面所展示过的,可以理解成你提供一个草图,ai根据你的要求,帮你添加亿点点细节。

这是我尝试的,使用一个简单的线条图片,加上一段描述文字:“一只耐克鞋”,所生成的结果:

如果我把他的输出再次变为输入,重复渲染,可以得到更多不同的结果。甚至可以一秒换品牌...

Stability AI 的口号是 “AI by the people, for the people”。AI从群众中来,到群众中去。他可以单纯用来创作你天马行空的想象,也可以用作你文章的免费配图,能辅助你的工作,甚至能参赛获奖!赶快玩起来吧。

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

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

相关文章

P4:Transforms的使用

transform.py就像是一个工具箱,里面有很多工具(如:totensor、resize等不同的工具)。 使用规则: 拿特定格式的图片,通过使用工具,得到想要的结果。 1、transforms.ToTensor()的使用 1、作用&a…

实战1:基于tensorflow卷积网络实现面部关键点检测详细教程(代码+数据)

项目概述: 此任务的目标是预测面部图像上的关键点位置。这可以用作多个应用程序中的构建块,例如:检测面部关键点是一个非常具有挑战性的问题。人脸特征因人而异,即使是单个人,由于 3D 姿势、大小、位置、视角和光照条件等因素也存在很大差异。 直接上结果: 数据集描…

JSP SSM 个人博客系统系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP SSM 个人博客系统系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代 码和数据库,系统主要采…

vue3-Teleport笔记

简单来写一下Teleport src/components/TeleportLearn.vue <script setup></script><template><div><Teleport to"body"><div>你好</div></Teleport></div> </template><style scoped></style&…

NVMe IO数据传输如何选择PRP or SGL?

在Host与Controller之间有数据交互时&#xff0c;Controller会多次访问Host内存。比如执行NVMe Read/Write:当Host下发NVMe Write命令时&#xff0c;Host会先放数据放在Host内存中&#xff0c;然后通知Controller过来取数据。Controller接到信息后&#xff0c;会通过PCIe Memor…

Python下载ts文件视频并合并

目录 一、ts文件的由来 二、下载ts文件 1.下载index.m3u8&#xff0c;并做相应处理 2.下载ts文件 三、合并ts文件 一、ts文件的由来 ts文件&#xff0c;ts即"Transport Stream"的缩写&#xff0c;特点就是要求从视频流的任一片段开始都是可以独立解码的&#x…

C 程序设计教程(06)—— C 语言的运算符与表达式

C 程序设计教程&#xff08;06&#xff09;—— C 语言的运算符与表达式 该专栏主要介绍 C 语言的基本语法&#xff0c;作为《程序设计语言》课程的课件与参考资料&#xff0c;用于《程序设计语言》课程的教学&#xff0c;供入门级用户阅读。 目录C 程序设计教程&#xff08;0…

【每日一题】【LeetCode】【第七天】盛最多水的容器

解决之路 因为是周日&#xff0c;找个中等题挑战一下。 题目描述 测试案例&#xff08;部分&#xff09; 第一次 想一下&#xff0c;因为涉及到底乘高&#xff0c;所以不能排序。逆序也没必要。 简化一下题干&#xff0c;盛水最多&#xff0c;也就是算面积最大&#xff0c…

【北邮果园大三上】运筹学期中前

第一章.线性规划 1.1例题 根据现实世界中的问题建立模型 一般表达式 ①和式 ②向量式 1.2变化标准&#xff1a; 1.3线性规划求解的基础原理和单纯解法 1.3.1解 ①基础概念 基 可行解与基础解 其他分类 ②判断举例 原式子&#xff1a; 判断标准 将一个未知数作为常熟&#…

从Wireshark看TCP连接的建立与关闭

http://t.zoukankan.com/jonathanlin-p-4282582.html TCP是一种面向连接、可靠的协议。TCP连接的建立与断开&#xff0c;都是需要经过通信双方的协商。用一句话概括就是&#xff1a;三次握手say hello&#xff08;建立连接&#xff09;&#xff1b;四次握手say goodbye&#x…

蓝桥杯Python组排序算法与函数

目录 一、排序算法 二、排序函数 1、Python 的 sort() 函数和 sorted() 函数 2、sort() 例子 3、sorted() 例子 4、部分排序 三、例题 1、统计数字&#xff08;lanqiaoOJ题号535&#xff09; 2、错误票据&#xff08;lanqiaoOJ题号205&#xff09; 3、奖学金&#xf…

线程池 - ThreadPoolExecutor 详解

线程池 - ThreadPoolExecutor 详解 线程池 ThreadPoolExecutor 源码解析参考 juc 专栏系列文章。 基本概述 线程池&#xff1a;一个容纳多个线程的容器&#xff0c;容器中的线程可以重复使用&#xff0c;省去了频繁创建和销毁线程对象的操作。 线程池作用&#xff1a; 降低资…

【基础】Elasticsearch 基础

Elasticsearch 基本概念及使用Elasticsearch 基本概念ES 的简介及使用场景ES 基本概念ES 与 Kibana 的安装Elasticsearch 分词器ES 内置分词器ik 分词器的安装和使用Elasticsearch 基本使用索引操作数据的增删改查DSL 查询聚合查询批量操作Elasticsearch 基本概念 ES 的简介及…

多线程锁相关

日升时奋斗&#xff0c;日落时自省 目录 1、常见的锁策略 1.1、悲观锁vs乐观锁 1.2、轻量级锁vs重量级锁 1.3、自旋锁vs挂起等待锁 1.4、互斥锁vs读写锁 1.5、公平锁vs非公平锁 1.6可重入锁vs不可重入锁 2、CAS 2.1、CAS解析 2.2、CAS的应用场景 2.2.1、实现原子类 …

JavaSE学习day2_03, 算数运算符

5. 算术运算符 5.1 分类&#xff1a; - * / % 5.2 细节&#xff1a; 1.运算规则。跟小学数学是一模一样的 2.如果是整数跟整数进行计算&#xff0c;结果只能是整数。直接去掉小数部分&#xff0c;保留整数。如5/22,而不是2.5. 3.如果想要结果中有小数&#xff0c;需要有小…

(二)K8S Namespace 和 Label

Namespace 1、K8S集群中默认的Namespace为default&#xff0c;通过Namespace可以实现Pod之间的相互隔离&#xff08;如测试环境、生成环境的隔离&#xff09; 2、通过K8S的资源配置机制限定不同的Namespace对CPU、内存的使用&#xff0c;再通过K8S授权机制将不同的Namespace交…

启动ruoyi框架(初学)

启动ruoyi框架&#xff08;初学&#xff09;&#xff08;RuoYi&#xff09; Ruo Yi启动ruoyi框架&#xff08;初学&#xff09;&#xff08;[RuoYi](http://doc.ruoyi.vip/)&#xff09;一、简介二、项目启动1.前端模组&#xff1a;RUOYI-UI2.后端模组&#xff1a;3.环境要求&a…

Java版阿里云/腾讯云域名动态映射DDNS到动态IPv4或IPv6

1 介绍 利用业余时间&#xff0c;整合了一下阿里云和腾讯云动态域名映射&#xff0c;并将其使用spring boot做了一下封装&#xff0c;正好可以把家里的闲置电脑和IP v6利用起来&#xff0c;具体使用方法如下&#xff0c;或者参考对应项目的readme文档 2 地址 aliyun-ddns&am…

数据分析-深度学习 Day3

youtube课程地址&#xff1a;&#xff08;实时更新&#xff09;https://www.youtube.com/playlist?listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2Jwww.youtube.com/playlist?listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2JB站课程地址&#xff1a;李宏毅2021机器学习【week3】&#xff1a…

基于tensorflow框架bert的自然灾害描述文本分类详细教程

概述: 使用tensorflow框架: 预测给定的推文是否与真正的灾难有关。如果是这样,预测一个1。如果不是,预测一个0 数据展示: