AI绘画之一_StableDiffusion_搭建环境

一周之内体验了:Diffusion,CLIP,Segment Anything,Insightface,LoRA,ConnectNet 诸多算法的实际应用,全部是本地部署,0花费。

1 选择 AI 绘画工具

目前 Ai 绘画界有两大主流工具,Midjourney(简称MJ) 和 Stable Diffusion(称SD)。
MJ 于 2022 年 3 月首次面世,已从 V3 模型发展至 V5 模型,SD 由 Stability AI 公司和非营利研究人员在2022年8月推出的,可在本地免费部署。

MJ 更适合新手入门,10刀/月,30刀/月,60刀/月三档收费;低付费的图片是共享的,高付费服务能一对一出图;学习提示词门槛低;有一定的审核要求,敏感词比较多;少量设置后的画面看起来就很炫,但不太受控,自娱自乐还行,难以稳定输出。

SD 可以设置大量参数,下载海量模型,本地部署,提示词百无禁忌,针对实际工作中的目标,更需要 SD 来定制。它需要本地硬件支持,以及更高的学习成本。

如果只想玩一下,国内也有一些免费平台,浏览器端和手机端微信端都有,就是生成效果比较差。

从两个产品不同的生态圈就可以看出,开放的系统明显呈现出众人拾柴火焰高的趋势,从平台、插件、模型,到文档,工具都越做越好。另外,LoRA 技术让大家都可以自己训练自己的增补小模型,Civitai圈的交流氛围,加入的人也越来越多。这就相当于MJ一个公司和所有人拼,又没有特别过人的核心技术。

艺术给人带来的体验和工作体验不太一样,大家更向往彼此的认同感,除了经济价值,工作本身就是工作的动力,这也成为一种巨大助推力。

2 搭建 SD 环境

2.1 介绍

Stable Diffusion (简称:SD)支持:通过描述生成图,或者改图,做自己的卡通头像,生成各种风格的画作,给线稿上色,修复相片,换脸,抠图 …… 点两下鼠标,几秒就能生成一张作品。在自家机器上搭建一个 SD 环境,不用花钱,不用上网也能使用。

不过还是有点门槛,比如:

  • 安装时需要 “科学”连接下载网站(否则无法随心选择海量模型)
  • 英文尚可,能看懂界面和简单说明(用翻译软件也不是不行)
  • 会一点Python如遇问题自己能解决(也不一定会遇到问题)
  • 有带6G以上显存的 GPU 的机器(没有 GPU 会很慢,但也能用)
  • 至少 20G 的磁盘剩余空间(这个必须有,建议 50G,最好是SSD,否则加载模型特别慢)

本教程中我使用了 Ubuntu + Docker 方式安装,这是目前我能找到最简单的方法,几乎只需要输入一个命令,即可运行基本功能;当然前提是事先安装了 Ubuntu 系统 Docker 环境以及 GPU 驱动。

这仅仅是运行环境,后面涉及各种模型的组合,调参,插件,了解工具周边生态,与其它工具联合使用;还有审美,光影的感觉,对受众内心的揣摩…… 总之,当一个 AI 画手也不是件容易的事。

2.2 基础环境

操作系统: Ubuntu 22.04
显卡: NVIDIA GTX 1080 Ti 11GB 显存

2.3 安装方法

SD github 项目中推荐直接在系统中安装环境。我则更喜欢把 Python、git、conda 一系列工具都打包在内的 docker 安装方式,这避免了与机器上安装的其它工具的冲突。
siutin/stable-diffusion-webui-docker 是目前下载量最大的 Stable Diffusion 镜像,几乎和 Stable Diffusion github 版本同步更新,相比几个同类镜像,它的大小和易用性也是最好的。

2.3.1 CPU 版本

$ docker run -it --name sdw --network host \
  -v $(pwd)/models:/app/stable-diffusion-webui/models \
  -v $(pwd)/outputs:/app/stable-diffusion-webui/outputs \
  -v $(pwd)/extensions:/app/stable-diffusion-webui/extensions \
  --rm siutin/stable-diffusion-webui-docker:latest-cpu \
  bash  # 安装
$ ./webui.sh --skip-torch-cuda-test --use-cpu all --share --precision full --no-half --listen # 运行

下载后安装模型即可使用。
参数:--no-half 由于我这边一直报错,所以设置了该参数。
参数:--listen 设置后可使用其 ip 地址访问服务,否则只允许本机用 127.0.0.1访问,服务默认端口为 7860。
参数:--enable-insecure-extension-access 允许使用插件

2.3.2 GPU 版本

$ nvidia-docker run -it --name sdw --gpus all --network host \
  -v $(pwd)/models:/app/stable-diffusion-webui/models \
  -v $(pwd)/outputs:/app/stable-diffusion-webui/outputs \
  -v $(pwd)/extensions:/app/stable-diffusion-webui/extensions \
  --rm siutin/stable-diffusion-webui-docker:cuda-v1.5.1-2023-08-02 \
  bash
$ ./webui.sh --share --listen --enable-insecure-extension-access

2.3.3 下载模型

我下载的第一个模型是:
https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors
可用于生成真实场景,修图,换图等,大小为4.2G,下载后放入 stable-diffusion-webui/models/Stable-diffusion/ 目录。

2.3.4 使用

如果上述程序不报错,在浏览器打开 127.0.0.1:7860,即可看到 gradio 生成的界面。

2.3.5 注意事项

  • 请将模型、输出、扩展名映射到 docker 以外的目录,以保证正常保存数据。
  • 以 bash 方式进入镜像后,使用命令运行 webui.sh 工具,这样可以在重启时一定程度保留现场,也较方便调试。
  • 安装时,我的CPU版正常运行了,GPU版老是报错,于是升级了宿主机的GPU驱动(从470升到535,nvidia-driver-535, nvidia-utils-535两个包),重启后一切正常
  • CPU版本工具 3分钟生成一张图,GPU版本 7秒生成一张图,是完全不同的体验。
  • 插件和模型数据未必都下载到 models 目录下,所以我后来做了 docker commit,以保存现场。

2.4 调试命令

  • 查看 torch 可否支持当前 GPU
python -c "import torch; print(torch.cuda.is_available())"
  • 查看当前 GPU 硬件
lspci |grep VGA
  • venv
    venv是Python的虚拟环境工具,以支持多个Python环境并存。它是Python 3.3版本后标准库中的一个模块。stable diffusion 使用了venv 将环境搭建在 /app/stable-diffusion-webui/venv/下,自行调试需设置 venv:
python -m venv venv # 设置环境
source venv/bin/activate # 激活环境

3 源码

源码并不多,去掉 .git 目录,只有4M左右。当前版本共 160 个 python 文件,主要包含:内置函数extensions-builtin,支持工具scripts,以及主功能模块modules。整体 python 代码量在 3W-4W 行左右。界面基于 gradio 框架开发。

4 相关资源

Stable Diffusion 源码
相关 Docker 镜像
最详细的WEBUI启动参数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容