综合介绍
InstantCharacter 是由腾讯 Hunyuan 和 InstantX 团队开发的一个开源项目,托管在 GitHub 上。它通过一张参考图片和一句文本描述,就能生成外观一致的角色图像,适用于多种场景和风格。项目基于扩散变换器(Diffusion Transformer)技术,突破了传统 U-Net 架构的限制,提供更高的图像质量和灵活性。用户无需复杂调参,只需简单操作即可生成符合描述的角色图像,广泛应用于动画、游戏和数字艺术等领域。项目支持 Flux.1 模型,并提供风格 LoRA 适配,方便用户实现风格化生成。
功能列表
- 单张图片生成一致性角色:仅需一张参考图片,生成不同场景、动作和视角的角色图像。
- 文本驱动生成:通过文本提示调整角色动作、场景和风格,如“女孩在街头弹吉他”。
- 风格迁移支持:兼容多种风格 LoRA,如吉卜力风格或新海诚风格,生成艺术化图像。
- 高质量图像输出:基于 Flux.1 模型,生成高分辨率、细节丰富的角色图像。
- 开源模型支持:支持 Flux 等开源文本到图像模型,开发者可自由扩展功能。
- 轻量级适配器:使用可扩展适配器模块,减少计算资源消耗,提高生成效率。
- 大规模数据集优化:基于千万级样本数据集训练,确保角色一致性和文本可控性。
使用帮助
安装流程
InstantCharacter 需要在支持 GPU 的环境中运行,推荐使用 NVIDIA GPU(最低 48GB VRAM,优化后可支持 24GB)。以下是详细的安装步骤:
- 环境准备:
- 安装 Python 3.8 或以上版本。
- 安装 PyTorch(支持 CUDA),推荐使用
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
。 - 安装依赖库,运行以下命令:
pip install transformers accelerate diffusers huggingface_cli
- 确保系统已安装 Git 和 Git LFS,用于下载大文件。
- 克隆仓库:
- 打开终端,运行以下命令克隆 InstantCharacter 仓库:
git clone https://github.com/Tencent/InstantCharacter.git cd InstantCharacter
- 打开终端,运行以下命令克隆 InstantCharacter 仓库:
- 下载模型检查点:
- 从 Hugging Face 下载模型:
huggingface-cli download --resume-download Tencent/InstantCharacter --local-dir checkpoints --local-dir-use-symlinks False
- 如果无法访问 Hugging Face,可使用镜像地址:
export HF_ENDPOINT=https://hf-mirror.com huggingface-cli download --resume-download Tencent/InstantCharacter --local-dir checkpoints --local-dir-use-symlinks False
- 下载完成后,检查文件夹结构是否包含
checkpoints
、assets
、models
等目录。
- 从 Hugging Face 下载模型:
- 设置运行环境:
- 确保 GPU 驱动和 CUDA 版本与 PyTorch 兼容。
- 将模型和代码移至支持 CUDA 的设备,运行
pipe.to("cuda")
。
使用方法
InstantCharacter 的核心功能是通过参考图片和文本提示生成角色图像。以下是详细操作流程:
1. 加载模型和适配器
- 使用提供的
pipeline.py
脚本加载基础模型和适配器。示例代码如下:import torch from PIL import Image from pipeline import InstantCharacterFluxPipeline # 设置种子以确保可重复性 seed = 123456 # 加载基础模型 base_model = 'black-forest-labs/FLUX.1-dev' ip_adapter_path = 'checkpoints/instantcharacter_ip-adapter.bin' image_encoder_path = 'google/siglip-so400m-patch14-384' image_encoder_2_path = 'facebook/dinov2-giant' # 初始化管道 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) )
- 上述代码加载 Flux.1 模型和 InstantCharacter 的 IP 适配器,确保模型在 GPU 上运行。
2. 准备参考图片
- 选择一张包含角色的图片(如
assets/girl.jpg
),确保背景简单(如白色背景)。 - 加载图片并转换为 RGB 格式:
ref_image_path = 'assets/girl.jpg' ref_image = Image.open(ref_image_path).convert('RGB')
3. 生成角色图像(无风格迁移)
- 使用文本提示生成图像,设置推理步数、引导尺度等参数:
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")
subject_scale
控制角色一致性,值越低越偏向风格化(如 0.6 或 0.8)。
4. 使用风格 LoRA 进行风格迁移
- InstantCharacter 支持风格 LoRA(如吉卜力或新海诚风格)。加载 LoRA 文件并生成风格化图像:
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")
- 替换
lora_file_path
和trigger
可切换不同风格(如Makoto_Shinkai_style.safetensors
)。
5. 运行 Gradio 界面(可选)
- 项目提供 Gradio 界面,方便交互式操作。运行
app.py
:python app.py
- 打开浏览器访问本地地址(如
http://127.0.0.1:7860
),上传图片并输入提示词即可生成图像。
注意事项
- 动物角色生成可能不稳定,建议使用人类角色图片。
- 高分辨率生成需要更高显存,推荐使用 A100 或 RTX 5000 系列 GPU。
- 模型下载可能因网络问题中断,建议使用
--resume-download
参数。
应用场景
- 动画与影视制作
- 快速生成角色概念图或故事板,缩短前期设计周期。用户上传角色草图,输入场景描述(如“角色在森林中奔跑”),即可生成一致性图像,适用于动画预览或角色测试。
- 游戏开发
- 为游戏角色生成多视角、多动作的图像。开发者上传角色设计图,生成不同姿势的 sprites(如“角色挥剑”),用于 2D 或 3D 游戏资源。
- 数字艺术创作
- 艺术家使用风格 LoRA 生成艺术化角色图像,如将现实人物转为吉卜力风格,应用于插画或 NFT 创作。
- 社交媒体内容
- 用户上传自拍,生成动漫风格的头像或动态场景(如“自己在科幻城市跳舞”),用于个性化社交媒体内容。
QA
- InstantCharacter 支持哪些模型?
- 目前支持 Flux.1 模型,未来可能扩展到其他开源文本到图像模型。
- 需要多大的显存才能运行?
- 推荐 48GB 显存,优化后可支持 24GB。正在开发量化技术以降低显存需求。
- 如何解决模型下载失败?
- 使用 Hugging Face 镜像地址或
--resume-download
参数,确保网络稳定。
- 使用 Hugging Face 镜像地址或
- 生成的动物角色为什么不稳定?
- 模型训练数据以人类角色为主,动物特征优化不足,建议使用人类角色图片。
- 可以商用吗?
- 当前许可证仅限研究用途,商用需联系腾讯获取授权。