基于 Segment-Anything 的编辑任意物体
这是一个正在进行的项目,旨在编辑和生成图像中的任何内容, 由 Segment Anything、ControlNet、 BLIP2、Stable Diffusion 等技术支持。
欢迎任何形式的贡献和建议!
新闻🔥
2023/08/09 - 修改了用户界面和代码,修复了多个已知问题。
2023/07/25 - EditAnything 被 ACM MM 演示轨道接受。
2023/06/09 - 支持跨图像区域拖拽和合并,释放创意融合!
2023/05/24 - 支持多种高质量角色编辑:服装、发型、彩色隐形眼镜。
2023/05/22 - 通过在 sketch2image.py
中调整遮罩对齐强度,支持草图到图像的转换!
2023/05/13 - 支持通过点击操作进行交互式分割!
2023/05/11 - 支持瓦片模型以进行细节优化!
2023/05/04 - 发布了美颜/帅哥编辑/生成的新演示!
2023/05/04 - 现在支持在任何 lora 模型上基于 ControlNet 的修复模型。EditAnything 可以在任何基础/lora 模型上操作,无需修复模型。
更多更新日志。
2023/05/01 - 基于 Stable Diffusion 1.5/2.1 的 V0.4 模型已发布。新模型使用更多数据和迭代进行了训练。模型库
2023/04/20 - 我们支持使用 DreamBooth 进行自定义编辑。
2023/04/17 - 我们支持将 SAM 遮罩转换为语义分割遮罩。
2023/04/17 - 我们支持编辑部分与 SAM 遮罩之间的不同对齐程度,请在 演示 中查看!
2023/04/15 - Huggingface 上的 Gradio 演示 已发布!
2023/04/14 - 使用 LAION 数据集训练的新模型已发布。
2023/04/13 - 在 sam2image.py
中支持预训练模型自动下载和 gradio。
2023/04/12 - 文本引导的编辑任意物体的初始版本在 sam2groundingdino_edit.py
(对象级)和 sam2vlpart_edit.py
(部件级)中。
2023/04/10 - 编辑任意物体的初始版本在 sam2edit.py
中。
2023/04/10 - 我们将预训练模型转换为 diffusers 风格,使用 sam2image_diffuser.py
时会自动加载预训练模型。现在您可以轻松地将我们的预训练模型与不同的基础模型结合使用!
2023/04/09 - 我们发布了一个基于 StableDiffusion 的 ControlNet 预训练模型,该模型可以根据 SAM 分割生成图像。
功能
释放创意融合:跨图像区域拖拽和合并!🔥
服装编辑!🔥
发型编辑!🔥
彩色隐形眼镜!🔥
人物替换并使用瓦片优化!🔥
绘制草图并生成图像!🔥
提示词:"地面上有一棵树和一条河的画"
更多演示。
提示词:"一幅画,河流,山,太阳,云,美丽的田野。"
提示词:"一个男人,中分发型,高清。"
提示词:"一个女人,长发,详细的面部特征,逼真,高清,美丽的脸庞,单人,蜡烛,棕色头发,蓝眼睛。"
此外,您还可以使用生成的图像和 SAM 模型来精细化您的草图!
生成/编辑您的美颜!!!🔥🔥🔥
编辑您的美颜并生成您的美颜
使用布局对齐控制进行自定义编辑。
EditAnything+DreamBooth:使用 `tools/train_dreambooth_inpaint.py` 训练自定义 DreamBooth 模型,并在 `sam2edit.py` 中用训练好的模型替换基础模型。使用布局对齐控制进行图像编辑。
保持布局并生成您的季节!
通过文本定位和分割任意物体进行特定编辑
通过文本引导的部分遮罩进行编辑
文本定位:"狗头"
人类提示:"可爱的狗"
更多示例。
文本定位:"猫眼"
人类提示:"一只可爱的小人形猫"
通过文本引导的对象遮罩进行编辑
文本定位:"长凳"
人类提示:"长凳"
通过分割任意物体进行编辑
人类提示:"华丽的日落天空,红砖墙"
更多示例。
人类提示:"湖边的椅子,阳光明媚的日子,春天"
通过分割任意物体进行生成
BLIP2提示:"一艘大型白色和红色渡轮" (1:输入图像;2:分割遮罩;3-8:生成的图像。)
更多示例。
BLIP2提示:"多云的天空"
BLIP2提示:"一架黑色无人机在蓝天中飞行"
- 人类提示和BLIP2生成的提示构建文本指令。
- SAM模型对输入图像进行分割,生成无类别的分割遮罩。
- 分割遮罩和文本指令指导图像生成。
为每个SAM遮罩生成语义标签。
python sam2semantic.py
突出特点:
- 预训练的ControlNet以SAM遮罩为条件,实现了细粒度控制的图像生成。
- 与类别无关的SAM遮罩实现了更多形式的编辑和生成。
- BLIP2文本生成实现了无需文本指导的控制。
设置
创建环境
conda env create -f environment.yaml
conda activate control
安装BLIP2和SAM
将这些模型放在models
文件夹中。
# 运行app.py时会自动安装BLIP2和SAM
pip install git+https://github.com/huggingface/transformers.git
pip install git+https://github.com/facebookresearch/segment-anything.git
# 用于文本引导的编辑
pip install git+https://github.com/openai/CLIP.git
pip install git+https://github.com/facebookresearch/detectron2.git
pip install git+https://github.com/IDEA-Research/GroundingDINO.git
下载预训练模型
# Segment-anything ViT-H SAM模型将自动下载。
# BLIP2模型将自动下载。
# 部分定位Swin-Base模型。
wget https://github.com/Cheems-Seminar/segment-anything-and-name-it/releases/download/v1.0/swinbase_part_0a0000.pth
# Grounding DINO模型。
wget https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha2/groundingdino_swinb_cogcoor.pth
# 从huggingface获取预训练模型。
# 不需要下载这个!但请安装safetensors以读取ckpt。
运行演示
python app.py
# 或
python editany.py
# 或
python sam2image.py
# 或
python sam2vlpart_edit.py
# 或
python sam2groundingdino_edit.py
模型库
模型 | 特点 | 下载路径 |
---|---|---|
SAM预训练(v0-1) | 良好的自然感 | shgao/edit-anything-v0-1-1 |
LAION预训练(v0-3) | 良好的面部处理 | shgao/edit-anything-v0-3 |
LAION预训练(v0-4) | 支持StableDiffusion 1.5/2.1,更多训练数据和迭代,良好的面部处理 | shgao/edit-anything-v0-4-sd15 shgao/edit-anything-v0-4-sd21 |
训练
- 使用
dataset_build.py
生成训练数据集。 - 使用
tool_add_control_sd21.py
转换stable-diffusion模型。 - 使用
sam_train_sd21.py
训练模型。
致谢
@InProceedings{gao2023editanything,
author = {Gao, Shanghua and Lin, Zhijie and Xie, Xingyu and Zhou, Pan and Cheng, Ming-Ming and Yan, Shuicheng},
title = {EditAnything: Empowering Unparalleled Flexibility in Image Editing and Generation},
booktitle = {Proceedings of the 31st ACM International Conference on Multimedia, Demo track},
year = {2023},
}
本项目基于以下工作:
Segment Anything, ControlNet, BLIP2, MDT, Stable Diffusion, Large-scale Unsupervised Semantic Segmentation, Grounded Segment Anything: From Objects to Parts, Grounded-Segment-Anything
感谢这些令人惊叹的项目!