做一个有温度、有趣味、专业的全栈式AI&AIGC交流社区!
01-RPG算法背景
上图展示了不同的文生图扩散模型的基本架构。图a展示了文本条件扩散模型的架构;图b展示了基于布局/注意力的扩散模型的架构;图c展示了基于LLM建立的扩散模型的架构;图d展示本文提示的RPG扩散模型架构。
02-RPG算法简介
上图展示了无训练框架-重新适应、计划和生成(RPG)算法的整体流程。整个RPG算法包括“重新适应、计划、生成”3个关键阶段。
阶段1-重新适应。具体来说,给定一个包括多个实体和关系的复杂文本提示,首先利用多模态LLM识别出关键阶段,并通过MLLM将其分解为基本提示和高度描述性的子提示来重述提示。
阶段2-计划。即利用多模态LLM的思维链CoT规划将分割(子)提示分配给沿空间轴的互补区域。如图中的Stage2: Plan,其被划分成4个子区域。
阶段3-生成。在这些分配的基础上,作者引入互补的区域扩散概念,从而使其能够独立生成图像潜伏时间,并在每个采样步骤中对其进行聚合。
阶段3-生成。该阶段会为其区域扩散生成精确的轮廓信息,并会执行掩码与重新恢复操作。
04.01-区域划分细节
上图展示了区域划分的实现细节。为了生成有意义和准确的子区域,我们需要仔细指定规划区域划分的两个组成部分:
1)区域参数:作者定义行以“;”分隔每列由一系列逗号分隔的数字表示(例如“1,1,1”)。具体来说,首先使用“;”将图像分割成不同的行;然后在每一行中,使用逗号将一行分割成不同区域,如上图所示;
2)指导MLLM的区域性任务规范:作者利用MLLM的CoT推理和一些上下文中设计的例子来推理区域划分的计划。
04.02-互补区域扩散实现细节
05.01-分层区域扩散能力
05.02-泛化能力
上图展示了该算法的泛化能力。图中展示了将RPG推广到不同的多模态LLM架构(包括Llama 2、Vicuna和MiniGPT-4)上的生成效果。
05.03-图像编辑能力
上图展示了该算法的重适应能力。与没有增加该能力的生成结果相比,增加了重适应能力的RPG算法生成的图片更惊艳、更具有吸引力!
# 复制代码到本地
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.txt
git clone https://github.com/huggingface/diffusers
06.02-运行Demo
# 利用GPT-4执行区域扩散样例代码
from RegionalDiffusion_base import RegionalDiffusionPipeline
from RegionalDiffusion_xl import RegionalDiffusionXLPipeline
from diffusers.schedulers import KarrasDiffusionSchedulers,DPMSolverMultistepScheduler
from mllm import local_llm,GPT4
import 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 input
prompt= ' 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 results
split_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.01-主观效果性能评估
上面几张图展示了该算法与SDXL与DALL-E3两个SOTA的文生图算法的主观效果比较结果。通过仔细观察与分析,我们可以发现:RPG生成的图片更符合文本描述、更具有美感、更具有吸引力!
上图展示了该算法与多个SOTA的图像编辑算法(rompt2Prompt、InstructPix2Pix、MasaCtrl)在相同的文本提示下的编辑效果。通过观察我们可以发现:RPG的编辑效果更好一些,它能够准确的对图片中的目标执行增删添改操作!
上表展示了该算法与多个SOTA的文生图算法在相同的文本提示下的客观指标评估结果。通过观察与分析,我们可以得出以下的初步结论: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.9-RPG算法效果展示9
图8.10-RPG算法效果展示10
图8.13-RPG算法效果展示13
关注我,AI热点早知道,AI算法早精通,AI产品早上线!
欢迎你的加入,让我们一起交流、讨论与成长!
若二维码失效:关注公众号--》交流分享--》联系我们(备注:AI产品汇)
禁止私自转载,需要转载请先征求我的同意!