抠图是图像处理工具的一项必备能力,可以用在重绘、重组、更换背景等场景。最近我一直在探索 Stable Diffusion WebUI 的各项能力,那么 SD WebUI 的抠图能力表现如何呢?这篇文章就给大家分享一下。
安装插件
作为一个生成式AI,SD本身并没有精细的抠图控制能力,它需要借助插件来实现。
这里我们使用 stable-diffusion-webui-rembg 这个插件,插件安装成功后,会出现在“高清化”这个页面的底部。
安装方法一
适合网络访问各种资源比较畅通的同学。
插件地址:GitHub - AUTOMATIC1111/stable-diffusion-webui-rembg: Removes backgrounds from pictures. Extension for webui.
直接在 Stable Diffusion WebUI 中通过网址安装,操作步骤如下图所示:
第5点指示插件已经安装成功,只需要在“已安装”页面中重启SD WebUI就可以了。
实际抠图时,插件还会根据选择的抠图算法自动下载相关的模型,第一次使用某个算法抠图时等待的时间会长一点。
安装方法二
适合访问外网不怎么方便的同学。
先通过别的工具,比如迅雷下载到本地,然后再部署到相应的目录。
插件地址:GitHub - AUTOMATIC1111/stable-diffusion-webui-rembg: Removes backgrounds from pictures. Extension for webui.
算法模型地址:GitHub - danielgatis/rembg: Rembg is a tool to remove images background
或者下载我已经打包好的文件,关注公众号:萤火遛AI,发消息:抠图,即可获取相关文件。
stable-diffusion-webui-rembg.zip 是插件程序,解压后放到 stable-diffusion-webui/extensions 目录。
u2net.zip 是算法模型文件,解压后放到当前用户的临时目录:
- Windows是:C:\Users\{你登录的Windows用户名}\.u2net
- Linux是:/root/.u2net/
如果部署在云服务器,需要先上传zip压缩文件,再解压到指定的目录。参考解压指令:
unzip -o /root/autodl-tmp/stable-diffusion-webui-rembg.zip -d /root/stable-diffusion-webui/extensions/stable-diffusion-webui-rembg/
unzip -o /root/autodl-tmp/u2net.zip -d /root/.u2net/
安装完毕之后,记得重启SD。
使用rembg
基本使用
点击“高清化”页签,上传要抠图的照片,“Remove background”这里选择抠图算法,最后点击“生成”。
看看默认的抠图效果:头发这里还有些底色没去掉,这部分和背景有些交错,算法不能很好的识别。
注意人像周围黑色的部分实际上都是透明的,我们把这张图片放到白色的背景中人像周围就是白色了。
我们把这个“Alpha matting”勾上,然后会出来几个选项,把“Erode size”的值改为“15”,它可以优化前景图边缘的分割。
重新生成,看看这次的结果,头发这块基本上看不出来之前的底色了,但是衣领这里有些模糊了。我尝试了不同的参数,也没能达到完美。或许把图片放到PS中再处理下是个正确的方法,以结果为导向,不能死抱着AI不放,有兴趣的可以试试。
参数介绍
上面做了一个基本的演示,但是这些参数我们如何配置才能发挥最好的效果呢?这一小节就来看看这些参数的定义。
先看看这几个算法模型:
- u2net:通用的的预训练模型,通常用这个就行。
- u2netp:u2net的轻量级版本。
- u2net_human_seg:专门针对人像分割的预训练模型,只是分割人像时建议使用。
- u2net_cloth_seg:专门从人像上抠衣服的预训练模型,它会把衣服分成三部分:上半身、下半身和全身。
- silueta:和u2net相同,但是大小减少到43Mb,方便在小内存机器上使用。
- isnet-general-use :一个新的通用的预训练模型。
- isnet-anime:专门针对动画人物的高精度分割。
再看看它的两个选项:
- Alpha matting:Alpha遮罩,这是一个比较专业的图像处理术语。在图像处理中,有一个东西用来表示图像中每个像素点的透明度,这个东西称为Alpha通道;然后Alpha遮罩利用Alpha通道来控制图像的透明度,从而达到隐藏或显示某些部分的目的;在抠图这里就是努力让前景部分都显示出来,让背景部分都变透明。这个选项有三个参数,用来控制抠图的效果,我们看下:
-
- Erode size:Alpha抠图腐蚀尺寸,通过在图像中构建一个长宽为这个值的矩形进行腐蚀。太小了前景和背景分离不彻底,边缘有交叉;太大了前景和背景会腐蚀的太多,边缘缺损明显。
- Foreground threshold:前景图像的阈值,值过小背景可能被识别为前景,值过大前景可能被识别为背景。
- Background threshold:背景图像的阈值,值小了前景可能被识别为背景,值大了背景可能识别为前景。
使用Alpha遮罩时可以初始用这几个经验值:(15, 220, 100),具体参数值再根据实际情况进行调整。
- Return mask:返回抠图的蒙版图,下面马上就会介绍它的用法和用途。
使用蒙版
这一小节以更换图片背景为例,演示蒙版的用法。具体想法是生成一张马斯克登陆火星遭遇外星人的照片。
生成蒙版
只要在生成时勾选上“Return mask”,最终输出图片就会变成蒙版图。
如下图所示,可以看到人物变成了白色的蒙版,我们把这个蒙版图片先保存到本机,后面马上要用。
更换背景
在“图生图”中打开“局部绘制(上传蒙版)”。这里需要上传两张照片,一张原图,一张人物的蒙版图。
图生图的具体参数如下:
提示词:(the desert), ((night)), dim sun, (stargate), a man in a suit and white shirt smiling for a picture, a alien standing in the distance, digital painting, stargatejackal,surrealistic, hdri, smooth, sharp focus, illustration, fantasy, intricate, elegant, highly detailed, 8k <lora:sgasgard_v1:1>
反向提示词:EasyNegative, moon
缩放模式:填充,因为我想调整下图片的宽高比到 16:9,原图没这么宽,所以需要填充新扩展的空间。
蒙版模式:绘制非蒙版内容,在“局部绘制(上传蒙版)”中白色的区域是蒙版,因为我们要重绘背景,所以这里选择的是“绘制非蒙版内容”。
采样器:DPM++ 2M SDE Karras,这是最近新加的一个采样器,建议体验下。当然也可以用别的采样器。
采样步数:配合采样器设置。
宽度、高度:根据 16:9的比例设置。
看看出图的效果:
以上就是本文的主要内容了,感兴趣的同学赶紧去试试吧。
如果你刚开始学习AI绘画,建议先看这两篇 Stable Diffusion WebUI 安装指南:
手把手教你在本机安装Stable Diffusion秋叶整合包
手把手教你在云环境炼丹(部署Stable Diffusion WebUI)