MasaCtrl: 无需微调的相互自注意力控制,用于一致性图像合成和编辑
Pytorch实现 MasaCtrl: 无需微调的相互自注意力控制,用于一致性图像合成和编辑
Mingdeng Cao, Xintao Wang, Zhongang Qi, Ying Shan, Xiaohu Qie, Yinqiang Zheng
更新
- [2023/8/20] MasaCtrl 现在支持 SDXL(及其他变体)。
- [2023/5/13] MasaCtrl 与 T2I-Adapter 结合的推理代码已可用。
- [2023/4/28] Hugging Face 演示已发布。
- [2023/4/25] 代码已发布。
- [2023/4/17] 论文可在此处获取。
简介
我们提出了 MasaCtrl,这是一种无需微调的方法,用于非刚性一致性图像合成和编辑。其核心思想是通过相互自注意力控制查询语义相关特征,将源图像的"内容"与从文本提示和额外控制合成的"布局"结合起来,生成所需的合成或编辑图像。
主要特点
1 一致性图像合成和编辑
MasaCtrl 可以执行基于提示的图像合成和编辑,改变布局的同时保持源图像的内容。
目标布局直接从目标提示合成。
查看视觉结果
2 与可控扩散模型的集成
直接修改文本提示通常无法生成所需图像的目标布局,因此我们进一步将我们的方法集成到现有的可控扩散流程中(如 T2I-Adapter 和 ControlNet),以获得稳定的合成和编辑结果。
目标布局由额外指导控制。
查看视觉结果
3 推广到其他模型:Anything-V4
我们的方法也能很好地推广到其他基于 Stable Diffusion 的模型。
查看视觉结果
4 扩展到视频合成
通过密集一致性指导,MasaCtrl 实现了视频合成
查看视觉结果
使用方法
环境要求
我们使用 diffusers 代码库实现我们的方法,代码结构类似于 Prompt-to-Prompt。代码在 Python 3.8.5 和 Pytorch 1.11 环境下运行。强烈建议使用 Conda 环境。
pip install -r requirements.txt
检查点
稳定扩散: 我们主要在稳定扩散v1-4版本上进行实验,但我们的方法可以推广到其他版本(如v1-5)。你可以在官方仓库和Hugging Face上下载这些检查点。
个性化模型: 你可以从CIVITAI下载个性化模型或训练自己的定制模型。
演示
笔记本演示
要使用MasaCtrl进行合成,需要至少16 GB显存的单个GPU。
playground.ipynb
和playground_real.ipynb
笔记本分别提供了合成和真实编辑的样例。
在线演示
我们提供了带有Gradio应用的。请注意,你可能需要将演示复制到自己的空间以使用GPU。在线Colab演示也可用。
本地Gradio演示
你可以通过以下命令在本地启动提供的Gradio演示
CUDA_VISIBLE_DEVICES=0 python app.py
结合T2I-Adapter的MasaCtrl
按照提供的教程安装T2I-Adapter并准备检查点。假设它已成功安装,根目录为T2I-Adapter
。
然后将核心masactrl
包和推理代码masactrl_w_adapter.py
复制到T2I-Adapter的根目录
cp -r MasaCtrl/masactrl T2I-Adapter/
cp MasaCtrl/masactrl_w_adapter/masactrl_w_adapter.py T2I-Adapter/
[更新] 或者你可以直接克隆MasaCtrl-w-T2I-Adapter仓库到本地。
最后,你可以使用以下命令推理图像(使用草图适配器)
python masactrl_w_adapter.py \
--which_cond sketch \
--cond_path_src 源条件路径 \
--cond_path 条件路径 \
--cond_inp_type sketch \
--prompt_src "森林中行走的熊" \
--prompt "森林中站立的熊" \
--sd_ckpt models/sd-v1-4.ckpt \
--resize_short_edge 512 \
--cond_tau 1.0 \
--cond_weight 1.0 \
--n_samples 1 \
--adapter_ckpt models/t2iadapter_sketch_sd14v1.pth
注意:你可以在这里下载草图示例。
对于真实图像,使用DDIM反演将图像转换为噪声图,因此我们在原始DDIM采样器中添加了反演过程。你应该用扩展版本MasaCtrl/masactrl_w_adapter/ddim.py
替换原始文件T2I-Adapter/ldm/models/diffusion/ddim.py
以启用反演功能。然后你可以使用以下命令编辑真实图像(使用草图适配器)
python masactrl_w_adapter.py \
--src_img_path 源图像路径 \
--cond_path 条件路径 \
--cond_inp_type image \
--prompt_src "" \
--prompt "一张穿黑色T恤竖起大拇指的男人的照片" \
--sd_ckpt models/sd-v1-4.ckpt \
--resize_short_edge 512 \
--cond_tau 1.0 \
--cond_weight 1.0 \
--n_samples 1 \
--which_cond sketch \
--adapter_ckpt models/t2iadapter_sketch_sd14v1.pth \
--outdir ./workdir/masactrl_w_adapter_inversion/black-shirt
注意:你可以在这里下载真实图像编辑示例。
致谢
我们感谢这些出色的研究工作Prompt-to-Prompt和T2I-Adapter。
引用
@InProceedings{cao_2023_masactrl,
author = {Cao, Mingdeng and Wang, Xintao and Qi, Zhongang and Shan, Ying and Qie, Xiaohu and Zheng, Yinqiang},
title = {MasaCtrl: Tuning-Free Mutual Self-Attention Control for Consistent Image Synthesis and Editing},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month = {October},
year = {2023},
pages = {22560-22570}
}
联系
如果你有任何意见或问题,请开启一个新的issue或随时联系曹明登和王鑫涛。