大家好,我是叁石。
继上次发布的文章干货分享:
大家发现 kontext 能通过自然语言进行图片处理,如风格迁移、文字替换、角色一致等,所以有好多的小伙伴问我要工作流,我也一一分享给了大家。
但是,在和大家沟通的时候,我发现 kontext 的这个工作流还存在一些缺陷,就是描述很费劲,尤其是遇到一张图中有多个相似元素的情况,大家可以看下面两个工作流的案例。
第一个是画面元素比较简单的,所以 kontext 会比较好理解我们的输入“change hair to silver”,把头发变成银色。
kontext 单图元素替换
如果是下面这张图呢?我给到的提示词是“Change the hair color of the girl wearing green clothes to red”,把穿绿色衣服的女孩的头发颜色变成红色。显然,kontext 理解起来是有难度的,没有正确按照提示词的内容进行修改。
kontext 单图元素替换
所以,有没有办法能通过遮罩来涂抹出自己想要改变的区域,再让 kontext 进行修改呢?就类似于 sdxl 中图生图中的局部重绘?
经过不断地探索和学习,我发现还真的可以,只需要插入「Kontext Inpainting Conditioning」节点,就能实现在 kontext 中,用画笔画出遮罩,然后针对遮罩区域进行单独的重新绘制,如下图:
kontext局部重绘部分工作流
我们看下视频实操:
ok,那我们今天就一起学习下怎么实现这种效果及工作流的搭建吧。
1. kontext 模型哪里下载?
我们可以去 Flux 官方网站上下载 kontext 模型。
官网地址: https://playground.bfl.ai/image/generate
这里要注意的是,kontext 模型有三个版本,分别是“max”、“pro”和“dev”。这三者的区别是:
max:参数最大,训练数据量最丰富,性能最佳。
pro:统一模型,提供 FLUX.1 质量的局部编辑、生成式修改和文本转图像生成功能,性能中等。
dev:开发者测试,速度最快。
模型下载方式1
或者也可以去 huggingface 上下载。
链接:https://huggingface.co/black-forest-labs/FLUX.1-Kontext-dev/tree/main
模型下载方式2
2. 为什么我的工作流老是报错不出图?
如下图 1,出现这个报错可能是因为我们没有将 kontext 模型下载到本地运行,而是直接调用了 API 接口,由于网络不稳定,所以有时候会出图,有时候就不会出图,所以我不建议大家用“Flux.1 Kontext [pro] Image(提示词输入)”这个节点,最好用常规的工作流进行搭建,然后加载模型即可。如下图 3。
kontext接口调用工作流 (不建议这样使用)
截图报错
下面这种常规的工作流虽然搭建起来比较复杂,但是运行稳定,不容易报错。
kontext常规工作流
3. 为什么我的工作流出图没有重绘?
这个问题应该是粗心了,我们要在「UNET 加载器」中选择 kontext 模型才可以,记住,它是一个模型,可不是一个节点哈,如下图。
选择模型
现在我们进入正题,如何在 kontext 中进行单图的遮罩区域局部重绘制,正如文章开头所说的,我们插入一个「Kontext Inpainting Conditioning」节点,连接在「K 采样器」之前就可以了,如下图。
Kontext Inpainting Conditioning 节点
然后上传一张图片,右击选择“在遮罩编辑器中打开”,涂抹自己需要去掉的区域。接着在「CLIP 文本编码器」中输入自己想替换的元素就行,比如“Replace the bottle in your hand with a glass of water”,将手中的瓶子替换成玻璃水杯。
涂抹替换区域
kontext单图局部重绘
可以看到,效果还是很不错的。再回到开头那张多个女孩的照片的案例,我们再试一下,也是不错的。有了遮罩重绘的 kontext,最方便的是不用再费尽心思地去写提示词,就像这里的提示词“turn hair silver”,非常简单,因为此时的工作流只对遮罩区域有效。
kontext单图局部重绘
重点来啦,既然单图可以局部替换,那将一张图替换到另一张图上去,能通过 kontext 实现么?如果能实现,那 kontext 是不是实现了万物替换?经过尝试和思考,发现是可以的。我们只需要插入「Image Stitch」节点,将结合之后的图片 VAE 编码给到「ReferenceLatent」节点,再连接到「Kontext Inpainting Conditioning」即可,如下图。
效果截图
我们看下完整的工作流。
kontext双图局部替换工作流
这个工作流其实原理也非常简单,我们先将 2 张图片通过「Image Stitch」组合在一起,然后 VAE 编码给到「ReferenceLatent」节点,如下图。这个 kontext 双图元素替换的逻辑是一样的。
图像组合
然后将涂抹形成遮罩的图片通过「Grow Mask With Blur」(遮罩模糊生长),将遮罩的边缘进行柔和处理,然后给到「Kontext Inpainting Conditioning」的“mask 输入”,还有将原图也给到该节点的“pixels 输入”,如下图,就能跑通整个工作流了。
遮罩和图像连接
本篇文章主要是再次延伸了 kontext 的重绘功能,之前大家只能通过各种提示词描述来让 kontext 理解我们的想法,所以比较“费脑子”。现在 kontext 有了局部重绘,就大大提高了提示词描述的精准程度了。尤其是还可以将一张图替换到另一张被涂抹的区域,可以说是非常便捷。
另外也在平时和大家的讨论中把一些共性问题跟大家分享下,希望大家可以少报错,快速跑图,
最后,关于工作流和模型大家有什么需求和疑问的,也可以联系我,我会尽力帮助大家解决跑图中的各类报错问题,谢谢!
复制本文链接 文章为作者独立观点不代表优设网立场,未经允许不得转载。
发评论!每天赢奖品
点击 登录 后,在评论区留言,系统会随机派送奖品
2012年成立至今,是国内备受欢迎的设计师平台,提供奖品赞助 联系我们
用户体验增长
已累计诞生 751 位幸运星
发表评论 为下方 6 条评论点赞,解锁好运彩蛋
↓ 下方为您推荐了一些精彩有趣的文章热评 ↓