当前位置: 首页 > news >正文

腾讯旗下InstantCharacter框架正式开源 可高度个性化任何角色

目前基于学习的主题定制方法主要依赖于 U-Net 架构,但其泛化能力有限,图像质量也大打折扣。同时,基于优化的方法需要针对特定主题进行微调,这不可避免地会降低文本的可控性。为了应对这些挑战,我们提出了 “即时角色”(InstantCharacter)–一种基于基础扩散变换器的可扩展字符定制框架。InstantCharacter 展示了三个基本优势:首先,它在保持高保真效果的同时,实现了不同角色外观、姿势和风格的开放域个性化。其次,该框架引入了带有级联变换器编码器的可扩展适配器,可有效处理开放域角色特征,并与现代扩散变换器的潜在空间无缝交互。第三,为了有效地训练框架,我们构建了一个包含千万级样本的大规模字符数据集。该数据集被系统地组织成配对(多视角字符)和非配对(文本-图像组合)子集。这种双重数据结构可通过不同的学习途径同时优化身份一致性和文本可编辑性。定性实验证明了 InstantCharacter 在生成高保真、文本可控和字符一致图像方面的先进能力,为字符驱动的图像生成设定了新基准。

在这里插入图片描述

方法

与传统的基于 UNet 的架构相比,现代 DiT 已显示出前所未有的保真度和容量,为生成和编辑任务提供了更强大的基础。然而,现有的方法主要基于 UNet,在字符一致性和图像保真度之间面临着根本性的权衡,限制了它们在开放域字符上的通用能力。此外,之前没有任何工作成功验证了大规模扩散变换器(如 12B 参数)上的字符定制,这在该领域留下了巨大的空白。在这些进展的基础上,我们提出了 InstantCharacter,这是一个新颖的框架,它扩展了 DiT,用于可通用的高保真字符驱动图像生成。InstantCharacter 的架构围绕两项关键创新展开。首先,开发了一个可扩展的适配器模块,以有效解析字符特征,并与 DiT 的潜在空间进行无缝交互。其次,我们设计了一种渐进式三阶段训练策略,以适应我们收集的多用途数据集,从而实现字符一致性和文本可编辑性的分离训练。通过将灵活的适配器设计和分阶段学习策略协同结合,我们增强了通用字符定制能力,同时最大限度地保留了基础 DiT 模型的生成先验。在下面的章节中,我们将详细介绍适配器的架构,并详细阐述我们的渐进式训练策略。

在这里插入图片描述
在这里插入图片描述

我们的框架将可扩展的适配器与预训练的 DiT 模型无缝集成。适配器由多个堆叠变压器编码器组成,可逐步完善字符表征,实现与 DiT 潜在空间的有效互动。训练过程采用三阶段渐进策略,从无配对低分辨率预训练开始,到配对高分辨率微调结束。

https://github.com/Tencent/InstantCharacter

演示

官方推荐45GB 内存

# !pip install transformers accelerate diffusers huggingface_cli
import torch
from PIL import Image
from pipeline import InstantCharacterFluxPipeline# Step 1 Load base model and adapter
ip_adapter_path = 'checkpoints/instantcharacter_ip-adapter.bin'
base_model = 'black-forest-labs/FLUX.1-dev'
image_encoder_path = 'google/siglip-so400m-patch14-384'
image_encoder_2_path = 'facebook/dinov2-giant'
seed = 123456
pipe = InstantCharacterFluxPipeline.from_pretrained(base_model, torch_dtype=torch.bfloat16)
pipe.to("cuda")
pipe.init_adapter(image_encoder_path=image_encoder_path, image_encoder_2_path=image_encoder_2_path, subject_ipadapter_cfg=dict(subject_ip_adapter_path=ip_adapter_path, nb_token=1024), 
)# Step 2 Load reference image
ref_image_path = 'assets/girl.jpg'  # white background
ref_image = Image.open(ref_image_path).convert('RGB')# Step 3 Inference without style
prompt = "A girl is playing a guitar in street"
image = pipe(prompt=prompt, num_inference_steps=28,guidance_scale=3.5,subject_image=ref_image,subject_scale=0.9,generator=torch.manual_seed(seed),
).images[0]
image.save("flux_instantcharacter.png")
# You can also use other style lora# Step 3 Inference with style
lora_file_path = 'checkpoints/style_lora/ghibli_style.safetensors'
trigger = 'ghibli style'
prompt = "A girl is playing a guitar in street"
image = pipe.with_style_lora(lora_file_path=lora_file_path,trigger=trigger,prompt=prompt, num_inference_steps=28,guidance_scale=3.5,subject_image=ref_image,subject_scale=0.9,generator=torch.manual_seed(seed),
).images[0]
image.save("flux_instantcharacter_style_ghibli.png")# Step 3 Inference with style
lora_file_path = 'checkpoints/style_lora/Makoto_Shinkai_style.safetensors'
trigger = 'Makoto Shinkai style'
prompt = "A girl is playing a guitar in street"
image = pipe.with_style_lora(lora_file_path=lora_file_path,trigger=trigger,prompt=prompt, num_inference_steps=28,guidance_scale=3.5,subject_image=ref_image,subject_scale=0.9,generator=torch.manual_seed(seed),
).images[0]
image.save("flux_instantcharacter_style_Makoto.png")

相关文章:

  • MySQL中常用函数的分类及示例
  • Java基础问题定位之调试
  • 深度学习语音识别
  • 蓝桥杯之递归二
  • 日语学习-日语知识点小记-进阶-JLPT-N2阶段(6): - (1)ても てでも特别强调(2)~もしないで = 聞かないで:根本不做某动作”
  • Kubernetes相关的名词解释kube-proxy插件(3)
  • Python+Selenium+Pytest+POM自动化测试框架封装(完整版)
  • 【MySQL数据库】数据类型
  • 编程语言基础 - C++ 面试题
  • 基于WiFi的智能教室数据监测系统的设计与实现
  • 多人3D游戏完整实现方案
  • 为什么信号完整性对于高速连接器设计至关重要?
  • 动态规划算法的欢乐密码(一):斐波那契数模型
  • go-map+sync.map的底层原理
  • 洛谷B3862:图的遍历(简单版)← 链式前向星
  • 结构体详解
  • 《AI大模型应知应会100篇》第27篇:模型温度参数调节:控制创造性与确定性
  • 致远OA——数据回填表单
  • 工业物联网安全网关 —— 安全OTA升级签名验证
  • 回溯算法(3):番外篇
  • 一条水脉串起七个特色区块,上海嘉定发布2025年新城行动方案
  • 澎湃思想周报|哈佛与特朗普政府之争;学习适应“混乱世”
  • 云南:近两千亩拍得土地因规划变更不得开发,政府要求转型、企业无力为继
  • 全球建筑瞭望|与自然共呼吸的溪谷石舍与海边公共空间
  • 讲座预告|把握可持续信息披露新机遇
  • 世贸组织:2025年全球贸易量或将进一步萎缩