Project Icon

ReNoise-Inversion

迭代重噪图像反演方法提升重建精度和编辑效果

ReNoise-Inversion项目开发了一种创新的图像反演方法,利用迭代重噪机制提高重建精度,同时保持低操作成本。该方法适用于多种采样算法和模型,包括最新的加速扩散模型。实验表明,ReNoise技术在精确度和速度方面表现优异,同时保持了图像的可编辑性。这一技术为基于文本的真实图像编辑开辟了新途径。

ReNoise:通过迭代噪声实现真实图像反演

Daniel Garibi, Or Patashnik, Andrey Voynov, Hadar Averbuch-Elor, Daniel Cohen-Or

文本引导扩散模型的最新进展已经解锁了强大的图像操作能力。然而,将这些方法应用于真实图像需要将图像反演到预训练扩散模型的域中。实现忠实的反演仍然是一个挑战,特别是对于最近训练的模型,这些模型使用少量去噪步骤生成图像。在这项工作中,我们提出了一种具有高质量操作比的反演方法,在不增加操作数的情况下提高重建精度。基于反转扩散采样过程,我们的方法在每个反演采样步骤中采用迭代重噪机制。该机制通过迭代应用预训练的扩散模型并平均这些预测,来改进前向扩散轨迹上预测点的近似。我们使用各种采样算法和模型(包括最新的加速扩散模型)评估了我们的ReNoise技术的性能。通过全面的评估和比较,我们展示了其在精度和速度方面的有效性。此外,我们通过展示对真实图像的文本驱动图像编辑,确认我们的方法保留了可编辑性。

Hugging Face Spaces

描述

我们ReNoise论文的官方实现。

环境设置

我们的代码基于diffusers库的要求构建。要设置环境,请运行:

conda env create -f environment.yaml
conda activate renoise_inversion

或安装要求:

pip install -r requirements.txt

演示

要运行项目的本地演示,请运行以下命令:

gradio gradio_app.py

使用方法

examples/目录中有三个如何在Stable Diffusion、SDXL和SDXL Turbo中使用反演的示例。

反演

我们创建了一个diffusers管道来执行反演。您可以使用以下代码在项目中使用ReNoise:

from src.eunms import Model_Type, Scheduler_Type
from src.utils.enums_utils import get_pipes
from src.config import RunConfig

from main import run as invert

model_type = Model_Type.SDXL_Turbo
scheduler_type = Scheduler_Type.EULER
pipe_inversion, pipe_inference = get_pipes(model_type, scheduler_type, device=device)

input_image = Image.open("example_images/lion.jpeg").convert("RGB").resize((512, 512))
prompt = "a lion in the field"

config = RunConfig(model_type = model_type,
                    scheduler_type = scheduler_type)

rec_img, inv_latent, noise, all_latents = invert(input_image,
                                                 prompt,
                                                 config,
                                                 pipe_inversion=pipe_inversion,
                                                 pipe_inference=pipe_inference,
                                                 do_reconstruction=False)

您可以使用RunConfig中的以下属性控制反演参数:

  • num_inference_steps - 去噪步骤数。
  • num_inversion_steps - 反演步骤数。
  • guidance_scale - 反演过程中的引导比例。
  • num_renoise_steps - ReNoise步骤数。
  • max_num_renoise_steps_first_step - 当T<250时的最大ReNoise步骤数。
  • inversion_max_step - 反演强度。去噪步骤的数量取决于最初添加的噪声量。当强度为1.0时,图像将被反演为完全噪声,去噪过程将运行完整的步骤数。当强度为0.5时,图像将被反演为半噪声,去噪过程将运行一半的步骤。
  • num_inference_steps - 去噪步骤数
  • average_latent_estimations - 执行估计平均。
  • average_first_step_range - 当T<250时的平均范围。值是一个元组,例如(0, 5)
  • average_first_step_range - 当T>250时的平均范围。值是一个元组,例如(8, 10)
  • noise_regularization_lambda_ac - 噪声正则化成对lambda。
  • noise_regularization_lambda_kl - 噪声正则化补丁KL散度lambda。
  • perform_noise_correction - 执行噪声校正。

对于随机采样器,添加以下内容以使用与反演过程相同的\epsilon_t。

pipe_inference.scheduler.set_noise_list(noise)

编辑

要使用ReNoise编辑图像,您可以使用以下代码:

from src.eunms import Model_Type, Scheduler_Type
from src.utils.enums_utils import get_pipes
from src.config import RunConfig

from main import run as invert

model_type = Model_Type.SDXL_Turbo
scheduler_type = Scheduler_Type.EULER
pipe_inversion, pipe_inference = get_pipes(model_type, scheduler_type, device=device)

input_image = Image.open("example_images/lion.jpeg").convert("RGB").resize((512, 512))
prompt = "a lion in the field"

config = RunConfig(model_type = model_type,
                    scheduler_type = scheduler_type)

edit_img, inv_latent, noise, all_latents = invert(input_image,
                                                 prompt,
                                                 config,
                                                 pipe_inversion=pipe_inversion,
                                                 pipe_inference=pipe_inference,
                                                 do_reconstruction=True,
                                                 edit_prompt="a tiger in the field"
                                                 )

edit_img.save("result.png")

致谢

这段代码基于diffusers库的代码构建。此外,我们借鉴了以下仓库的代码:

引用

如果您在研究中使用此代码,请引用以下工作:

@misc{garibi2024renoise,
      title={ReNoise: Real Image Inversion Through Iterative Noising}, 
      author={Daniel Garibi and Or Patashnik and Andrey Voynov and Hadar Averbuch-Elor and Daniel Cohen-Or},
      year={2024},
      eprint={2403.14602},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号