上一篇不是分享了 Meta 的图像分割模型 SAM 嘛,最后说要来一个局部修改的 AI 绘画教程,能看出来大家都很热情。
但重点说在前面,从左边的光腿,到右边的黑丝,没做到想象中的一键出图。
而是我反反复复,抽了 100 多次盲盒后,筛选出来效果最好的那个。
一方面有我刚刚摸索的原因在,另一方面是这种写实向的修改,真的是比二次元复杂。。。
所以,我把这次学习整理的局部修改图片时的技巧汇总到了这里,并按大家要求的,此教程会有很多图。
让我们先从 SAM 模型应用到 SD WebUI 讲起。
安装
在 SAM 模型发布没几天,就有网友把它纳入到了 SD WebUI 的版图,我们可以用扩展的形式直接使用。
第一步肯定就是安装扩展,这属于每一个玩 SD 的小伙伴应知应会的基操了,简单说有两种方式。
GitHub 上找到扩展的项目地址,在「Code」选项里找到安装链接,亦或下载扩展压缩包到本地并解压到扩展该待的地方。
扩展地址:https://github.com/continue-revolution/sd-webui-segment-anything
前者链接下载,即在 WebUI 上,「扩展」标签里「从网址安装」处把链接粘贴过来,然后点击「安装」。
后者下载本地,要直接解压到本地 Stable Diffusion WebUI 的「extensions」目录下,如果你和我一样,用的是秋叶大佬的整合包,路径应该是一样的。
不管哪种方式安装,重启 WebUI 后,扩展就算搞定了。
就像 ControlNet 那样,扩展安装只是第一步,还需要我们把 SAM 模型下载到本地。
模型地址:https://github.com/facebookresearch/segment-anything/
打开上面的链接,往下拉,在 Model Checkpoints 里能找到模型下载的地址。
从上到下,模型体积越来越小,2.4G-1.2G-358M,但分割抠图的效果也是越来越差,识别分割最好的还是最大的那个「vit_h」。
当然,模型越大,分割起来时间越长,如果担心自己硬件吃不下体积最大的模型,可以考虑用「vit_l」,在使用时需要你多点几下。
下载的模型,需要我们扔到扩展里名为「sam」的文件夹里,具体路径为「扩展-models-sam」。
到了这一步,模型也就搞定。
使用
在上周的时候,这个扩展对 WebUI 还有版本要求,但没关系,在周日的时候秋叶整合包进行了大升级。
老版本的整合包在登录时都会自动升级,所以不用担心当前 WebUI 的版本无法使用扩展的问题了。
如果你是自行安装部署的 SD WebUI,记得升一下级,然后,就可以开始用啦。
这个扩展只作用在图生图里,想给已有图片换装,具体的使用姿势,还得是局部重绘。
啥意思?我用个例子给大家展示一下这个扩展以及局部重绘的功能,比如开局这张图,如果想在不改变动作、表情、服饰的基础上,给小姐姐穿个黑丝。
无论是用种子去控制随机性,还是图生图直接产出,只要没有原汁原味的提示词,亦或没有一一对应的各种模型,场景、动作、表情、服装都可能会发生变化。
图生图里的局部重绘,就是干这个事的。
上传图片后,我们可以用画笔给当前图片加上「蒙版」,简单说就是通过涂黑的部位,来确定要图生图时要更改的内容。
但你看,这么涂一来太麻烦,二来不细致,想要好的效果,还是得做到该涂的涂,该留的留,所以在局部重绘这里,网上有很多利用 PS 制作蒙版的操作。
而现在,我们可以用 SAM 快速识别到腿,给小姐姐出上黑丝。
在图生图页面往下拉,就能看到 Segment Anything 的扩展,同样,需要我们先一步上传图片,并选择刚刚下载的 SAM 模型。
基础操作就是鼠标开点了,左键点的黑点是自动识别的区域,鼠标右键点的红点则是不让识别的区域。
像我这样,把腿点上黑点,点击「Preview Segmentation」就能生成预览了,有三个识别的蒙版图。
第一张和第二张蒙版效果差不多,所以选哪个看心情,不过必须要勾选「Copy to …」,这相当于启用了当前蒙版。
到这一步蒙版就制作完成了,然后就是 Prompt 提示词和参数了,然后开始抽盲盒,比如提示词这里我就简单一个「Black Stocking」。
几次生成后,你看除了腿上的黑丝外,这张图片别的地方是一点都没变,效果杠杠的。
需要注意的是,参数没有固定答案,但有一些关于局部绘画的技巧,也就是我在不断试错中 Get 到的经验。
技巧
举几个例子给大家展示,比如我想给下面这个小姐姐换个红发。
用扩展快速抠图。
提示词可以就简简单单的「red hair」,重点是参数的调节,比如我框选出来的这些:
1、蒙版蒙住的内容:这里不是有 4 个选项嘛,实际上就是蒙版区域用什么东西来填充,填充后的图再参与重绘,以下是 4 种选项填充的展示。
如果你想让重绘的图更贴近原图,选第二个「原图」;如果你想让重绘的图更具变化,选第一个「填充」;如果你想让重绘的图更具创造力,选后面俩。
2、蒙版模糊:这里是蒙版填充时的半径变化,以下分别是数值为 0、10、20、30 的变化。
因为我们是用扩展搞定的蒙版,所以蒙版已经很贴近需要修改的内容了,最好设置为 0;当你手动涂黑时,适当增加这个数值,不至于重绘的区域太大。
3、重绘区域:仅蒙版顾名思义,生成时只对蒙版区域起作用,优点是对蒙版外 0 影响,缺点是容易不自然,这个模式下 Prompt 记得只保留要更改的内容,要不然会出现图中图的克苏鲁。
全图可以让整体画面更和谐,但会损失一些细节,Prompt 也可以只保留更改的内容,但存在随机绘制的可能。
为什么全图会影响到细节?这个就要看尺寸了。
4、全图模式下,宽高必须要是 8 的倍数,此时的宽高对应的是整张图,比例最好和原图保持相近;而仅蒙版模式下,宽高不做要求,但尺寸越大,生成出来的图片细节越丰富。
所以有大佬在局部绘图时,会在仅蒙版模式下,把尺寸拉到不爆显存的极限,效果更佳。
5、重绘幅度:你可以把这个数值看成原图对生成过程中的影响程度,数值越小,影响越大。
如果修改的是一个很细的地方,比如瞳孔颜色、比如眼神凶不凶之类的,0.3-0.6 之间抽盲盒;如果修改的内容变化很大,比如穿黑丝、比如改发色,不妨试试 0.7 以上。
因为 SAM 模型的应用,我们可以快速完成局部的更改,但成也萧何,败也萧何,SAM 边缘细节的处理不加,反而会带来影响。
比如我想给下面这个小姐姐换个短袖。
但出图的时候,很容易见到边缘没处理好,比如高龄边缘脖子处有痕迹,比如新生成的胳膊太瘦,没沾满原先的位置。
当然,你可以通过调整参数反复生图,直到出一个满意的为止,之前给小姐姐穿黑丝我就这么做的。
但不妨换个思路,二次局部重绘,把这张图再弄一下,不过这次我们用的是手动涂黑。
再次生成后,一次就搞定了。
结语
大体上局部重绘就这些内容,脚本很好用,但也仅限于熟知了各项参数的作用,从五官到发色,从衣服到装饰,还可以给图片加上一些不存在的东西,算是 AI 绘画的进阶玩法了。
在 B 站上看到一个合并自己重绘模型的教程,试了试,写实的真人效果一般,但二次元效果不错,感兴趣的小伙伴可以去看看。
https://www.bilibili.com/video/BV1ox4y1c7nj/
其实 Stable Diffusion WebUI 上还有很多实用的功能,比如图片无损放大,比如修复老照片。
以前和图片相关的开源项目,做到最后我们往往是通过个人开发的图形工具体验。
而 WebUI 的出现,让原本只能生成图的 AI 绘画,多了不少可能,果然,没有 WebUI 的 AI 画画,毫无意义。
有了开源的 WebUI,我吹爆。
QQ 群:729224889 网站:wldxh.com