前言
虽然最近几个月 AI 概念火到燃爆地球,据说下面这些,都是 AI 创作出来的图片。
对于此事,我一直保持冷静旁(chī)观(guā),因为我一直觉得自己的工作还不会被 AI 取代,直到……
直到我发现,现在各类平台的 非 技术博主都已经掌握了 AI 作图的能力,甚至已经授课了。原来最开始卷的,居然是人类自己!
不行!不行!不行!
作为“高智商”人类,怎么可以真让自己退化成一个程序猿!
所以我决定,一定要掌握这门手艺!
简单了解之后我才发现,原来使用 AI 作图早就是个零基础的事情,难怪各类 Up 主们都能录制教程。既然这样,为了体现技术人的专业精神,我必须出一篇关于如何搭建 AI 绘图服务的“专业”教程给到所有萌新。下面开始就是正文了!
正文
人工智能生成内容(Artificial Intelligence Generated Content,简称 AIGC)是当下最火的概念之一。AIGC 被认为是继专业生成内容(Professional Generated Content, PGC)和用户生成内容(User Generated Content, UGC)之后,利用人工智能技术自动生成内容的新型生产方式。AI 生成内容的形式相当丰富,除了文字外,还可以进行绘画、作曲、演唱、编剧、设计等。最近热度非常高的 Text to Image 就是 AI 加持下非常时髦的一种图片创造方式。
许多人可能觉得,使用 AIGC 有很高的门槛,普通人是很难入门的。其实不然,随着 AI 技术的快速发展以及众多开源项目的诞生,我们每个人都可以很轻松且廉价的使用到 AIGC。谁能想到,在 2018 年,人工智能生成的画作在佳士得拍卖价还高达 43.25 万美元,而时隔才数年,让 AI 为我们创作绘画已经成了人人触手可及的事情。
在这些开源项目中,Stable Diffusion 无疑是优秀生之一。Stable Diffusion 是一种扩散模型(Diffusion Model)的变体,称为“潜在扩散模型”(Latent Diffusion Model),由CompVis、Stability AI 和 LAION 的研究人员和工程师创建。它使用来自 LAION-5B 数据库子集的图像进行训练。使用这个模型,可以生成包括人脸在内的任何图像,因为有开源的预训练模型,所以我们也可以在自己的机器上运行它。Stable Diffusion 能够根据我们提供的一些提示词以及可以调整的部分参数,通过模型计算生成一张不错的图片。
下面向大家介绍如何基于 Stable Diffusion 实现文字到图片的生成。这其中包括了 Stable Diffusion 的安装和基本使用方法,以及使用 Lora 模型调整图片生成的风格。这是一项接近零基础的教程,其中并不会包含复杂的概念或者深奥的算法。换句话说,只要你稍有计算机基础,了解如何敲入命令,知道怎么使用浏览器打开网页,你就能学会。
实验资源
这里,我们会基于 ECS 安装和部署 Stable Diffusion 及其相关的程序和模型。所以,我们首先需要准备好一台 ECS 服务器,我选用的是 Alibaba Cloud Linux 3.2104 LTS 64位 快速启动版 系统。
重点来了
如果你还玩不转 ECS 以及其他阿里云服务,希望有一些场景化教程,或者缺少免费资源来体验阿里云服务,那么不要犹豫,赶快打开 云起实验室 把!
在实验室中,我们为大家准备好了 Stable Diffusion 生成图片的体验场景,点开即玩:
https://developer.aliyun.com/adc/scenario/13c7c3f7e06042578862c25b6ce12a80
云起实验室 是由 阿里云开发者社区 提供的零门槛云上实践平台。一键预置实验环境,提供详细的实验手册指导,快速体验云计算、大数据、人工智能等云服务实验场景,旨在帮助用户快速提升使用云服务的能力。
如果你通过 云起实验室 体验 AI 绘图,那么可以在实验室页面,直接点击 创建资源 来准备搭建环境需要的 ECS 服务器。
说明:资源创建的过程需要 1 ~ 3 分钟,请耐心等待。
在实验资源创建完成后,实验室会自动通过 Web Terminal 连接至服务器,我们可以直接在页面上操作服务器。同时,我们可以在实验室页面左侧导航栏中,点击 云产品资源列表 查看本次实验资源相关信息(例如 ECS 服务器的公网地址、登录账号等)。
安装 Stable Diffusion WebUI
Stable Diffusion 是一个 Python 命令行程序,我们直接使用需要对它的命令和参数有详尽的了解,有一定学习成本。好在,有一个 Stable Diffusion WebUI 的开源项目,可以直接将 Stable Diffusion 的操作通过网页透出,让我们轻松通过 Web 页面就能使用 Stable Diffusion 生成图片。所以,我们选择安装和使用 Stable Diffusion WebUI 来完成实验。
安装基础工具
Stable Diffusion WebUI 的安装与运行需要使用到一些工具软件,我们需要先通过 Yum 安装它们。
sudo yum install -ygit conda mesa-libGL
初始化 conda 环境
Conda 是一个优秀的跨平台、跨语言包管理工具。同时,它的环境隔离功能也能很好的帮助我们屏蔽服务器间基础设施的不同,为我们提供一个干净、统一的程序运行环境。下面的命令可以帮助我们在 Bash 中初始化 Conda,同时创建并激活名为 aigc 的虚拟环境。
sudobash-c"conda init bash" && bashconda create -y-n aigc python=3.10.6 conda activate aigc
注意:之后的操作都将基于 aigc 这个虚拟环境,如果你切换了 Terminal 或者不小心退出了环境,可以再次使用 conda activate aigc
回到 aigc 虚拟环境中。
拉取 Stable Diffusion WebUI 代码
接着,我们从 Github 上获取最新的 Stable Diffusion WebUI 代码。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
说明:由于 Github 访问存在不稳定性,如果从上述地址 clone 失败,可以使用在 Gitee 上为大家准备的镜像项目git clone https://gitee.com/developer-aliyun-com/stable-diffusion-webui.git
。
项目下载完成后,我们将 Web Terminal 的操作目录设置为项目所在目录。
cd stable-diffusion-webui
安装项目依赖
Stable Diffusion 的运行还需要许多依赖包,通过下面的命令可以把它们都安装到 Conda 提供的虚拟环境中。
conda install -y pytorch torchvision torchaudio cpuonly -c pytorch pip3 install opencv-python-headless gfpgan open-clip-torch xformers pyngrok clip-anytorch pip3 install -r requirements_versions.txt
启动 Stable Diffusion WebUI
当一切准备就绪,我们可以使用以下命令启动 Stable Diffusion WebUI。
python launch.py --listen--lowvram--no-half--skip-torch-cuda-test
在启动时,Stable Diffusion WebUI 会根据需要下载一些必要模型数据,另外,加载模型也需要花费一些时间,所以我们现在要做的就是耐心等待。当 Terminal 中显示出 Running on local URL: http://0.0.0.0:7860
字样,就表示程序已经启动并对外提供服务了。
使用 Stable Diffusion WebUI 生成图片
当 Stable Diffusion WebUI 启动后,会对外监听 7860 端口。我们需要使用http://(ECS公网地址):7860
来访问程序。这里的ECS公网地址
需要替换成实验室为大家分配的可以访问 ECS 的公网 IP 地址。我们可以在实验室页面左侧导航栏中,点击 云产品资源列表 查看本次实验资源所分配的 ECS 公网地址。
另外,你还可以使用 Web Terminal 右上角的 + 号新建一个 Terminal 标签页,并在其中执行以下命令直接获得 Stable Diffusion WebUI 的访问地址。
echo"http://"$(curl -s ifconfig.me)":7860/"
访问 Stable Diffusion WebUI
接着,让我们打开浏览器,输出刚刚获得的访问地址,就可以进入 Stable Diffusion WebUI 的操作界面了。
使用文字生成图片
生成图片的操作方式非常简单,只需要在左侧的 Prompt 输出框中填入提示词,之后点击右侧的 Generate 按钮即可。提示词就是生成图片的依据,既可以是描述需要生成内容的词,如:girl, sunset, forest 等;也可以是用于是描述图像属性的词,如:best quality, beautiful, masterpiece 等。我们甚至可以通过提示词选择图片生成的视角、光线、画风;人物的姿势、着装、表情;背景的内容等。
图片生成的速度根据机器配置的不同有所差异。在图片生成的过程中,我们可以在页面上看到生成过程的中间图片逐渐变得清晰。同时,也可以通过进度条直观的了解图片生成的进度和预估剩余时间。
学习使用 LoRA 模型
除了使用基础模型生成图片外,我们还可以使用 LoRA 模型(Low-Rank Adaptation of Large Language Models)进行图片的生成。LoRA 直译为大语言模型的低阶适应,这是微软的研究人员为了解决大语言模型微调而开发的一项技术。LoRA 能够冻结预训练好的模型权重参数,然后在每个 Transformer 块里注入可训练的层,由于不需要对模型的权重参数重新计算梯度,从而大大减少了需要训练的计算量。从实际效果来说,LoRA 模型可以帮助我们生成指定风格、面孔、动作等要求的图片。
使用 LoRA 模型
打开 WebUI 界面,点击 Generate 按钮下方的 扩展配置图标按钮,之后选择 Lora 标签,就能看到我们可以使用的 LoRA 模型了。
在实验场景中,已经准备了数个比较热门的 LoRA 模型,你可以尝试使用它们生成不同风格的图片。
当我们点击某个 LoRA 模型后,Prompt 中会加入这些内容。最后的数字代表着 LoRA 模型的权重,默认为 1。接着,我们输入提示词,再点击 Generate 按钮,就可以使用 LoRA 模型将文字转化为图片了。
获得更多的 LoRA 模型
如果觉得现有的 LoRA 模型还不符合自己的审美,我们可以从 Civitai https://civitai.com/tag/lora 等网站里找到许多其他爱好者预先训练好的 LoRA 模型,我们只需要将这些模型下载到stable-diffusion-webui/models/Lora
目录内(在本实验中,需要放置在/root/models/Lora
目录内),接着我们就可以在 Stable Diffusion WebUI 中使用它们。如果是新下载的模型没有出现在页面上,可以点击 Refresh 按钮重新载入它们。
如果还不会,你还能在 云起实验室 再次体验这个场景哦!