Diffusers documentation

ConsisID

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ConsisID

LoRA

来自北京大学、罗切斯特大学等机构的 基于频率分解的身份保持文本到视频生成,作者为 Shenghai Yuan、Jinfa Huang、Xianyi He、Yunyang Ge、Yujun Shi、Liuhan Chen、Jiebo Luo、Li Yuan。

该论文的摘要如下:

保身份文生视频(IPT2V)生成旨在创建具有稳定人物身份的高保真视频。这是视频生成领域的一项重要任务,但对于生成式模型而言仍是一个开放性问题。本文在文献中尚未解决的 IPT2V 技术前沿上推进了两个方向:(1)一种无需繁琐的逐案例微调的免调优(tuning-free)流水线,以及(2)一种频率感知的启发式保身份 Diffusion Transformer(DiT)控制方案。为实现这些目标,我们提出了 ConsisID,这是一个基于 DiT 的免调优可控 IPT2V 模型,旨在使生成视频中的人物身份一致。受视觉/扩散 Transformer 频率分析中先前发现的启发,它在频率域中使用身份控制信号,其中面部特征可以分解为低频全局特征(例如轮廓、比例)和高频内在特征(例如不受姿态变化影响的身份标记)。首先,从低频角度出发,我们引入了一个全局面部提取器,它将参考图像和面部关键点编码到潜在空间中,生成富含低频信息的特征。然后,将这些特征集成到网络的浅层中,以缓解与 DiT 相关的训练挑战。其次,从高频角度出发,我们设计了一个局部面部提取器来捕获高频细节,并将其注入 Transformer 块中,从而增强模型保留细粒度特征的能力。为了利用频率信息进行身份保持,我们提出了一种分层训练策略,将一个普通的预训练视频生成模型转化为 IPT2V 模型。大量实验表明,我们的频率感知启发式方案为基于 DiT 的模型提供了最优的控制解决方案。得益于该方案,我们的 ConsisID 在生成高质量、保身份视频方面取得了优异的结果,朝着更有效的 IPT2V 迈出了重要一步。ConsisID 的模型权重可在 https://github.com/PKU-YuanGroup/ConsisID 公开获取。

请务必参阅 调度器指南,了解如何探索调度器速度与质量之间的权衡,并查看 跨流水线复用组件 部分,了解如何高效地将相同组件加载到多个流水线中。

此流水线由 SHYuanBest 贡献。原始代码库可在 此处 找到。原始权重可在 hf.co/BestWishYsh 下找到。

有两个官方的 ConsisID 检查点,用于保持身份一致性的文本到视频生成。

检查点推荐的推理数据类型
BestWishYsh/ConsisID-previewtorch.bfloat16
BestWishYsh/ConsisID-1.5torch.bfloat16

内存优化

ConsisID 在解码 49 帧(8 FPS 下 6 秒的视频)且输出分辨率为 720x480(宽 x 高)时,大约需要 44 GB 的 GPU 显存,因此无法在消费级 GPU 或免费层级的 T4 Colab 上运行。可以使用以下显存优化方法来降低显存占用。如需复现,请参考 此 脚本。

功能(覆盖之前的)最大内存分配最大预留内存
-37 GB44 GB
enable_model_cpu_offload22 GB25 GB
enable_sequential_cpu_offload16 GB22 GB
vae.enable_slicing16 GB22 GB
vae.enable_tiling5 GB7 GB

加载模型检查点

模型权重可能存储在 Hub 或本地的不同子文件夹中,在这种情况下,您应使用 from_pretrained() 方法。

# !pip install consisid_eva_clip insightface facexlib
import torch
from diffusers import ConsisIDPipeline
from diffusers.pipelines.consisid.consisid_utils import prepare_face_models, process_face_embeddings_infer
from huggingface_hub import snapshot_download

# Download ckpts
snapshot_download(repo_id="BestWishYsh/ConsisID-preview", local_dir="BestWishYsh/ConsisID-preview")

# Load face helper model to preprocess input face image
face_helper_1, face_helper_2, face_clip_model, face_main_model, eva_transform_mean, eva_transform_std = prepare_face_models("BestWishYsh/ConsisID-preview", device="cuda", dtype=torch.bfloat16)  # or "mps", "xpu", "cpu"

# Load consisid base model
pipe = ConsisIDPipeline.from_pretrained("BestWishYsh/ConsisID-preview", dtype=torch.bfloat16)
pipe.to("cuda")

保持身份一致性的文本到视频

对于保持身份一致性的文本生成视频任务,请传入文本提示词以及一张包含清晰人脸的图像(例如,最好为半身或全身照)。默认情况下,ConsisID 会生成 720x480 的视频,以获得最佳效果。

from diffusers.utils import export_to_video

prompt = "The video captures a boy walking along a city street, filmed in black and white on a classic 35mm camera. His expression is thoughtful, his brow slightly furrowed as if he's lost in contemplation. The film grain adds a textured, timeless quality to the image, evoking a sense of nostalgia. Around him, the cityscape is filled with vintage buildings, cobblestone sidewalks, and softly blurred figures passing by, their outlines faint and indistinct. Streetlights cast a gentle glow, while shadows play across the boy's path, adding depth to the scene. The lighting highlights the boy's subtle smile, hinting at a fleeting moment of curiosity. The overall cinematic atmosphere, complete with classic film still aesthetics and dramatic contrasts, gives the scene an evocative and introspective feel."
image = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/consisid/consisid_input.png?download=true"

id_cond, id_vit_hidden, image, face_kps = process_face_embeddings_infer(face_helper_1, face_clip_model, face_helper_2, eva_transform_mean, eva_transform_std, face_main_model, "cuda", torch.bfloat16, image, is_align_face=True)

video = pipe(image=image, prompt=prompt, num_inference_steps=50, guidance_scale=6.0, use_dynamic_cfg=False, id_vit_hidden=id_vit_hidden, id_cond=id_cond, kps_cond=face_kps, generator=torch.Generator("cuda").manual_seed(42))
export_to_video(video.frames[0], "output.mp4", fps=8)
人脸图像视频描述
这段视频采用精美制作的动画风格,展现了一位自信的女性骑着马穿过郁郁葱葱的林间空地。她神情专注而宁静,熟练地用手调整着宽檐帽。她身穿飘逸的波西米亚长裙,裙摆随着马的节奏优雅地摆动,面料在动画的动态中流畅地飘动。斑驳的阳光透过树冠洒落,在林间地面上投下柔和的、如画般的图案。她的姿态从容不迫,在轻松驾驭马匹的同时,展现出掌控力与优雅。动画柔和流畅的风格为场景增添了一种梦幻般的质感,女性平静的神态与宁静的环境共同唤起一种自由与和谐的感觉。
这段视频以引人入胜的动画风格呈现,画面中一位女子伫立在雪林中央,目光专注地凝视前方,缓缓伸出手臂。她身披深蓝色斗篷,在寒冷的空气中,她呼出的气息清晰可见,并以柔和空灵的笔触加以描绘。当她召唤出一缕冰霜魔法时,她的嘴角浮现出一丝淡淡的微笑,全神贯注地注视着周围的树木和地面开始闪烁并冻结,覆盖上精致的冰晶。动画流畅的动态效果让魔法栩栩如生,霜花以复杂而闪耀的图案向外蔓延。环境以柔和的水彩般色调渲染,进一步烘托出梦幻般的魔法氛围。整体氛围宁静而充满力量,静谧的冬日空气放大了这冰封景象的精致之美。
这段动画描绘了一位在微风中伫立的气球小贩的俏皮肖像,柔和朦胧的笔触营造出宁静春日般的氛围。他的脸庞被温和的微笑所环绕,双眼因阳光而微微眯起,几缕发丝随风轻扬。他身穿一件浅淡的粉彩衬衫,周围的气球随风摇曳,为画面增添了几分俏皮感。背景柔和地虚化,隐约可见充满活力的集市或公园,进一步烘托出这一刻轻松愉悦却又温柔细腻的情绪。
这段视频捕捉了一个男孩沿着城市街道行走的画面,由一台经典的 35mm 相机以黑白胶片拍摄。他的神情若有所思,眉头微蹙,仿佛陷入了沉思。胶片颗粒为画面增添了富有质感的永恒气息,唤起一种怀旧感。在他周围,城市景观中充满了复古的建筑、鹅卵石人行道,以及模糊地匆匆而过的人影,他们的轮廓隐约而模糊。路灯投下柔和的光芒,阴影在男孩的行进路径上交错,为场景增添了层次感。光线突出了男孩嘴角那抹含蓄的微笑,暗示着一丝转瞬即逝的好奇。整体电影般的氛围,配合经典电影静帧的美学风格和强烈的明暗对比,赋予场景一种引人遐想且内省的感觉。
视频中的宝宝身穿一件色彩鲜艳的超级英雄披风,自信地站立着,双臂高举,摆出充满力量的姿势。宝宝神情坚定,双眼圆睁,嘴唇紧抿,全神贯注,仿佛随时准备迎接挑战。场景显得活泼有趣,周围散落着五颜六色的玩具,脚下铺着柔软的地毯,阳光透过附近的窗户洒进来,照亮了飘动的披风,更增添了英雄气概。整体氛围轻松愉快,宝宝的表情捕捉到了天真与可爱勇敢尝试的混合,仿佛真的准备好拯救世界了。

资源

通过以下资源进一步了解 ConsisID。

ConsisIDPipeline

class diffusers.ConsisIDPipeline

< >

( *args**kwargs )

__call__

( *args**kwargs )

将 self 作为函数调用。

ConsisIDPipelineOutput

class diffusers.pipelines.consisid.pipeline_output.ConsisIDPipelineOutput

< >

( frames: Tensor )

参数

  • frames (torch.Tensor、np.ndarray 或 list[list[PIL.Image.Image]]) — 视频输出列表 - 它可以是一个长度为 batch_size, 的嵌套列表,其中每个子列表包含长度为 num_frames. 的去噪 PIL 图像序列。它也可以是一个形状为 (batch_size, num_frames, channels, height, width) 的 NumPy 数组或 Torch 张量。

ConsisID 管道的输出类。

Update on GitHub