装置

  1. 从continue-revolution/sd-webui-segment-anything装置插件
  2. 切割模型下载后放到这个方位:${sd-webui}/extension/sd-webui-segment-anything/models/sam下,能够下载3个不同巨细的模型,从大到小如下:vit_h is 2.56GB, vit_l is 1.25GB, vit_b is 375MB。假如显存不行的话,能够考虑运用小模型。当然作用也或许会有丢失。 通过上述过程后,插件就装置好了。

运用教程

图片切割

装置

  1. 从continue-revolution/sd-webui-segment-anything装置插件
  2. 切割模型下载后放到这个方位:${sd-webui}/extension/sd-webui-segment-anything/models/sam下,能够下载3个不同巨细的模型,从大到小如下:vit_h is 2.56GB, vit_l is 1.25GB, vit_b is 375MB。假如显存不行的话,能够考虑运用小模型。当然作用也或许会有丢失。 通过上述过程后,插件就装置好了。

运用教程

图片切割

手动方式

  • 标示图片

Stable Diffusion + Segment Anything试用

左键标记成黑点代表想要的物体,右键标记成红点代表不需求切割的物体

  • 切割成果 运用Preview Segmentation按钮生成切割图

Stable Diffusion + Segment Anything试用
根据切割的多个成果中挑选1个最满足的节点

运用GroundingDINO加提示词自动识别切割物

Stable Diffusion + Segment Anything试用

勾选Enable GroundingDINO,就会呈现下面的GroundingDINO Model (Auto download from huggingface)GroundingDINO Detection Prompt,其间GroundingDINO Detection Prompt填上想要切割的物体,比方”dress” 点击Generate bounding box按钮,就能够看到切割作用,如下所示:

Stable Diffusion + Segment Anything试用

  • 切割成果 运用Preview Segmentation按钮生成切割图,和上面相同。

Stable Diffusion + Segment Anything试用

  • 扩大(可选)

Stable Diffusion + Segment Anything试用

假如切割图里面会有一些点没有完全掩盖的话,能够考虑扩大mask来使切割成果更好。比方上面手动切割图中裙子会有一些点没有掩盖到,能够考虑扩大像素。

点击Switch to Inpaint Upload,接下来便是运用【部分重绘(上传蒙版)】来做部分重绘了。

部分重绘(上传蒙版)

  • 除了把“重绘区域”修改成“仅蒙版”,这儿大部分运用默许的参数。

Stable Diffusion + Segment Anything试用

  • 挑选对应的controlNet,比方上面挑选的是第1个切割成果,那就挑选ControlNet Unit 1:
  1. 勾选启用、勾选Pixel Perfect,假如显存不行能够勾选低显存优化
  2. 挑选预处理:inpait_global_harmonious,模型:control_v11_sd15_inpaint
  3. 其他参数默许

Stable Diffusion + Segment Anything试用

作用

运用X/Y/Z Plot脚本来替换提示词,如下:

red dress, pink dress,white dress,blue dress, frilled dress

作用如下:

Stable Diffusion + Segment Anything试用

能够看到仍是比较完美的做了换装。

总结

本文简单运用了stable diffusion webui的Segment Anything来实验了换装操作,全体作用仍是比较好的,当然目前挑选的仍是比较简单的图片,假如比较复杂的图片,是否还有这么好的作用,还需持续研究和实验。 当然作者以为它主要是为了便利做部分重绘时需求手动标记重绘区域时的不便,有了Segment Anything能够提高标记效率。

附录

遇到的问题

  1. 显存不行
torch.cuda.OutOfMemoryError: CUDA out of memory. ......

查看后台运转程序或许会时长呈现上面的问题,这便是显存不行导致的,能够测验把SAM Model修改成最小的vit_b,让流程跑起来。当然也或许目前该扩展还有一些显存的问题,看Issue上面也有挺多人遇到类似问题。

Stable Diffusion + Segment Anything试用

  1. 装置的版别不对
The detected CUDA version (12.1) mismatches the version that was used to compile PyTorch (11.7). Please make sure to use the same CUDA versions.
  • 需求保证保证nvcc --version显现的版别和nvidia-smi显现的版别保持一致。假如不一致,或许需求重新编译cuda版别。

参阅

Stable-Diffusion-WebUI相关实践篇2:SD-webui-segment-anything,切割全部+自由创造全部

Segment Anything 装置与运用教程,切割万物,修改万物。(附装置教程)