翻译:
@Hazel
原文链接:https://iway.org/stable-diffusion-drawing-problems-and-fixes/
大家应该在Stable Diffusion人像绘画的时候经常出现那些让人掉SAN的内容,比如两个头,手指变形,多个手,那么碰到这些问题要如何解决呢? #
一、双头 #
一般来说双头的问题,大概率是图像比例不对导致的,比如1:2的纵向图。任何可能不是1:1 长宽比的图像尺寸都有可能合成可怕的两个头像。
为什么会出现这样的问题呢?这要从stable diffusion的底层训练集说起,stable diffusion V1.5的版本其实是基于512×512图像上进行微调的,生成大于512×512的图像可能会导致重复的物体。 #
那如何解决这些情况呢,有以下几种办法: #
1、多抽卡 #
生成很多图,然后把双头的丢掉,最直接的办法,但是吧,很浪费时间,如果是买的算力,也很浪费钱。 #
2、降低长宽比 #
比例越接近1:1 ,遇到双头的概率越小。 #
#
3、生成全身照 #
(然后这时候问题来了,即使有人写了full body,但是不出来全身照) #
二、全身照出不来 #
一般来说想要刷出全身照一个常见的做法,就是加“full body ”,但是你会发现,很多时候会被直接忽略掉,那么怎么刷出全身照呢?
1、描述下半身 #
直接在咒语里面添加你想看到的内容,比如,站着standing,长裙long dress,腿legs,鞋子shoes之类的。
2、使用纵向图 #
之前说过为了避免出现双头不要采用纵向图,但是也有例外。如果你想生成全身照,你需要采用纵向图,将你的分辨率的比例调整为1:2或者1:1.5这样,不要用正方形。
三、面部扭曲及眼睛问题 #
1、使用面部修复工具 #
在需要生成需要带有人脸的图像的时候,打开stable diffusion web ui中的面部修复。
采样迭代步数(STEPS)采样方法(SAMPLER)20EULERA高清修复平铺/分块(TILING)面部修复宽度生成批次512仙每批数量高度512
如果你对于当前的面部修复效果不是很满意,也可以去设置中切换面部修复模型。
如果你的版本不支持版本不支持面部修复,也可以去huggingface利用下面两个工具进行修复。
GFPGAN:https://huggingface.co/spaces/Xintao/GFPGAN
CodeFormer:https://huggingface.co/spaces/sczhou/CodeFormer
2、使用 VAE #
这里简单补充一点VAE的知识,不感兴趣的可以不看。
VAE全名variational autoencoder,变分自动编码器,还有一个同类AE,这里不是指Adobe 的AE,而是autoencoder自动编码器,VAE是AE的变种。VAE相比AE而言,它能够通过隐变量的分布学习,生成比AE模型更加真实高质量的样本。
一般来说我们是不需要下载修复的VAE的,因为Stable Diffusion内置了修复面部和眼睛的VAE,但是模型是不断改进的,所以我们可以去下载它的更新版本。
Stability AI 发布了两种经过微调的 VAE 解码器变体,EMA 和 MSE。
下图为Stability AI 对 EMA、MSE 和原始解码器的比较
比较对比的原文链接:https://huggingface.co/stabilityai/sd-vae-ft-ema#visual
那如何下载安装使用VAE这两个改进版本的VAE呢?
EMA VAE下载地址:
https://huggingface.co/stabilityai/sd-vae-ft-ema-original/resolve/main/vae-ft-ema-560000-ema-pruned.ckpt
MSE VAE下载地址:
https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt
将下载下来的VAE的文件放在对应的目录下:stable-diffusion-webui/models/VAE
如果之前没有设置过VAE,那么首先在用户界面设置里面修改内容,使得VAE出现。
然后你就可以在你的底模选择框旁边看到VAE的选项了。
四、乱七八糟的手指 #
我们经常在刷图的时候出现很多掉SAN的手,比如手指变形、过多或过少等情况。那么如何处理?
1、调整手相关的提示词 #
有些小伙伴以看到调整手相关的提示词,就疯狂在正向提示词里面写什么,“beautiful hands” and “detailed fingers”,这篇原文也是这样说的,但是实际在应用的时候,我发现不怎么管用。这里主要的一个原因,就是在正向提示词里面加重这些描述,会让模型越发关注本来就做的不好的内容,导致效果可能越发得差,因此,本人的做法一般是在负向提示词里面去加bad anatomy, bad hands, missing fingers这些词汇,效果相对会好一点。
2、使用inpainting #
在有问题的区域创建一个蒙版。使用inpainting生成重新生成多个图像,然后选择合适的。
3、使用ControlNet #
通过ControlNet插件选择深度图编辑器里面预置的手部模板,或者自己拍自己的手生成深度图,然后进行修复也是可以的。