AI 绘画的时代
大家好,我是小包。
我是没有艺术细胞的,这点我从很小就切实的感受到了,我不会画画,不会唱歌,我便是艺术的荒漠。童年是那么的梦幻,那么的值得渴望,谁不想亲自用自己的画笔来描绘记忆中的过去那?没错,我也曾想成为一个画家。
今年是很值得庆幸的一年,AI 绘画在 2023 年泉涌般发展,给予了我马良的神笔,使用它我可以绘画出无限的可能,本文就分享了今年我在 AI 绘画中的一系列尝试,本文整理了整年学习和体验 AI 绘画的总结以及一些对于 AI 绘画的看法,我尽量通过浅显易懂的方式讲述 AI 绘画的基本使用,文章很长,其中包含大量案例和小窍门,建议收藏慢慢品味,如果能对大家的 AI 绘画之路有微乎其微的帮助,那真的是我的荣光。
让我们举起 AI 绘画的神笔,一起绘制出梦想中的世界。
一、基础原理
Diffusion
在 AI 绘画之前,我有必要简短给大家介绍一下 AI 绘画的基本原理。
我们先来想一个问题,你认为 AI 是怎么进行绘画的?是一笔一笔地勾勒轮廓,然后再上色精修,然后得到一副完美的画作吗?
No No No。
它采取了一种非常独特的思路------扩散 Diffusion,这个词比较难以理解,我想了一个通俗的案例,那就是我们经常使用的马赛克。
日常中,发朋友圈或者其他方式分享时,有张图片很喜欢,但是其中有一些部分涉及一些隐秘,不想让别人看,我们就会打上马赛克,这些部分就由此变得模糊不清。
如果有一张模糊不清的图片,我们给予一些提示,正如一千个读者就有一千个哈姆雷特,那每个人对这个模糊区域的想象是不同的,如果把每个人的想象复现为真实图像,就会得到与原图不同表现的千万张图片。
Diffusion 就是这样的工作原理,在图像的生成过程中,不断地迭代加入噪声或一些随机性信息,也就是进行马赛克,同时每一次噪声的迭代只与上一次的状态相关联,也就是说形成一段随机的加噪链条。
然后迭代去噪,在这个过程中,AI 就是万千的我们,根据关键词和它们所学习的知识,不断地进行联想,进行去噪,图像变得越来越清晰和逼真。
以后再想起 AI 绘画,你就可以简单地理解为马赛克的加密和解密过程,至于细节如何实现,有兴趣可以去深究一下,没兴趣,了解这么多就够了。
模型是什么
学到这里,我不由就产生了新的问题,最基础的文生图,我输入的都是文字啊,何来图像之说,那有何来马赛克之说?
好问题,AI 怎么知道你描述的是什么,又是如何转化为图像的那?
模型,AI 绘画的底层本质是一个图像模型,摸不着头脑,嘛玩意。
要是想彻底说清楚它,我估计三天三夜都不一定够。
还是再举一个例子吧,神经网络大家我想都不陌生,CNN,RNN,Transformer 等多了去了,它们其实就是一个结构,那它们是怎么具备人工智能的那?
练它,练它,它们也需要学习,这个学习过程叫做训练,图像模型就是这样一种模式,假设我是它的训练师,大致就是这样的一个训练过程。
- 来来来,图像模型你坐好,上课了,严肃点
- 我拿出一个狗的照片,跟我念,这是狗
- 我再拿出一个猫的照片,这是猫
- 图像模型若有所思,眼神中全是清澈的愚蠢
- 我再次拿出另一张狗的图片,图像啊,你说这是啥?
- 图像回答是狗,我松一口气,没白教,这个算学会了
- 猫,你说这是猫,我气晕了,回炉真得回炉,这是狗,记住,好好记住
- 就在我和图像模型的反复拉扯中,它就会逐渐建立起猫、狗和对应图像的联系,然后它还具备对猫、狗的判断能力
- 这就是所谓的图像模型
图像模型经过的无数类别的对应训练,它就构建了一张庞大的文本到图像的对应关系。当我输入狗时,它脑海中就会出现无数狗的印象,这是一个很笼统的狗,这也就是最初的马赛克图像。
Stable Diffusion
原理其实并不难,但将这个原理付诸于现实,推广使用,就是一个非常艰难的论题,Stable Diffusion 完整的实现了这个流程,并将其开源,由此我们便迎来了 AI 绘画的元年,我只能说配享太庙。
二、基本使用
了解完基础原理后,我相信你已经成功构建起 AI 绘画的基本概念,那么估计已经迫不及待的开始 AI 绘画之旅了。
开源的魅力就在于它的无限可能,AUTOMATIC1111大佬为 Stable Diffusion 开发了一套 Webui 页面,通过简单的网页交互操作,就可以轻松实现 AI 绘画。Webui 大幅度降低了使用门槛,这也是今年 AI 绘画的爆发的有力推动者之一。
环境配置
环境配置这里我就不详细讲解了,目前社区内已经有广泛的配置细节,这里我讲一些比较省事省力的方法
AI 绘画对于设备的要求还是蛮高的,嗯,挺高的,很多朋友的电脑其实未必能吃得住 AI 绘画,因此就需要一个在线的 AI 绘画平台,对于这种情况,就有两种解决方案,我最推荐下面的几类方案
- 方案一:自己搭建
- colab 搭建方法,这是借助 Google Colab 平台搭建,不需要花钱,但是空间容量很小,只能进行一些比较简单的体验,具体搭建教程。
- 方案二:免部署
- liblib 免费的,支持在线生图,也非常繁荣,模型和 lora 都很多,用起来特别方便。缺点就是每天只有 300 能量值,一般情况是用不完的,因为需要排队,火的模型排队有点小长。此外就是它不支持额外插件扩展,只能用官方提供的默认。
- megaEage,一个付费的在线免部署平台,平台内部集成了环境,一键式部署,价格也相对比较便宜,Webui 一小时 5 毛左右,可以比较自由的扩展,缺点就是花钱。
如果电脑的性能足够的话,可以在本地配置环境,那样的话我强烈推荐秋叶佛祖的整合包,一键式安装,摒弃复杂的环境配置流程。
基本页面介绍
webui 启动后,就类似于上图,由于我已经安装了很多扩展插件,可能与你的存在一些差异,但是整体模块是类似的。
- Stable Diffusion 模型: 生图所使用的图像模型
- Vae: 影响画面的色彩和质感,可以理解为一个调色滤镜,理解为拍照时用的那个滤镜
- 功能栏:文生图、图生图或者一些其他扩展
- Prompt: 提示词,分为 Positive 和 Negative,通俗理解就是你想要 AI 画的和不想让它画的
- Params: 控制参数,生成图像中所需的一些参数
- Steps 迭代步数,也就是打马赛克的轮数
- Sampler Methods 采样方法,这个后面我会详细的带大家体验一番
- ...
三、绘画核心三要素
了解到基本页面后,我们就可以开始第一张 AI 的绘画了。经过我一阶段的 AI 马良之旅,AI 绘画在我看来有三大核心要素:模型+提示词+参数。另外额外的一些扩展,可以算是核心外的锦上添花,把握住核心,就能完成一些不错的绘图。
模型
Stable Diffusion 模型其实官方提供了几款基本模型,但是在日常的绘画中,我很少使用。很简单的道理,Stable Diffusion 就像一个世界语言词典,囊括世界上所有的词汇,咱们汉语是母语,遇到不会的,世界语言词典肯定能查到,但是怎么能比的过使用汉语词典去查,来得简单和精确那。
Stable Diffusion 官方提供的模型就是类似的原理,它们足够包容,全面,但是它们的专精性不够强,例如我就像画猫狗,我便倾向于侧重于猫狗的图像模型;我画人像,我便倾向于人像。于是,开源的小伙伴们,就在 Stable Diffusion 官方的基础模型(也可以称作底模)上进行了无数微调,私炉训练,由此产生了现在模型万花筒般的盛况。
那么问题来了,我们该如何获取模型那?
下面我先推荐几个不错的模型社区,然后分享几款我特别喜欢的模型。
上面三款应该足以满足大多数 AI 炼丹师的需求了,尤其是 C 站,那真的是繁荣,各类资源丰富,就是需要科学上网,如果综合考虑,我还是推荐 liblib,下载速度和模型数量都足够抗打,而且更偏向于国人的审美。
在推荐模型之前,有句话希望大家可以有个概念,别被繁杂的模型弄晕了:模型本质没有优劣之分,只不过有些模型好评度比较高。
- 二次元类
- anything V5(*)
- ReVAnimated_v122(*)
- counterfeit V2.5
- dreamlike diffusion
- 写实类
- majicMIX realistic(*)
- Deliberate
- LEOSAM HelloWorld 新世界 | SDXL 真实感大模型
- Realistic Vision
- dreamshaper_8(*)
- 2.5D 类
- Never Ending Dream
- Protogen
- 国风 3
- 3D 可爱化
- IP DESIGN
- 三维 IP 效果模型
模型如海一般,每天又在频繁的制造 ing,大家选用自己喜欢的即可,我就不详细的写模型的推荐理由了,只标记了几款我最常用的,通过链接点进去,都会有模型的详细介绍和返图区,风格、画风比较容易判断。
prompt 如何写
关键词是门学问,还记得 ChatGpt 刚出现时,网络上出现一种 prompt develop 的岗位,专门来帮助设计 prompt,当时还有些不屑一顾,后来开始 AI 绘画时,才发现 prompt 刚上来是真有些摸不着头脑。
此外经过一段时间的学习,我总结了一些 prompt 的使用经验,我称为三大法宝:
法宝一:分类 prompt
- 标准化提示词,这些通常是固定的,画质建议每次都写上,画风则根据风格发生相应变化
- 画质提示词
- 高画质: best quality,masterpiece.hires,8k,ultra-detailed
- 高分辨率: extremely detailed CG, unity 8k wallpaper, unreal engine rendered
- 画风提示词
- 插画风格: painting, illustration, paintbrush
- 写实风格: relistic, photorelistic
- 二次元: anime, comic
- 辅助提示词: 辅助提示词来界定绘制的场景信息
- 场景特征
- 室内、室外 indoor/outdoor
- 场景的类型 forest、city、street
- 小的细节 tree、cloud、flower
- 环境、光照
- 时段: morning、sunset、day/night
- 光线: sunlight、bright
- 天空: blue sky
- 画幅视角 - 距离 close-up、distant - 人物比例 full body、upper body - 观察视角 from above,view of back - 镜头类型 wide angle、Sony A7 III
- 内容提示词: 内容型提示词是每次需要核心绘制的内容,这个就没有明确的划分,想绘制什么内容就写什么
因此我推荐在写 prompt 时,按照分类顺序来写,这样编写的 prompt 逻辑更好,修改起来也更不容易混淆。
法宝二: prompt 插件
关于 prompt 方面,有三个插件我是特别大力强烈推荐的,分别是
- sd-webui-tagcomplete 可以实现自动补全,默认支持英文,中文需要添加相对应词库
- prompt-all-in-one 支持自动中文转英文、一键转英文、将 prompt 中的所有提示词按照 tag 展开,可以实现快速修改权重、收藏常用提示词等。
- oldsix-prompt 懒人福音,上面的插件只是降低了 prompt 的编写难度,而这个插件直接集成了多个分类的上千个提示词,而且还是中文的,只需要点击选择就可以实现 prompt 编写了。tql。
对于每个插件,都有一些更细节,更高级的配置,这里我就不详细解释,网上都有非常多的教程。
法宝三: 拿来主义
C 站、liblib 每个模型都有返图区,返图区的某些图像会带有相对应的生成参数,我们可以直接借鉴。
除此之外,再给大家提供几个我常用的抄作业网站,生成好看绘图前,保证让你挑花眼。
其他注意
除了提示词写法外,还有两点需要补充
- 提示词权重:提示词是存在权重的,可以通过增加或者降低提示词权重来控制生成细节,具体写法是
(prompt:weight)
,如果不写 weight,默认一层括号为 1.1 权重,写了以 weight 为主 - 负面提示词:负面提示词相较于没有那么关键,可以一套用到黑,这里就附上我常用的一套,每次生图对应填写到 negative prompt 即可。
scss
NSFW, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)),((grayscale)), skin spots, acnes, skin blemishes, age spot, (ugly:1.331), (duplicate:1.331), (morbid:1.21), (mutilated:1.21), (tranny:1.331), mutated hands, (poorly drawn hands:1.5), blurry, (bad anatomy:1.21), (bad proportions:1.331), extra limbs, (disfigured:1.331), (missing arms:1.331), (extra legs:1.331), (fused fingers:1.5), (too many fingers:1.5), (unclear eyes:1.331), lowers, bad hands, missing fingers, extra digit,bad hands, missing fingers, (((extra arms and legs))),
参数
- 提示词相关性(CFG):这个很好理解,就是书写的 prompt 对绘图中内容的影响程度,一般不会修改,默认 7 就可以。如果你感觉生成图像像没有很好的反映提示词,可以修改 prompt 或者适当增大 CFG。
- Seed: 种子是稳定扩散产生噪声的数字。计算机中的随机都是伪随机,大家应该都听过这句话,Stable Diffusion 中的噪声生成也并非随机,每次它都是源于一个随机种子,即 seed,也就说,只要 seed 不改变,对应的生成噪声的方式也不会改变。固定了 seed,就相当于固定了整个生图过程,从而可以实现图像的复现。
- Sampler Method: 在 sd 中,采样方法有一大堆,但其实我们只会使用其中的几种,这里总结一下它们的常用场景。
- 快速生成质量不错的图: 建议选择 DPM++ 2M Karras(写实风格我也比较推荐它)
- 高质量的图: DPM++ SDE Karras 、DDIM
- 简单的图: 建议选择 Euler a
- 极速生图: LCM,此种情况下,迭代步数建议 3~5
- Sampling Step: 推荐 20
40 之间,正常来说,越大,细节越丰富,但消耗时间会相应增加,文生图我一般推荐 2030,图生图推荐 30~40。此外,Step 也受相对应的采样方法影响。 - 高分辨率修复(文生图),可以放大图像, 本质上相当于进行了将文生图的结果一次图生图
- Denoising 重绘幅度(图生图),类似于 CFG,图像被修改的幅度,推荐 0.3~0.7。
后续不同参数的效果会在后面做案例比较,大家这里先有一个概念。
四、文生图
掌握核心三要素后,就可以开启文生图的旅程了,后续的案例我都将按照下面的模式来注明所用的指标。
如果你想复现我的图,一定要铭记"模型+提示词+参数"全部相同,其中 seed 最为关键,没特别声明的为默认值。
vbnet
Model: Anything V5/V3
Positive: masterpiece,best quality,4k,realistic,1girl,solo,long hair,looking at viewer,bangs,white hair,parted lips,upper body,simple background,dress,from side,(blue eyes:1.2),
Negative: (worst quality, low quality:1.4),negative_hand Negative Embedding,verybadimagenegative_v1.3,2girls,nsfw:1.4,bad anatomy,bad hands,cropped,missing fingers,too many fingers,missing arms,long neck,Humpbacked,deformed,disfigured,poorly drawn face,distorted face,mutation,mutated,extra limb,ugly,poorly drawn hands,missing limb,floating limbs,disconnected limbs,malformed hands,out of focus,long body,missing toes,too many toes,monochrome,symbol,text,logo,door frame,window frame,mirror frame,
Sampler Method: Euler a
Sampling Steps: 20
Seed: 520684962
width*height: 512*768
如果你按照我的步骤来了一遍,那么你应该得到的是下面这个小姐姐,是不是挺简单的,不知不觉,你已经成功地完成第一张绘制了。
文生图就是这么简单,朴素无华,只要写好提示词,就可以绘制出大千世界的任何景色。
但这远不是文生图的真正强大,它的魅力还远远不止这些。例如我为此添加一个 lora: 扁平像素风,设置权重 0.8,小姐姐风格瞬间就被改变了,是不是很神奇,AI 绘画的世界大着那,Lora 是什么,具体先不用深入理解,后续咱们一步一步来。
但是此时如果取消传入的 Seed,再点击生成,你会就发现,每次生成,得到的绘图是天差地别的,AI 画师也形象把这个过程比作抽卡。那么问题就来了,抽卡通常就意味着低效,大家应该都被抽卡概率荼毒过,学到这里你可能会怀疑 AI 商业的可能性?别急,等我慢慢道来。
五、图生图
图生图说到底也并不复杂,相较于文生图枯燥的文字提示,它只是添加了更为直接的提示------图片信息,也就是所谓的垫图,其余都是一样的。
真人漫画风
文生图我们不是生成一张扁平肖像风小姐姐吗?这里咱们把这个汉服小姐姐扁平像素风一番,这也就是真人动漫风的一种。
我们把文生图所用的参数都同步到图生图中,注意修改一下生成图像的尺寸,图生图会以传入的图像作为基准,上面小姐姐像素为 1200*2048
,如果不修改尺寸,依旧按照 512*768
,生成图像就会被压缩。
1200*2048
这个分辨率有些过大,太考验显卡性能,咱们等比缩放一下,使用600*1024
,重绘幅度,保持默认。
使用了文生图的提示词,汉服小姐姐的很多行为被修改了
- 头发颜色使用黑色
- 服装想用汉服
- 头发扎的方式-盘发
- 注视屏幕-侧着身子
对应修改一下 positive prompt,如下:
css
masterpiece, best quality, 4k, realistic,
1girl, solo, bangs, parted lips, upper body, simple background,
Wearing Hanfu, from side, (blue eyes:1.2), updo, Side by side
绘制的图像是不是更接近我们的想法了,如果依旧感觉不足,可以继续调整提示词。
比如我想要东方传统青花瓷风格的衣服,那就可以再添加一个 Lora:东方魅力系列-青花瓷风,权重依旧设置为 0.8
青花瓷的感觉已经上来了,但是它也带来了负面作用,那就是发色、整体画风受到了非常大的影响,权重有些大,降至 0.4。整体就有比较清晰的回调,当然,你也可以继续调整,辅助于其他的 Lora 和 prompt。
重绘幅度
依照上面这个案例,我们来测试一下重绘幅度的影响,加深对此的认识。
重绘幅度位于 0.10.3 之间,图像的改变其实并不是特别大(画风的改变是 Lora 影响的),而 0.80.9 背景已经没有,原图也变动很大,因此我比较推荐 0.3~0.8,在这个区间,一方面尽可能保留了原图特征,还给了 AI 足够的发挥空间。
但小的重绘幅度也有妙用,比如你想做一个赛博 Coser,既然是 Coser,你总不想出来的效果完全不像你吧。
赛博 Coser
赛博 Coser 是今年上半年,一个 B 站 Up 主制作了一组以自己为原型的赛博 Coser,上传到 B 站时,被官方分类到了 Coser 类,官方都没审核出来,可见这组绘图的质感。此事一出,在国内外的 Coser 圈和设计圈引起了轩然大波,人们由此开始重新思考 AI 绘画的魅力。
less
model: majicMIX realistic 麦橘写实_v7
positive prompt:
(cybermech bodysuit:1.2),((Cyberpunk)),full armor,city skyline,(fluttering cloak:1.3),(white armor, gold trim, paladin), mechanical parts, (robot joints), single mechanical arm,(hair flying:1.2),mechanical prosthetics, (intricate mechanical bodysuit),(cyborg, mecha:1.2)
masterpiece,best quality,full details,Super clear details
futuristic, technological, science fiction, liquid metal, metal texture,
cinematic lighting, weird lighting, rim light, natural light, slight film grain, Bright cinematic lighting, Global lighting, clear shadows, Bright cinematic lighting,
negative positive: ng_deepnegative_v1_75t,badhandv4,(worst quality:2),(low quality:2),(normal quality:2),lowres,bad anatomy,bad hands,normal quality,((monochrome)),((grayscale))
Sampler Method: DPM++ 2M Karras
Sampling Steps: 30
ImageSize: 512*1024
CFG Scale: 10
Denoising: 0.60
seed: 4019293404 | 3515564825
如果有兴趣也可以读一下我写的 prompt,主要就是写了一些赛博朋克风格、科幻风格的背景和衣服。
另外有一个比较值得注意的点,除了降低重绘幅度外,我还拉高了 CFG 的大小,这是为了更大程度上模拟赛博朋克风格,同时尽可能保持脸部和身形的还原度。最后的结果大约就是下面这样。
如果感觉赛博朋克的风格不够显著,也可以加入相对应的 Lora,例如赛博朋克风格 V2.0,风格类权重不要设置太大,0.4~0.6 就好,这里咱们设置 0.4。
图生图的案例还有很多,记住其生成核心即可:利用图片提供更多的信息,相当于垫图。但你是否发现一个问题,我们已经提供了图片信息,还是要写一大堆 prompt,而且还不能保证生成效果,这有点让人难受。
那有没有解决方案呢?有,还有两种,一种便是 Lora,另一种是前段时间刚推出的 ip-adapter,后面我都会慢慢介绍。
六、Lora
基础知识
上文中反复使用了多种 Lora,但是我并没有告诉你它是什么?现在咱们来揭开它的面纱。
训练图像模型的时候,我举过让他辨别猫狗的案例,那么现在问题来了,我现在要求提升了,我现在要求画一只柯基。
它认识柯基吗?它不认识,不信咱们试试。不应该这么武断,应该说它的认识不够精确。
less
model: majicMIX realistic7
positive prompt: (masterpiece:1.2), best quality, realistic,
A corgi dog, humorous, beautiful colorful background,
negative prompt: easynegative,(((pubic))), ((((pubic_hair)))),sketch, duplicate, ugly, huge eyes, text, logo, monochrome, worst face, (bad and mutated hands:1.3), (worst quality:2.0), (low quality:2.0), (blurry:2.0), horror, geometry, (bad hands), (missing fingers), multiple limbs, bad anatomy, (interlocked fingers:1.2), Ugly Fingers, (extra digit and hands and fingers and legs and arms:1.4), crown braid, ((2girl)), (deformed fingers:1.2), (long fingers:1.2),succubus wings,horn,succubus horn,succubus hairstyle,girl,
Sampler method: DDIM
Sampling Steps: 30
距离咱们日常中的柯基是不是相差甚远,这是因为 AI 在训练时,虽然可能接收了部分柯基图片,但是通常只会占据一小部分,它们没法建立起特别精确的对应关系。
这时候就产生了两种解决方案:
- 更精准的描绘柯基,帮助 AI 进一步筛选,这个调试过程可能会很麻烦
- 使用 Lora,你不用按照定义去理解它,它就是针对特定场景的一种特训方案,例如动物模型丨柯基 MG_CORGI它就是使用柯基训练的,SD 模型拿到它,就可以清晰的捕捉到柯基的对应图像。
柯基的感觉是不是直接溢出屏幕了,没有添加任何的提示词,加入一个Lora就可以实现柯基效果。
模型是对 SD 底模的微调,Lora 则是针对特定场景的特训,不管谁来了,你就这么理解,就是相当于查字典,本来你使用提示词,需要告诉字典第几章第几部分第几个,Lora 就相当于书签,直接定位到所查单词。
Lora 使用
Lora 使用有三种,我比较推荐我介绍的这种,在 Webui 界面中,有一个工具栏,点击 Lora 选项,就可以罗列出所有的 Lora。如果没有这个工具栏,在生成按钮下面,会有一个小按钮,叫隐藏/显示扩展模型,点击一下,就可以出现。
进入 Lora 工具栏后,点击的 Lora 会默认填写到 Positive Prompt 中,格式为<lora:loraName:1>
,默认权重默认为 1。
Lora 分类
Lora 相较于模型,它更容易训练,体积更小,能完成我们心中的特定场景、人物中,我时常称其为 AI 绘画中的明珠,如何能用好它呐,我认为需要在心中对 Lora 有一个大致的分类,不同的分类权重设置有所不同。
- 人物/动物 Lora,推荐权重 0.6~0.8
- 画风 Lora,推荐权重 0.2~0.4,画风对于画面的影响非常大,所以一般使用比较小的参数。
- 概念 Lora,这些 Lora 通常形容一个概念,或一个场景,也不宜太大。例如原神中抽卡,既有人物,也有复杂背景这种。
- 服饰类 Lora,视情况而定,0.6~0.8
- 特定元素 Lora,头盔、项链等一些装饰品
Lora 可以同时使用多个,但注意有些 Lora 可能会存在冲突,这个生图的时候需要注意一下。下面推荐一个案例,使用了画风和概念 Lora,大家有兴趣可以去尝试一番
yaml
model: XXMix_9realistic_v4.0 v4.0,
positive prompt: masterpiece, best quality, 8k, cinematic light, ultra high res, (full body:1.2), 1girl, look up, full body, Black hair, blue eyes, full body, chibi, snow,
Negative prompt: EasyNegative, badhandv4, (worst quality, low quality:1.3), logo, watermark, signature, text
Steps: 25,
Size: 512x1024,
Seed: 1389480785,
Lora1: 3D渲染风格 | 3D Render Style v1.0,
Lora2: Q版角色-- niji风格卡哇伊 v1.0,
Sampler: DPM++ 2M Karras,
CFG scale: 7
大约是这种效果:
七、ControlNet
上面的案例,为了保证你生成的效果与我保持一致,我推荐固定 seed。但是在日常我们的绘画过程中,需要大批量的生图,最后再挑出一张心仪的,作为绘制成果。
在这个大批量绘制的过程中,你会发生,牛鬼蛇神,各种姿态,各种布置都会出现,这是由于 AI 绘图是基于扩散模型,生成过程充满了随机性,难以控制。
随机也就意味着低效,那我就需要重新评估它的商业价值了。
ControlNet 就是针对于这些场景而出现的,中文叫控制网,本质是对大模型做微调的额外网络,根据一些额外信息控制扩散生成走向。
ControlNet 提供了很多提取额外信息的方式,例如 openpose 提取姿势信息,canny 提取边缘信息,在后续中,我不会详细的讲解每个到底是怎么使用的,下面主要围绕案例展开。
Controlnet 位于参数的下面,框起来的是核心部分,支持多种 ControlNet 同时使用,推荐开启完美像素模式,如果设备显卡有限,可以开启低显存模式。
控制权重类似于 CFG、Deoising,代表提取的控制信息对生图的影响比例,后面的介入时机和终止时机表示这些控制信息什么时候参与到噪声生成。举个好理解的例子,例如 Step 为 20 步,0.2 就可以理解为从第 4 步参与。
模特换装|背景
模特换装|背景这是电商中非常热门的应用之一,它的核心便是借助于图生图的蒙版重绘。
蒙版的设计可以借助 PS,但如果不会 PS,也没关系,webui 中存有webui-rembg插件,安装该插件后,在顶部菜单栏的后期处理中,就会有生成蒙版的功能。按照下面截图操作,点击生成,就可以获得蒙版。
然后传入到图生图的蒙版绘制,蒙版默认重绘白色区域,但可以选择重绘蒙版内容,实现倒置。
其余的参数,建议按照我所使用的
- 蒙版内容区域建议选择 原版,如果生成后的图像蒙版接壤处有些模糊,也可以使用填充
- 重绘区域建议选择 整张图片,否则可能会出现非常奇怪的东西,但其实约束了也会出现特别奇怪的。。。
下面来看一个例子,首先把背景换成圣诞风格,我随便写了一组比较简单的关键词。
less
model: dreamshaper 8
positive prompt: christmas background,(christmas_tree:1.1),christmas light,beautiful lighting,christmas present,fireworks,(no human:1.5),christmas scene,realistic,(no hand:1.1),
negative prompt: ng_deepnegative_v1_75t,badhandv4,(worst quality:2),(low quality:2),(normal quality:2),lowres,bad anatomy,bad hands,normal quality,((monochrome)),((grayscale)),
Step: 30
Sampler Method: DPM++ 2S karras
蒙版区域填充/原版都可以
蒙版边缘模糊度 2
重绘区域整张图片
然后你就有可能会看到惊悚的一幕,生成的图像中多出了两只手,即使我在 prompt 中进行了约束((no human:1.5),(no hand:1.1)
),但是依旧还是出现多余肢体的问题。
网上很多教程并没有提出对此的解决方案,这其实算是蒙版重绘目前存在的弊端,确实不好解决。其一它还不够智能,我们使用的蒙版,右手被身体遮盖了,它就会尝试去补全;其二咱们制作的蒙版边缘应该存在一些空隙,可能会好一些。
那该怎么解决那?我经过一系列的尝试,Controlnet 可以有效地解决这一问题。
- openpose 可以提取图片中人物的姿态,支持身体、手指以及面部等各部位,下面展示的是最完善的所有部分提取,即 openpose-full。
提取越多信息,openpose 所用时长越久,这里咱们不需要面部表情,因此选用 openpose-hand 就可以,有了它,我们就可以控制小姐姐的身体和手指的整体姿态。但是光有它是不够的,姿态只能提供平面信息,无法提供深度位置信息,小姐姐的右手是被遮挡住了,因此我们需要添加额外的 Controlnet。
- depth
在人像的生成中,depth 通常可以用来提供深度信息的辅助,因此其权重通常设置比较小,0.2~0.4 左右,同时引导时机也要相应调整,否则生成的人像会非常突兀。depth 推荐使用 depth leres++预处理器,下面是我使用的参数和深度图,深度图中颜色的深浅便是其中部分距离我们的远近,也就是距离深度信息。
depth 可以提供深度信息,其实它最大的发挥空间是建筑、布局等诸多领域。
多生成几次,你就可以发现,在 openpose + depth 的双重控制下,多余肢体出现的情形就会非常少。openpose 和 depth 是一组常用的控制网搭配,在人像绘制中可以起到很好的互补作用。
这个案例因为是一个长图,可供渲染的背景区比较少,更换背景的效果没有那么明显,主要目的是为了记录在蒙版重绘过程中遇到的问题和解决方案,如果想要更明显的背景切换感,可以换成横屏图或者缩小人像的占比。
下面我们来尝试进行模特换装,从背景中提取人像,我们用 webui 插件实现了,衣服的提取也可以用 webui 插件实现,是不是感觉好强,打倒 PS 就在今日。
这个插件叫inpaint-anything,安装之后,会在顶部菜单栏多一个 Inpaint Anything 标签页。
截图中提供了使用的大致步骤,模型推荐使用 sam_vit_l_0b3195.pth
,这个生成会有些慢,需要等一会,然后再右边就可以得到场景中每一个部分的切片,想要那部分蒙版,用画笔在上面勾勒一下,就可以获取对应蒙版,这个插件可以允许你提取图像中的任何部分,而且效果还是特别不错的。
得到蒙版后,更换衣服的方法与更换背景类似,这里就不做赘述。
文字风暴
基于扩散的机制,虽说可以产生无限的可能,但是在某些情形下,它也有很多的不足,例如早期 AI 画手,就是因为扩散的机制,导致出来的手千奇百怪。除了手,另外一个最典型的就是文字,AI 写出的文字也和早期的手一般,歪曲,乱七八糟。
如果想绘制不变形的文字,或者在文字的基础上在做一番尝试,也需要借助 Controlnet 来做。这是我随手在 Word 中写的两个字------冬至,我想以此为基准,创建一个带有冬至的海报。
给它一组参数,扔了图生图里面去。
less
model: revAnimated_v122
positive prompt: in winter,snowfield,snow,ice,(snowflakes:0.9),landscape,waterpark,
negative prompt: EasyNegative,fog,nsfw,nude,(badhandv4:1.2),(Style-Japan:1.2),(easynegative),verybadimagenegative_v1.3,deformation),Paintings,sketches,(worst quality, low quality, normal quality:1.7),lowres,blurry,text,logo,((monochrome)),((grayscale)),skin spots,acnes,skin blemishes,age spot,strabismus,wrong finger,lowres,bad anatomy,bad hands,text,error,missing fingers,extra digit,fewer digits,cropped,wort quality,low quality,normal quality,jpeg artifacts,signature,watermark,username,blurry,bad feet,(worst quality, low quality:1.4),nsfw,
Sampler Method: DPM++ 2M Karras
Steps: 30
结果我就不展示了,因为你会得到一些奇奇怪怪的展示。如果我再给 AI 些提示,例如加上poster style,the "冬至" is written in the middle,
,额,结果怎么说那,又臭又硬。
Controlnet 出手,对于这种需要比较精准的提取轮廓信息,Controlnet 中有很多种,例如 canny 边缘监测、softedge 柔性边缘、Scribble 涂鸦都是可以的,canny 最较真一些,后面两者相对更柔和一些,对于信息的把控没有那么严格,如果你想要 AI 更天马行空一些,可以使用后面;如果更多的精度,canny 最合适。下面就是分别对冬至两个字的 controlnet 预览效果,可以看到,从 canny -> softedge -> scribble,对边缘的提取越来越柔和,AI 的发挥空间越来越大
下面两图分别使用 scribble 和 canny 生成的,我没有使用太复杂的提示词,加上了几个 Lora,效果就挺不错的。
艺术二维码
艺术二维码也算是在抖音盛极一时,那时候我记得抖音总会推相应的广告或者视频,甚至现在咸鱼上还有好多售卖艺术二维码的,我不信这个邪,让我来看看怎么个事。二维码其实是通过定位点和黑白之间的明暗关系来识别的。因此我们只需要尽可能地还原二维码中的关键定位点,同时增加明暗关系,然后借助文生图的方式,是不是就可以实现艺术二维码。
当然这种方式不是我发明的,是神通广大的网友发明的,我只是其中的实践者。
那我们就按照上面的思路来:
- 抓住关键定位点和轮廓信息,这点 qrcode_monster 可以解决
- 提升信息间明暗度,这点 brighness 可以解决
边边角角的融合度通常是较难的,经过我反复体验,AI 更喜欢圆滑的曲线,因此咱们首先使用 QR Toolkit 插件进行二维码改造,改造的模式建议使用我下面的方案,经过测试,融合度最好。
改造完二维码后,一定要用手机扫一下,如果不成功,修改一下 seed,但是别指望长按识别,等会你会见证奇迹。
qrcode 权重关乎到二维码的还原度,通常在 1~1.2
以上,但是据我经验,最好开始不要拉太大,1 即可,后续慢慢调整。brightness 是提供明暗辅助信息,因此权重要小,0.30.5 之间就好,引导时机也要拉小,0.30.8 之间,最开始我都设置 0.65~0.8。
然后写上提示词,就可以进行艺术二维码的创作了。
vbnet
model: RevAnimated
positive: ((Masterpiece, best quality, edge quality)),edgie,landscape,fairies,There is a coconut tree on an isolated island,and a group of fairies live on it,drawn in edgFae style,wearing edge,cloud,the sky,sea mew,
seed: 2702996596
negative prompt: (worst quality, low quality:1.4),negative_hand Negative Embedding,verybadimagenegative_v1.3,2girls,nsfw:1.4,bad anatomy,bad hands,cropped,missing fingers,too many fingers,missing arms,long neck,Humpbacked,deformed,disfigured,poorly drawn face,distorted face,mutation,mutated,extra limb,ugly,poorly drawn hands,missing limb,floating limbs,disconnected limbs,malformed hands,out of focus,long body,missing toes,too many toes,monochrome,symbol,text,logo,door frame,window frame,mirror frame
qrcode 1.0 0~1
controlnet brightness 0.35 0.65~0.83
下面就是我随手创建的一张,既可以扫描,也可以长按识别。当然你也可以继续丰富提示词,让画面更加的精美。
艺术二维码的生成难度主要在于调试上,一般有两种情形
- 生成图像直接扫不出来,那建议拉大 qrcode 权重,或者更换种子
- 生成图像能扫出来,却没法长按识别,建议拉大引导时机,如果还不行,建议换种子
把握住这两点,慢慢的你就可以调控出属于自己的 AI 艺术二维码。
海报绘制
Canny 的效果其实可以做很有意思的操作,前段时间,我在 B 站看到一个海报的生成模式。它是这样一种生产方式,我认为还是挺科学的。
- 首先在 PS 中搭建一个基础场景,然后传入文生图,使用 canny 进行控制。canny 的阈值根据自己所需来设置,由于我想要丰满草地细节,因此选择了默认。
- 提示词参数
vbnet
model: RevAnimated
positive prompt: a bottle of milk,preventing smashing on the grass,put it on the grass,green grassland,how many cows are there on the grass,cow,there is a stream in front of the grassland,clear river water,hills,sky,sunlight,available light,nature,landscape,highres,
nagetive prompt: NSFW,text,blurry,low quality,bad anatomy,lowres,monochrome,worstquality,watermark,bad proportions,out of focus,
Sampler Steps: 30
Sampler Method: DPM++ 2M Karras(偏写实)
Controlnet: canny 100~200
540*960
seed: 3493080894
- 加入草场 Lora,别设置太高的权重,使草场更生动
- 使用 ControlNet Tile + 脚本进行放大,得到高清图像
- 最后再去 PS 精修,替换掉中间经过生成变动很大的牛奶
以 AI 绘制掌控整体的大背景,然后再借助 PS 修改小细节,这样的融合度和画面的呈现都都会好特别多,一种不错的海报制作方式,记录一下。
Ip-Adapter
Ip-Adapter 是今年刚出的一个 ControlNet,它的效果让我惊喜,也让我恐惧,AI 进化的速度超乎我的想象。
Ip-Adapter 你不用知道它的原理,你就知道它能非常完善的提取图像的画风,提出的还原度超级高。
例如下面的案例,我甚至都不用写 prompt,只需要配置上 Ip-Adapter 和 canny,前者提供风格,后者提供内容,一键复刻,内容就和风格完美统一。
yaml
Model: majicmixRealistic_v7
Steps: 20
Sampler: DPM++ 2M Karras
CFG scale: 7
Seed: 745903371
Size: 640x1136
ControlNet 0: ip-adapter, Weight: 1, Guidance Start: 0.2, Guidance End: 0.8
ControlNet 1: canny, Weight: 0.75, Guidance Start: 0, Guidance End: 1,
ControlNet 2: depth_midas, Weight: 0.3, Guidance Start: 0.3, Guidance End: 0.65
除了人像风格的融合,在建筑设计领域,我感受到了 ip-adapter 深深的潜力,一套线稿,我可以随便拿风格来套,这不就是云装修吗?
当然也可以书写提示词,能帮助 AI 绘图更好的划定重点。
AI 绘画总结与预测
经过半年多对 AI 绘画的体验,有了好多感想,也有了几丝惧怕,AI 的时代就这样一步一步地靠近我们,不日必将石破天惊。同时也让我想到了闲鱼上很多售卖 AI 绘画的商家,其实大多都是特别简单的原理,如果你不了解,很容易被唬住,AI 没有那么难,而且它会越来越便利,因此,学起来吧,扬帆起航,美好的就在不远处。不会画画的你,也可以成为马良。
以最近比较重大的更新入手,来预测 24 年 AI 绘画走向。
- LCM 采样方法的提出,出图速度飙升,五步成图;无独有偶,前段时间 TensorRT 发布,出图快 3-4 倍。
- Ip-Adapter ControlNet 的推行,画风轻松移植,甚至无需 Prompt 和多余 Lora
- AnimateDiffV3 发布,更优质的 AI 视频体验,效果更优
- SD XL 发布,Prompt 更简单,生成效果更好
AI 绘画在飞速发展的 2023 年,展现出两大特点:
- 更高的效率,提高模型运转的效率,降低对算力需求
- 更简单的操作,对参数的依赖越来越少,操作越来越简单的
在 2024 年,我认为有几大趋势:
- 模型的进一步压缩,减少模型的参数数量来降低计算和内存需求;算法进一步提升,1s 出图不是梦
- AI 绘画过程进一步简化,不在局限于复杂的 Prompt,更具个性化创作
- comfyui 流程简化,正式成为生图或者视频的极佳工具
- AI 生成视频不断进步,一火冲天
- AI 与虚拟现实和增强现实,3D 可视化等技术进一步融合
如果是 2023 是绘画元年,2024 我相信会是视频元年,全民绘画元年。拥抱 AI,就是在拥抱未来的机会。