Stable-Video-Diffusionを試す
画像生成分野の目覚ましい発展に伴い、いよいよ動画生成もかなり実用性を帯びてきました。
本日は、巷を賑わすImage-to-Videoのモデル、Stable-Video-Diffusionを紹介します。
今回のブログの絵を動かしてみたのがこちらです
あまり動いてくれませんでしたが、うまく行くとこれぐらいダイナミックに動いてくれるようです。
実際どうなの?
百聞は一見にしかず、ということで、実際に動いているのをいくつか…
所感
得意不得意がはっきりしている印象です。
カメラの回転や光の動きなどのシンプルな動きは得意ですが、見たこと無い物が出てくると動くものと思わずにほとんど静止画になってしまいます。
Imgaeプロンプトの腕の見せ所かもしれませんね。
次から、動かし方や内部の仕組みを見ていきます。
動かし方
mkshingさんの作っていただいたNotebookを丸まま使っています
圧倒的感謝 🙏
負荷はMAXまで行きますが、1動画7分前後で出来てくれます。
何回か作ると落ちたりするので、ローカルでの実行を進め中…
仕組み1:データセット厳選
以下の論文の各要素はChatGPTくんにまとめてもらったものなので、
変なこと言ってたら適宜修正予定です。(今日中に読めなかった…)
ステージI: イメージ事前訓練
目的: ビデオモデルに強力な視覚的表現を提供する。
方法: 既存のイメージ拡散モデル(Stable Diffusion 2.1)を使用して初期モデルを訓練。
比較: 事前訓練された空間的重みを持つモデルと持たないモデルを比較。事前訓練されたモデルが品質とプロンプトに応じた結果で優れていることが示された。
ステージII: ビデオ事前訓練データセットのキュレーション
目的: 効果的な事前訓練データセットを作成する。
方法: 大規模ビデオデータセット(LVD)から、人間の好みに基づいてサブセットを選択。CLIPスコア、美学スコア、OCR検出率、合成キャプション、オプティカルフロースコアなどのアノテーションを使用し、最も効果的なフィルタリング閾値を選択。
結果: LVDから152Mのトレーニング例を含む最終事前訓練データセットLVD-Fが作成された。
ステージIII: 高品質ビデオの微調整
目的: ビデオ事前訓練の影響を最終的なパフォーマンスに反映させる。
方法:
事前訓練されたイメージモデルの重みを持つモデルと、ビデオ事前訓練を受けた(キュレーションされたおよび未キュレーションの)2つのモデルを使用。
高視覚忠実度の250Kプレキャプションビデオクリップを含む小規模な微調整データセットで50Kステップの訓練を行う。
評価: ファインチューニングの進行に伴い、ユーザーの好みのランキングを評価。キュレーションされた事前訓練重みからのファインチューニングが、未キュレーションの訓練重みからのものよりも一貫して高い評価を受けた。
仕組み2:モデル構造
基本モデル
解像度: 最初は256×384ピクセルの14フレームで訓練され、その後320×576ピクセルの14フレームで100kイテレーションの微調整が行われました。
ノイズスケジュール: 標準のEDMノイズスケジュールを使用し、より多くのノイズに向かってシフトしました。これは、高解像度の画像モデルにおいて重要であることが示されています。
バッチサイズ: 最初の訓練段階では1536、微調整段階では768。
特徴: 基本モデルは強力な動きの表現を学習し、ゼロショットのテキスト・ツー・ビデオ生成においてすべての基準を大幅に上回る性能を示しました。
高解像度テキスト・ツー・ビデオモデル
解像度とデータセット: 約100万サンプルの高品質データセットで576×1024ピクセルの解像度で微調整されました。
訓練イテレーション: 50kイテレーション。
バッチサイズと学習率: バッチサイズは768、学習率は3×10−5。
重みの追跡: 重みの指数移動平均を追跡し、最終的なチェックポイントは視覚的検査と人間評価を組み合わせて選択されました。
アーキテクチャ
設計: すべてのモデルはアーキテクチャ的に同一で、既存の空間モデルに基づいて時間的UNetを作成しました。各対応する空間層の後に時間的畳み込みと(クロス)アテンション層を追加しました。
基礎となる2D-UNet: Stable Diffusion 2.1のアーキテクチャを使用し、その重みをすべての実行の空間層の初期化に使用しました。
ベースモデルの事前訓練
ノイズスケジュールの調整: イメージモデルからの固定離散ノイズスケジュールを連続ノイズに微調整し、256×384ピクセルの画像サイズに対してネットワークの前処理を行いました。
仕組み3:学習工程
2Dベースモデルの使用:モデルは、静止画像生成用の既存の2D拡散モデル(特にStable Diffusion 2.1)に基づいています。このモデルは強力な視覚表現を提供し、静止画像の生成において高い性能を持っています。
時間的層の挿入:ビデオ生成には時間次元が不可欠です。そのため、2Dモデルに時間的畳み込み層および(クロス)アテンション層を追加して、時間的情報を扱えるようにします。これにより、モデルは静止画像だけでなく、時間的な連続性を持つビデオフレームの生成が可能になります。
事前訓練と微調整:
事前訓練: モデルはまず静止画像データセットで事前訓練され、強力な視覚的基盤を築きます。その後、ビデオデータセットでの事前訓練が行われ、時間的情報の処理能力を高めます。
微調整: 高解像度のビデオクリップでモデルを微調整し、最終的なビデオ生成モデルの性能を最適化します。この段階での訓練は、モデルにより詳細でリアルなビデオフレームの生成能力を与えます。
条件付き生成:モデルは、テキストや画像などの入力条件に基づいてビデオを生成する能力を持っています。例えば、画像からビデオへのタスクでは、テキストエンベッディングの代わりに、条件となるフレームのCLIP画像エンベッディングをベースモデルに供給します。
まとめ
手軽に画像を動画にできる時代がもうすぐそこ、という感じですが、
やはり未知のものに弱い欠点が強く出てしまうのでオリジナルキャラクターとかを動かしたい需要への回答はまだかも…
ただちょっとしたPVを作ったりするのはすごく簡単になりましたし、これにテキスト情報とかを加味してチューニングできればかなり汎用性のあるモデルが出来そう楽しみ