技术分享
2023 年 3 月 24 日
使用 Depth map library and poser 修复AI图片的手部问题
Midjourney、Stable Diffusion 等工具生成的图片已经越来越真实了,然而在处理手部方面仍存在一些问题,例如AI对手指的处理通常不准确,导致手指黏连、数量异常等问题。为了解决这些问题,有人为 Stable Diffusion 开发了一个名为 Depth map library and poser 的插件,专门用于引导生成和修复AI对手部的处理。本文记录了使用此插件的学习和使用过程,并尝试使用它来修复一张图像中手部的问题。
一、安装配置
- 安装
需要安装
ControlNet
和 Depth map library and poser
两个插件,地址如下:安装完成后可以在插件页面看到这两个插件,刷新网页进行激活。
- 下载模型
推荐下载
control_depth-fp16.safetensors
和 control_canny-fp16.safetensors
两个模型文件。- https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_depth-fp16.safetensors
- https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_canny-fp16.safetensors
二、手部修复
常用的修复方式有两种,一种是
text2img
模式,使用同样的 prompt 加上手势图片重新生成整张图片;一种是 img2img
模式,使用 inpaint
对原图的手部进行局部重绘。我使用两种模式都测试过多次之后,只在img2img
模式成功。2.1 原图
原图如下,这里我们主要是处理右手,可以看到手部明显是有问题的:手指数量不详、长短不一、还黏在一起。
2.2 手势制作
为了使用
ControlNet
对手部进行引导,我们需要先制作手部图片。Depth map library and poser
自带了一部分手势,我试了好几种,最后只有手指张开的那几个手势成功了,其它稍微复杂一点的手势都做不出想要的效果。制作方法也很简单,主要步骤如下:
- 打开
Depth Library
标签页 - 点击
Add backround image
添加待修复的图片,然后调整Width
和Height
与原图一致或保持比例 - 在
Hands
区域选择合适的手势拖拽到右边的预览窗口,然后点击Add
添加到背景图,如果加的不合适可以选中后点击Remove selcted
进行删除。 - 调整手势使其与与背景图匹配,可以拖角点进行等比缩放、也可以单独拖长边或短边进行只有缩放,拖住外面的点进行旋转
- 注意: 这里的手势全部是左手,如果需要用于右手,可以将锚点拉到另外一边进行翻转
手势制作完成后点击
Save png
将手势图片保存到本地,最后得到的图片如下:2.3 使用 text2img
模式修复
这个模式测试失败,得到的结果与原图完全无关,查阅网上的资料,有的说是调整
weight
参数,有的说是调整 Guidance start
参数。我这两个都试过了,但是都无法成功。权重调低了完全不生效,权重调高了生成的图片与原图毫无关系。2.4 使用 img2img
模式修复
- 切换到
img2img
标签页,填写下面这条Prompt
a hand,five fingers,palm of hand,palm outward,clean background
这条 Prompt 的目的是生成一只手部图片,在
txt2img
标签页运行结果如下:- 在
inpaint
标签页上传原图,设置图片尺寸,然后mask掉需要修复的手部。
展开
ControlNet
设置,将上一步生成的手势图上传,然后设置 ControlNet
的参数。注意不要启用 Guess Mode
。- 点击
Generate
按钮就可以生成手部修复图片了,建议设置Batch size
同时生成多张图片,挑选最合适的结果。
可以看到修复后的图片虽然不是特别完美,但是比之前已经好多了,可以用PS继续处理一下细节。
参考资料
本文为原创文章,未经允许请勿非法盗用资源。我们保护知识产权,尊重每一个创作者的劳动成果。如需转载,请务必注明出处并获得授权,谢谢合作!
作者:小梦 | 发表日期:2023 年 3 月 24 日