cedro-blog

Tune-A-Videoで、文から動画を作成する

1.はじめに

 今回ご紹介するのは、文から画像を生成するモデルに動画と文のペアをファインチューニングし、文の変更によって動画の被写体、背景、属性、スタイルの変更を実現するTune-A-Videoという技術です。

*この論文は、2022.12に提出されました。

2.Tune-A -Videoとは?

 文から動画を生成する技術は以前からありましたが、大規模なテキストとビデオのデータセットが必要で学習コストが極めて高いものでした。Tune-A-Videoは、文から画像を生成するモデルを下記のようにファインチューニングすることで学習コストを下げます。このとき、アテンションブロックの射影行列のみを更新して残りのパラメーターは固定することで効率化を図っています。

 さらに、時空間のアテンションは計算が2次的に増加するため、SC-Attn(Sparse-Causal Attention)は下記のように、動画の最初のフレームと直前のフレームのみを参照する形にしています。

3.コード

 コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Open in Colab」ボタンをクリックすると動かせます。

*但し、今回のモデルはGPUメモリを多く消費するため無料のColabでは動かせず、colab pro(約1,000円/月)のプレミアムGPU設定で「A100」をゲットしないと動かせないので、ご注意下さい。

 まず、セットアップを行います。

  

 それでは、configs/*.yamlの設定に基づいて、動画と文のセットでファインチューニングを行い、色々な文から動画を生成するモデルを作成してみましょう。ここでは、configs/man-surfing.yamlを使用し、まず「男性がサーフィンをしている動画と文(”a man is surfing”)のセット」でファインチューニングします。動画(data/man-surfing)は、これです。

 そのあと、”a panda is surfing”, “a boy, wearing a birthday hat, is surfing”, “a raccoon is surfing, cartoon style”, “Iron Man is surfing in the desert”の4種類の文から動画を生成するモデルを作成します。

 

 作成したモデルを元にGIF動画を作成します。outputs/man-surfing_lr3e-5_seed33の下に作成されているフォルダ名(毎回変わります)をid_nameに記入し、作成したい動画のモデルをpromptで選択します。ここでは、prompt“a panda is surfing”を選択しています。なお、同じモデルでも生成する動画は毎回変わります。ちなみに、GPUに「A100」を使用していないと、ここでCuda Out of memory のエラーが発生します。

*あらかじめ記入されているid_nameはダミーです。必ず、ご自分のColabで作成したものに変更して下さい。

 作成したGIF動画を再生します。

 被写体が男性からパンダに変わっていますね。作成したGIF動画をダウンロードします。

 もう1つ “Iron Man is surfing in the desert” でやってみましょう。

 今度は、被写体が男性からアイロンマンに、背景が海から砂漠に変わっていますね。文から動画を生成する取り組み、今後が楽しみです。では、また。

(オリジナルgithub)https://github.com/showlab/Tune-A-Video