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 による Identity-Preserving Text-to-Video Generation by Frequency Decomposition

論文の抄録は以下の通りです:

アイデンティティを保持したテキストから動画への生成(IPT2V)は、人間のアイデンティティが一貫した高忠実度の動画を生成することを目的としています。これは動画生成における重要なタスクですが、生成モデルにとって未解決の問題として残っています。本論文では、文献において未解決であった2つの方向性でIPT2Vの技術的フロンティアを押し広げます:(1) 面倒なケースバイケースのファインチューニングを必要としないチューニングフリーのパイプライン、および (2) 周波数認識型のヒューリスティックなアイデンティティ保持型 Diffusion Transformer (DiT) ベースの制御スキーム。これらの目標を達成するために、私たちは ConsisID を提案します。これは、生成された動画内で人間のidentity consistent(アイデンティティの一貫性)を維持するための、チューニングフリーな DiT ベースの制御可能な IPT2V モデルです。ビジョン/拡散トランスフォーマーの周波数分析に関する先行研究の知見に着想を得て、顔の特徴を低周波数のグローバル特徴(プロファイルや比率など)と、高周波数の固有特徴(ポーズの変化に影響を受けないアイデンティティマーカーなど)に分解できる周波数領域で、アイデンティティ制御シグナルを用います。まず、低周波数の観点から、グローバルな顔エクストラクターを導入します。これは参照画像と顔のキーポイントを潜在空間にエンコードし、低周波数情報が豊富に含まれた特徴を生成します。これらの特徴はネットワークの浅い層に統合され、DiT に関連するトレーニングの課題を軽減します。次に、高周波数の観点から、高周波数の詳細をキャプチャし、トランスフォーマーブロックに注入するローカルな顔エクストラクターを設計し、モデルの細粒度な特徴を保持する能力を強化します。周波数情報を利用してアイデンティティを保持するために、階層的なトレーニング戦略を提案し、バニラの事前学習済み動画生成モデルを IPT2V モデルに変換します。広範な実験により、私たちの周波数認識型のヒューリスティックなスキームが、DiT ベースのモデルにとって最適な制御ソリューションを提供することが示されました。このスキームのおかげで、私たちの ConsisID は、高品質でアイデンティティを保持した動画の生成において優れた結果を達成し、より効果的な IPT2V への歩みを進めています。ConsisID のモデル重みは https://github.com/PKU-YuanGroup/ConsisID で公開されています。

スケジューラーのトレードオフ、すなわち速度と品質のバランスをどのように探求するかを学ぶには、ガイドを必ずご確認ください。また、同じコンポーネントを複数のパイプラインに効率的に読み込む方法については、パイプライン間でコンポーネントを再利用するセクションを参照してください。

このパイプラインはSHYuanBestによって貢献されました。元のコードベースはこちらで確認できます。元の重みはhf.co/BestWishYshの下で確認できます。

アイデンティティを保持したテキストから動画への生成には、ConsisIDの公式チェックポイントが2つあります。

チェックポイント推奨される推論用データ型
BestWishYsh/ConsisID-previewtorch.bfloat16
BestWishYsh/ConsisID-1.5torch.bfloat16

メモリ最適化

ConsisID は、出力解像度 720x480 (W x H) で 49 フレーム (8 FPS での 6 秒間の動画) をデコードするために約 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, or list[list[PIL.Image.Image]]) — 動画出力のリストです。batch_size, 長のネストされたリストであり、各サブリストが num_frames. 長のノイズ除去済み PIL 画像シーケンスを含む形式をとることもできます。また、(batch_size, num_frames, channels, height, width) の形状を持つ NumPy 配列や Torch テンソルとしても指定できます。

ConsisID パイプライン用の出力クラスです。

Update on GitHub