🚀 混元视频(HunyuanVideo)
本项目是用于大型视频生成模型训练的系统框架,提供了模型定义、预训练权重和推理代码,助力视频生成领域的研究与应用。
🚀 クイックスタート
このリポジトリには、HunyuanVideoに関する論文のPyTorchモデル定義、事前学習済みの重み、および推論/サンプリングコードが含まれています。詳細なビジュアライゼーションは、プロジェクトページで確認できます。
HunyuanVideo: A Systematic Framework For Large Video Generation Model Training
🔥🔥🔥 ニュース!!
- 2024年12月3日: 🤗 HunyuanVideoの推論コードとモデルの重みを公開しました。
✨ 主な機能
📑 オープンソース計画
- HunyuanVideo (テキストからビデオへのモデル)
- [x] 推論
- [x] チェックポイント
- [ ] ペンギンビデオベンチマーク
- [ ] Webデモ (Gradio)
- [ ] ComfyUI
- [ ] Diffusers
- HunyuanVideo (画像からビデオへのモデル)
🎉 HunyuanVideoの主要な特徴
統一された画像とビデオ生成アーキテクチャ
HunyuanVideoはTransformer設計を導入し、完全注意メカニズムを採用して、統一的な画像とビデオ生成を実現しています。具体的には、ビデオ生成に「デュアルストリームからシングルストリーム」のハイブリッドモデル設計を使用しています。デュアルストリームフェーズでは、ビデオとテキストのトークンが複数のTransformerブロックを通じて独立して処理され、各モダリティが干渉することなく独自の適切な変調メカニズムを学習できるようになっています。シングルストリームフェーズでは、ビデオとテキストのトークンを連結し、後続のTransformerブロックに入力して、効果的なマルチモーダル情報融合を行います。この設計により、視覚情報とセマンティック情報の複雑な相互作用を捉え、モデル全体の性能が向上します。
MLLMテキストエンコーダ
以前の一部のテキストからビデオへのモデルでは、通常、事前学習済みのCLIPとT5 - XXLをテキストエンコーダとして使用していました。CLIPはTransformerエンコーダを、T5はエンコーダ - デコーダ構造を使用しています。これに対し、我々はデコーダのみの構造を持つ事前学習済みのマルチモーダル大規模言語モデル(MLLM)をテキストエンコーダとして利用しています。これには以下の利点があります:(i) T5と比較して、視覚命令の微調整後のMLLMは、特徴空間においてより良い画像 - テキストのアラインメントを持ち、拡散モデルにおける命令の追従の難しさを軽減します;(ii) CLIPと比較して、MLLMは画像の詳細な説明と複雑な推論において優れた能力を示しています;(iii) MLLMは、ユーザーのプロンプトに付加されたシステム命令に従うことで、ゼロショット学習者として機能し、テキスト特徴が重要な情報により多くの注意を向けることを助けます。さらに、MLLMは因果的注意に基づいているのに対し、T5 - XXLは双方向注意を利用しており、拡散モデルに対してより良いテキストガイダンスを提供します。そのため、我々はテキスト特徴を強化するために追加の双方向トークンリファイナーを導入しています。
3D VAE
HunyuanVideoはCausalConv3Dを使用して3D VAEを学習し、ピクセル空間のビデオと画像をコンパクトな潜在空間に圧縮します。ビデオの長さ、空間、チャネルの圧縮率はそれぞれ4、8、16に設定されています。これにより、後続の拡散Transformerモデルのトークン数を大幅に削減し、元の解像度とフレームレートでビデオを学習することができます。
プロンプト書き換え
ユーザーが提供するプロンプトの言語スタイルと長さの変動に対応するため、我々は[Hunyuan - Largeモデル](https://github.com/Tencent/Tencent - Hunyuan - Large)をプロンプト書き換えモデルとして微調整し、元のユーザープロンプトをモデルが好むプロンプトに適応させています。
我々は2つの書き換えモードを提供しています:通常モードとマスターモードで、それぞれ異なるプロンプトを使用して呼び出すことができます。通常モードは、ビデオ生成モデルがユーザーの意図をよりよく理解できるように設計されており、提供された命令のより正確な解釈を促進します。マスターモードは、構図、照明、カメラムーブメントなどの側面の説明を強化し、より高い視覚品質のビデオの生成に向けられています。ただし、この強調は時にはいくつかのセマンティックな詳細を失う可能性があります。
プロンプト書き換えモデルは、[Hunyuan - Largeのオリジナルコード](https://github.com/Tencent/Tencent - Hunyuan - Large)を使用して直接展開し、推論することができます。我々はプロンプト書き換えモデルの重みを[ここ](https://huggingface.co/Tencent/HunyuanVideo - PromptRewrite)で公開しています。
📈 比較
HunyuanVideoの性能を評価するために、我々はクローズソースのビデオ生成モデルから5つの強力なベースラインを選択しました。合計で1,533のテキストプロンプトを使用し、一度の実行でHunyuanVideoで同数のビデオサンプルを生成しました。公平な比較のために、推論は一度だけ行い、結果のピックアップを避けました。ベースラインメソッドと比較する際には、選択したすべてのモデルのデフォルト設定を維持し、ビデオ解像度を一定に保ちました。ビデオは3つの基準:テキストアラインメント、モーション品質、視覚品質に基づいて評価されました。60人以上の専門評価者が評価を行いました。特に、HunyuanVideoは全体的な性能が最も良く、特にモーション品質において優れていました。
モデル | オープンソース | 時間 | テキストアラインメント | モーション品質 | 視覚品質 | 全体 | ランキング |
HunyuanVideo (我々のもの) | ✔ | 5s | 61.8% | 66.5% | 95.7% | 41.3% | 1 |
CNTopA (API) | ✘ | 5s | 62.6% | 61.7% | 95.6% | 37.7% | 2 |
CNTopB (Web) | ✘ | 5s | 60.1% | 62.9% | 97.7% | 37.5% | 3 |
GEN - 3 alpha (Web) | ✘ | 6s | 47.7% | 54.7% | 97.5% | 27.4% | 4 |
Luma1.6 (API) | ✘ | 5s | 57.6% | 44.2% | 94.1% | 24.8% | 6 |
CNTopC (Web) | ✘ | 5s | 48.4% | 47.2% | 96.3% | 24.6% | 5 |
📦 インストール
📜 必要条件
以下の表は、HunyuanVideoモデルを実行してビデオを生成するための要件を示しています(バッチサイズ = 1):
モデル |
設定 (高さ/幅/フレーム) |
GPUピークメモリ |
HunyuanVideo |
720px1280px129f |
60GB |
HunyuanVideo |
544px960px129f |
45GB |
- CUDAをサポートするNVIDIA GPUが必要です。
- モデルは単一の80G GPUでテストされています。
- 最小: 720px1280px129fの場合は最小60GB、544px960px129fの場合は45GBのGPUメモリが必要です。
- 推奨: より良い生成品質のために、80GBのメモリを持つGPUの使用を推奨します。
- テストされたオペレーティングシステム: Linux
🛠️ 依存関係とインストール
まず、リポジトリをクローンします:
git clone https://github.com/tencent/HunyuanVideo
cd HunyuanVideo
Linux用のインストールガイド
Conda環境を設定するためのenvironment.yml
ファイルを提供しています。Condaのインストール手順はここにあります。
CUDAバージョン11.8と12.0+を推奨します。
# 1. Conda環境を準備する
conda env create -f environment.yml
# 2. 環境をアクティブ化する
conda activate HunyuanVideo
# 3. pip依存関係をインストールする
python -m pip install -r requirements.txt
# 4. 高速化のためにFlash Attention v2をインストールする (CUDA 11.8以上が必要)
python -m pip install git+https://github.com/Dao-AILab/flash-attention.git@v2.5.9.post1
さらに、HunyuanVideoは事前構築されたDockerイメージも提供しています:
docker_hunyuanvideo。
# 1. 以下のリンクを使用してDockerイメージのtarファイルをダウンロードする (CUDA 12用)
wget https://aivideo.hunyuan.tencent.com/download/HunyuanVideo/hunyuan_video_cu12.tar
# 2. Dockerのtarファイルをインポートし、イメージのメタ情報を表示する (CUDA 12用)
docker load -i hunyuan_video.tar
docker image ls
# 3. イメージに基づいてコンテナを実行する
docker run -itd --gpus all --init --net=host --uts=host --ipc=host --name hunyuanvideo --security-opt=seccomp=unconfined --ulimit=stack=67108864 --ulimit=memlock=-1 --privileged docker_image_tag
🧱 事前学習済みモデルのダウンロード
事前学習済みモデルのダウンロードの詳細はここに示されています。
💻 使用例
基本的な使用法
cd HunyuanVideo
python3 sample_video.py \
--video-size 720 1280 \
--video-length 129 \
--infer-steps 30 \
--prompt "a cat is running, realistic." \
--flow-reverse \
--seed 0 \
--use-cpu-offload \
--save-path ./results
高度な使用法
我々は、使いやすさのためにいくつかの有用な設定をリストしています:
引数 |
デフォルト |
説明 |
--prompt |
None |
ビデオ生成のためのテキストプロンプト |
--video-size |
720 1280 |
生成されるビデオのサイズ |
--video-length |
129 |
生成されるビデオの長さ |
--infer-steps |
30 |
サンプリングのステップ数 |
--embedded-cfg-scale |
6.0 |
埋め込み型分類器フリーガイダンススケール |
--flow-shift |
9.0 |
フローマッチングスケジューラのシフト係数 |
--flow-reverse |
False |
逆方向の場合、t = 1 -> t = 0から学習/サンプリング |
--neg-prompt |
None |
ビデオ生成のためのネガティブプロンプト |
--seed |
0 |
ビデオ生成のための乱数シード |
--use-cpu-offload |
False |
モデルのロードにCPUオフロードを使用して、より多くのメモリを節約します。高解像度のビデオ生成に必要です |
--save-path |
./results |
生成されたビデオを保存するパス |
🔧 技術詳細
概要アーキテクチャ
HunyuanVideoは、因果的3D VAEを通じて圧縮された空間的・時間的に圧縮された潜在空間で学習されます。テキストプロンプトは大規模言語モデルを使用してエンコードされ、条件として使用されます。ガウスノイズと条件が入力として取り込まれ、生成モデルは出力潜在を生成し、これが3D VAEデコーダを通じて画像またはビデオにデコードされます。
🔗 BibTeX
もしHunyuanVideoがあなたの研究やアプリケーションに役立つ場合、以下のBibTeXを使用して引用してください:
@misc{kong2024hunyuanvideo,
title={HunyuanVideo: A Systematic Framework For Large Video Generative Models},
author={Weijie Kong, Qi Tian, Zijian Zhang, Rox Min, Zuozhuo Dai, Jin Zhou, Jiangfeng Xiong, Xin Li, Bo Wu, Jianwei Zhang, Kathrina Wu, Qin Lin, Aladdin Wang, Andong Wang, Changlin Li, Duojun Huang, Fang Yang, Hao Tan, Hongmei Wang, Jacob Song, Jiawang Bai, Jianbin
📄 ライセンス
このプロジェクトは、tencent - hunyuan - communityライセンスの下で公開されています。