业界首创 | “N宫格控制生图”行业难题迎刃而解,文生图与图像编辑任务“从此不分家”!


做一个有温度、有趣味、专业的全栈式AI&AIGC交流社区!



  虽然扩散模型在文生图和图像编辑方面表现出惊艳的效果,但是在处理涉及具有多个属性和关系的多个对象的复杂文本提示时现有方法往往面临着重大的挑战。为了解决该问题, 本文提出了一种全新的无需训练文生图/图像编辑框架,即重新适应、计划和生成(RPG),它利用多模态LLM强大的思想链推理能力来增强文本到图像扩散模型的合成性。该方法使用MLLM作为全局规划器,将生成复杂图像的过程分解为子区域内的多个更简单的生成任务。作者开创性的提出了互补的区域扩散,从而实现区域成分生成。




代码链接-https://github.com/YangLing0818/RPG-DiffusionMaster
论文链接-https://arxiv.org/pdf/2401.11708



01-RPG算法背景

    上图展示了不同的文生图扩散模型的基本架构。图a展示了文本条件扩散模型的架构;图b展示了基于布局/注意力的扩散模型的架构;图c展示了基于LLM建立的扩散模型的架构;图d展示本文提示的RPG扩散模型架构。

    通过观察与分析,我们可以发现:前几种架构中都会利用不同的条件信息,而RPG算法是第一个将MLLMs同时用作多模式重述器和CoT规划器来指导扩散模型推理出更具信息性的指令信息。它可以极大的提升扩散模型的可组合性和可控性。

02-RPG算法简介

    虽然扩散模型在文生图和图像编辑方面表现出惊艳的效果,但是在处理涉及具有多个属性和关系的多个对象的复杂文本提示时,现有方法往往面临着重大的挑战。
    本文提出了一种全新的无需训练文生图/图像编辑框架,即重新适应、计划和生成(RPG),它利用多模态LLM强大的思想链推理能力来增强文本到图像扩散模型的合成性。该方法使用MLLM作为全局规划器,将生成复杂图像的过程分解为子区域内的多个更简单的生成任务。作者开创性的提出了互补的区域扩散,从而实现区域成分生成。
    此外,作者以闭环的方式将文本引导的图像生成和图像编辑任务一起集成在所提出的RPG框架中,从而增强了其泛化能力。大量实验结果表明:RPG效果优于最先进的文本到图像扩散模型,包括DALL-E 3和SDXL,特别是在多类别对象合成和文本-图像语义对齐方面。值得注意的是,RPG框架兼容各种各样的MLLM架构(例如,MiniGPT-4)和扩散骨干网(例如,ControlNet)
03-RPG算法流程
03.01-文生图场景应用流程

    上图展示了无训练框架-重新适应、计划和生成(RPG)算法的整体流程。整个RPG算法包括“重新适应、计划、生成”3个关键阶段。

阶段1-重新适应。具体来说,给定一个包括多个实体和关系的复杂文本提示,首先利用多模态LLM识别出关键阶段,并通过MLLM将其分解为基本提示和高度描述性的子提示来重述提示。

阶段2-计划。即利用多模态LLM的思维链CoT规划将分割(子)提示分配给沿空间轴的互补区域。如图中的Stage2: Plan,其被划分成4个子区域。

阶段3-生成。在这些分配的基础上,作者引入互补的区域扩散概念,从而使其能够独立生成图像潜伏时间,并在每个采样步骤中对其进行聚合。

03.02-图像编辑场景应用流程

    上图展示了RPG算法在图像编辑任务上的应用流程,主要包括“重新适应、计划、生成”3个关键阶段。
阶段1-重新适用。该阶段利用MLLMs来分析配对的目标提示和源图像,这会产生信息丰富的多模态反馈,从而捕捉它们的跨模态语义差异。
阶段2-计划。利用多模态CoT规划中,算法会生成一个详细的逐步编辑计划,如图中所示。

阶段3-生成。该阶段会为其区域扩散生成精确的轮廓信息,并会执行掩码与重新恢复操作。

04-RPG算法实现细节

04.01-区域划分细节

    上图展示了区域划分的实现细节。为了生成有意义和准确的子区域,我们需要仔细指定规划区域划分的两个组成部分:

1)区域参数:作者定义行以“;”分隔每列由一系列逗号分隔的数字表示(例如“1,1,1”)。具体来说,首先使用“;”将图像分割成不同的行;然后在每一行中,使用逗号将一行分割成不同区域,如上图所示

2)指导MLLM的区域性任务规范:作者利用MLLM的CoT推理和一些上下文中设计的例子来推理区域划分的计划。

04.02-互补区域扩散实现细节

    上图展示了互补区域扩散的实现细节。互补区域扩散用于区域生成和图像合成。作者通过提取不重叠的互补矩形区域,并应用调整大小和连接后处理步骤,从而实现了高质量的合成生成。此外,作者通过将基本提示与重述的子块相结合来增强连贯性,从而加强每个生成区域的连接,并保持整体图像连贯性。
05-RPG算法能力展示

05.01-分层区域扩散能力

    上图展示了该算法的分层区域扩散能力。通过仔细观察与分析,我们可以发现:具有更多层次结构的扩散模型可以产生更令人满意的生成效果。

05.02-泛化能力

    上图展示了该算法的泛化能力。图中展示了将RPG推广到不同的多模态LLM架构(包括Llama 2、Vicuna和MiniGPT-4)上的生成效果。

    上图展示了该算法在不同的基准扩散模型上面的生成效果。这从侧面证实了其通用性。

05.03-图像编辑能力

    上图展示了使用RPG框架进行多轮文本引导的图像编辑任务的生成效果。
05.04-重适应的能力

    上图展示了该算法的重适应能力。与没有增加该能力的生成结果相比,增加了重适应能力的RPG算法生成的图片更惊艳、更具有吸引力!

05.05-思维链规划能力


    上图展示了思维链规划能力的增强效果。与没有添加思维链规划生成的图片相比,增加了思维链规划能力的RPG算法生成的图片更精致、更有吸引力。
06-RPG算法环境搭建与运行
06.01-环境搭建
# 复制代码到本地git clone https://github.com/YangLing0818/RPG-DiffusionMaster
cd RPG-DiffusionMaster# 创建conda虚拟环境conda create -n RPG python==3.9# 激活虚拟环境conda activate RPG、# 安装其它python三方库pip install -r requirements.txtgit clone https://github.com/huggingface/diffusers

06.02-运行Demo

# 利用GPT-4执行区域扩散样例代码
from RegionalDiffusion_base import RegionalDiffusionPipelinefrom RegionalDiffusion_xl import RegionalDiffusionXLPipelinefrom diffusers.schedulers import KarrasDiffusionSchedulers,DPMSolverMultistepSchedulerfrom mllm import local_llm,GPT4import torch
# If you want to load ckpt, initialize with ".from_single_file".pipe = RegionalDiffusionXLPipeline.from_single_file("path to your ckpt",torch_dtype=torch.float16, use_safetensors=True, variant="fp16")
# If you want to use diffusers, initialize with ".from_pretrained".# pipe = RegionalDiffusionXLPipeline.from_pretrained("path to your diffusers",torch_dtype=torch.float16, use_safetensors=True, variant="fp16")pipe.to("cuda")pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config,use_karras_sigmas=True)pipe.enable_xformers_memory_efficient_attention()
## User inputprompt= ' A handsome young man with blonde curly hair and black suit with a black twintail girl in red cheongsam in the bar.'para_dict = GPT4(prompt,key='...Put your api-key here...')## MLLM based split generation resultssplit_ratio = para_dict['Final split ratio']regional_prompt = para_dict['Regional Prompt']negative_prompt = "" # negative_prompt, images = pipe( prompt=regional_prompt, split_ratio=split_ratio, # The ratio of the regional prompt, the number of prompts is the same as the number of regions batch_size = 1, #batch size base_ratio = 0.5, # The ratio of the base prompt base_prompt= prompt, num_inference_steps=20, # sampling step height = 1024, negative_prompt=negative_prompt, # negative prompt width = 1024, seed = None,# random seed guidance_scale = 7.0).images[0]images.save("test.png")
07-RPG算法性能评估

07.01-主观效果性能评估

    上面几张图展示了该算法与SDXL与DALL-E3两个SOTA的文生图算法的主观效果比较结果。通过仔细观察与分析,我们可以发现:RPG生成的图片更符合文本描述、更具有美感、更具有吸引力!

    上图展示了该算法与多个SOTA的图像编辑算法(rompt2Prompt、InstructPix2Pix、MasaCtrl)在相同的文本提示下的编辑效果。通过观察我们可以发现:RPG的编辑效果更好一些,它能够准确的对图片中的目标执行增删添改操作!

07.02-主观效果性能评估

    上表展示了该算法与多个SOTA的文生图算法在相同的文本提示下的客观指标评估结果。通过观察与分析,我们可以得出以下的初步结论:RPG在属性绑定、对象关系和复杂组合方面始终表现出最佳性能。

08-RPG算法效果展示

图8.1-RPG算法效果展示1

图8.2-RPG算法效果展示2

图8.3-RPG算法效果展示3

图8.4-RPG算法效果展示4

图8.5-RPG算法效果展示5

图8.6-RPG算法效果展示6

图8.7-RPG算法效果展示7

图8.8-RPG算法效果展示8

图8.9-RPG算法效果展示9

图8.10-RPG算法效果展示10

图8.11-RPG算法效果展示11
图8.12-RPG算法效果展示12

图8.13-RPG算法效果展示13




关注我,AI热点早知道,AI算法早精通,AI产品早上线!






欢迎你的加入,让我们一起交流、讨论与成长!

若二维码失效:关注公众号--》交流分享--》联系我们(备注:AI产品汇)

禁止私自转载,需要转载请先征求我的同意!