任意区域修复(使用 Segment Anything 进行修复)
任意区域修复在浏览器界面上使用 Segment Anything 输出的任意选定蒙版执行稳定扩散修复。
使用 Segment Anything 使用户能够通过简单指向所需区域来指定蒙版,而无需手动填充。这可以提高蒙版创建过程的效率和准确性,从而可能产生更高质量的修复结果,同时节省时间和精力。
安装
请按照以下步骤安装软件:
- 创建新的 conda 环境:
conda create -n inpaint python=3.10
conda activate inpaint
- 克隆软件仓库:
git clone https://github.com/Uminosachi/inpaint-anything.git
cd inpaint-anything
- 对于 CUDA 环境,安装以下软件包:
pip install -r requirements.txt
- 如果您使用的是 macOS,请改为从以下文件安装软件包:
pip install -r requirements_mac.txt
运行应用程序
python iasam_app.py
- 在浏览器中打开 http://127.0.0.1:7860/。
- 注意:如果您在网络浏览器中启用了隐私保护扩展程序(如 DuckDuckGo),您可能无法从草图中检索蒙版。
选项
--save-seg
:保存由 SAM 生成的分割图像。--offline
:使用离线网络执行修复。--sam-cpu
:在 CPU 上执行 Segment Anything 操作。
下载模型
- 启动此应用程序。
- 点击 Segment Anything Model ID 旁边的"下载模型"按钮。这包括 SAM 2、高质量 Segment Anything 模型 ID、Fast Segment Anything 和 Faster Segment Anything (MobileSAM)。
- 请注意,SAM 有三种尺寸:Base、Large 和 Huge。请记住,较大的尺寸会消耗更多的 VRAM。
- 等待下载完成。
- 下载的模型文件将存储在此应用程序仓库的
models
目录中。
使用方法
- 将图像拖放到输入图像区域。
- 通过"填充选项"可以实现外部修复,配置比例和平衡,然后点击"运行填充"按钮。
- "动漫风格"复选框可增强分割蒙版检测,特别是在动漫风格图像中,但会稍微降低蒙版质量。
- 点击"运行 Segment Anything"按钮。
- 使用素描指向您想要修复的区域。您可以撤销并调整笔尺寸。
- 将鼠标悬停在 SAM 图像或蒙版图像上,按
S
键进入全屏模式,或按R
键重置缩放。
- 将鼠标悬停在 SAM 图像或蒙版图像上,按
- 点击"创建蒙版"按钮。蒙版将出现在所选蒙版图像区域。
蒙版调整
- "扩展蒙版区域"按钮:用于略微扩大蒙版区域以获得更广泛的覆盖。
- "通过素描修剪蒙版"按钮:点击此按钮将从蒙版中排除素描区域。
- "通过素描添加蒙版"按钮:点击此按钮将素描区域添加到蒙版中。
修复选项卡
- 输入您想要的提示和负面提示,然后选择修复模型 ID。
- 点击"运行修复"按钮(请注意,首次下载模型可能需要一些时间)。
- 在高级选项中,您可以调整采样器、采样步骤、指导比例和种子。
- 如果启用"仅蒙版区域"选项,修改将仅限于指定的蒙版区域。
- 调整迭代滑块以使用不同的种子多次执行修复。
- 修复过程由 diffusers 提供支持。
提示
- 您可以直接将修复后的图像拖放到 Web UI 上的输入图像字段中。(适用于 Chrome 和 Edge 浏览器)
模型缓存
- 保存在HuggingFace缓存中且其repo_id包含"inpainting"(不区分大小写)的修复模型也会被添加到修复模型ID下拉列表中。
- 如果您想使用特定模型,可以提前使用以下Python命令进行缓存:
python
from diffusers import StableDiffusionInpaintPipeline pipe = StableDiffusionInpaintPipeline.from_pretrained("Uminosachi/dreamshaper_5-inpainting") exit()
- diffusers下载的模型通常存储在您的主目录中。Linux和MacOS用户可以在
/home/用户名/.cache/huggingface/hub
找到,Windows用户可以在C:\Users\用户名\.cache\huggingface\hub
找到。- 执行修复时,如果控制台输出以下错误,请尝试从上述缓存文件夹中删除相应的模型:
获取模型名称时发生错误...
清理器选项卡
- 选择清理器模型ID。
- 点击"运行清理器"按钮(请注意,首次下载模型可能需要一些时间)。
- 清理过程使用Lama Cleaner执行。
仅蒙版选项卡
- 提供仅保存蒙版而不进行其他处理的功能,以便在其他图形应用程序中使用蒙版。
- "获取图像alpha通道蒙版"按钮:将蒙版保存为RGBA图像,蒙版保存在输入图像的alpha通道中。
- "获取蒙版"按钮:将蒙版保存为RGB图像。
自动保存图像
- 修复后的图像将自动保存在
outputs
目录中与当前日期匹配的文件夹中。
开发
使用Inpaint Anything库,您可以执行分割并使用其他应用程序的草图创建蒙版。
许可证
源代码根据Apache 2.0许可证授权。
参考文献
- Ravi, N., Gabeur, V., Hu, Y.-T., Hu, R., Ryali, C., Ma, T., Khedr, H., Rädel, R., Rolland, C., Gustafson, L., Mintun, E., Pan, J., Alwala, K. V., Carion, N., Wu, C.-Y., Girshick, R., Dollár, P., & Feichtenhofer, C. (2024). SAM 2: 分割图像和视频中的任何内容。arXiv预印本。
- Kirillov, A., Mintun, E., Ravi, N., Mao, H., Rolland, C., Gustafson, L., Xiao, T., Whitehead, S., Berg, A. C., Lo, W-Y., Dollár, P., & Girshick, R. (2023). 分割任何内容。arXiv:2304.02643。
- Ke, L., Ye, M., Danelljan, M., Liu, Y., Tai, Y-W., Tang, C-K., & Yu, F. (2023). 高质量分割任何内容。arXiv:2306.01567。
- Zhao, X., Ding, W., An, Y., Du, Y., Yu, T., Li, M., Tang, M., & Wang, J. (2023). 快速分割任何内容。arXiv:2306.12156 [cs.CV]。
- Zhang, C., Han, D., Qiao, Y., Kim, J. U., Bae, S-H., Lee, S., & Hong, C. S. (2023). 更快的分割任何内容:面向移动应用的轻量级SAM。arXiv:2306.14289。