Diffusers documentation
ConsisID
ConsisID
来自北京大学、罗切斯特大学等机构的 基于频率分解的身份保持文本到视频生成,作者为 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-preview | torch.bfloat16 |
BestWishYsh/ConsisID-1.5 | torch.bfloat16 |
内存优化
ConsisID 在解码 49 帧(8 FPS 下 6 秒的视频)且输出分辨率为 720x480(宽 x 高)时,大约需要 44 GB 的 GPU 显存,因此无法在消费级 GPU 或免费层级的 T4 Colab 上运行。可以使用以下显存优化方法来降低显存占用。如需复现,请参考 此 脚本。
| 功能(覆盖之前的) | 最大内存分配 | 最大预留内存 |
|---|---|---|
| - | 37 GB | 44 GB |
| enable_model_cpu_offload | 22 GB | 25 GB |
| enable_sequential_cpu_offload | 16 GB | 22 GB |
| vae.enable_slicing | 16 GB | 22 GB |
| vae.enable_tiling | 5 GB | 7 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。
- 一段展示 ConsisID 主要功能的视频。
- 有关更多详细信息,请参阅研究论文 通过频率分解实现身份保持的文本到视频生成。
ConsisIDPipeline
ConsisIDPipelineOutput
class diffusers.pipelines.consisid.pipeline_output.ConsisIDPipelineOutput
< source >( frames: Tensor )
ConsisID 管道的输出类。









