
最近几个月以来,Meta发布了一款名为SAM(Segment Anything Model)的图像分割基础模型,其强大的能力和简便的操作方式引起了广泛关注。SAM模型通过简单的点击选择物体,即可实时准确地将其分割出来,其在GitHub上的受欢迎程度也可见一斑,截至4月15日,其仓库的Star数已高达26k。
然而,如何将这一强大的“分割一切”模型应用到更实际的需求场景中,并进行进一步的拓展,成为了一个关键问题。有研究团队给出了一个令人惊艳的答案。他们基于SAM模型,提出了一款名为“修补一切”(Inpaint Anything,简称IA)的模型。与传统的图像修补模型不同,IA模型无需复杂的掩码操作,只需一键点击标记选定对象,即可实现移除任何物体、填补任何内容、替换任何场景等多种典型图像修补应用场景。这一创新引发了人们的极大兴趣。
在过去的几个月中,研究者们通过不断优化和改进IA模型,取得了显著的进展。他们首次尝试了无需掩码的图像修复,并构建了一种名为“点击再填充”(Clicking and Filling)的全新图像修补范式,即修补一切(IA)。IA的核心思想是结合不同模型的优势,建立一个功能强大且用户友好的图像修复系统。
IA模型具有三个主要功能:移除一切Remove Anything、填补一切Fill Anything和替换一切Replace Anything。用户只需点击一下想要移除的物体,IA就能无痕地移除该物体,实现高效的“魔法消除”。同时,用户还可以通过文本提示告诉IA想要在物体内填充什么,IA会通过驱动已嵌入的AIGC模型生成相应的内容填充物体,实现随心的“内容创作”。此外,用户还可以通过点击选择需要保留的物体对象,并用文本提示告诉IA想要将物体的背景替换成什么,即可将物体背景替换为指定内容,实现生动的“环境转换”。
本文主要讲述了stable diffusion webui中的扩展Inpaint Anything(https://github.com/Uminosachi/sd-webui-inpaint-anything)。它就是基于以上SAM模型以及“可组合人工智能”(Composable AI)方式解决重绘一切的问题。


进入sd-webui的扩展页签,选择可用页签,点击【加载至:】,在加载的列表中,选择【Inpaint Anything】,然后点击该行右侧【安装】。然后重启sd-webui。

也可以选择此页签的【从网址安装】。在【扩展的 git 仓库网址】中输入: https://github.com/Uminosachi/sd-webui-inpaint-anything.git ,点击【安装】按钮。然后重启sd-webui。
即可见到第一张图片的【Inpaint Anything】页签。这个页签中分为四大区域,分割一切区Run Segment Anything,遮罩创建区Create Mask,遮罩修改区(扩展遮罩区域Expand mask region,根据绘制裁剪遮罩区域Trim mask by sketch,根据绘制添加遮罩区域Add mask by sketch),重绘一切区Run Inpainting。这里四个区需要顺时针区看,我在图中已经标注了1234。

在分割一起区中,选择不同的【Segment Anything Model ID】,然后点击【Download model】,就可以完成该模型的下载,一般情况下,建议sam_vit_l_0b3195.pth。下载时间不短,请耐心等待。
在Input Image中,上传希望分割的图像,点击【Run Segment Anything】,即可在右侧遮罩创建区看到对应的分割图像。

通过鼠标控制笔触,选择希望遮罩的部分(图中豹子身上的黑线),然后点击【Create Mask】,就可以在下方的遮罩修改区看到被遮罩的部分。如果希望反选,选中【Invert mask】。

上图中之所以边缘会多一些,是我用鼠标笔触多绘制了一圈后,点击了【Add mask by sketch】。也可以点击【Expand mask region】自动扩展区域(限制比较大,你试试就知道)。我们也可以用鼠标笔触多绘制一圈后,点击【Trim mask by sketch】,让蒙版区变小。
这里我希望图像中的豹子消失掉,因此Inpainting Prompt写grasslands草原,Negative Prompt写panther, leopard, animals, sheep, horse, bird各种动物。Inpainting Model ID中选择【stabilityai/stable-diffusion-2-inpainting】模型,点击【Run Inpainting】。获得没有豹子的图片。
需要说明的是,这里效果其实并不是特别好,我试了很多次才有一张这种去掉豹子的图像。大多数是有各种动物出来。因此,我才在Negative Prompt中写panther, leopard, animals, sheep, horse, bird各种动物。如果有什么特别有效的方式,请评论区或私信告诉我。

如果希望去掉豹子,我们也可以选择Cleaner页签,Cleaner Model ID选择lama,然后点击【Run Cleaner】。效果如下:

比我想象中要差,像很多隐身电影中的一个隐身的生物。我之所以给豹子扩展遮罩,就是希望能解决这个问题,但lama这个Cleaner Model ID,效果是不太好的。

选择Mask only页签,点击【Get mask】就可以获得遮罩图了,如果希望只获得豹子,则可以点击【Get mask as alpha image】。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。