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

2 件のコメント

  • いつも楽しみにブログ拝見させていただいています。
    ありがとうございます。

    コード実行したら、以下のエラーがでたのですが、対処方法を教えて頂ければうれしいです。
    (エラー)
    HFValidationError Traceback (most recent call last)
    /usr/local/lib/python3.8/dist-packages/diffusers/modeling_utils.py in _get_model_file(cls, pretrained_model_name_or_path, weights_name, subfolder, cache_dir, force_download, proxies, resume_download, local_files_only, use_auth_token, user_agent, revision)
    599 # Load from URL or cache if already cached
    –> 600 model_file = hf_hub_download(
    601 pretrained_model_name_or_path,

    4 frames
    HFValidationError: Repo id must be in the form ‘repo_name’ or ‘namespace/repo_name’: ‘./outputs/man-surfing_lr3e-5_seed33/2023-01-31T12-15-52’. Use repo_type argument if needed.

    During handling of the above exception, another exception occurred:

    OSError Traceback (most recent call last)
    /usr/local/lib/python3.8/dist-packages/diffusers/modeling_utils.py in _get_model_file(cls, pretrained_model_name_or_path, weights_name, subfolder, cache_dir, force_download, proxies, resume_download, local_files_only, use_auth_token, user_agent, revision)
    636 )
    637 except ValueError:
    –> 638 raise EnvironmentError(
    639 f”We couldn’t connect to ‘{HUGGINGFACE_CO_RESOLVE_ENDPOINT}’ to load this model, couldn’t find it”
    640 f” in the cached files and it looks like {pretrained_model_name_or_path} is not the path to a”

    OSError: We couldn’t connect to ‘https://huggingface.co’ to load this model, couldn’t find it in the cached files and it looks like ./outputs/man-surfing_lr3e-5_seed33/2023-01-31T12-15-52 is not the path to a directory containing a file named diffusion_pytorch_model.bin or
    Checkout your internet connection or see how to run the library in offline mode at ‘https://huggingface.co/docs/diffusers/installation#offline-mode’.

    • ケンさん
      Outputs/man-surfing_lr3e-5_seed33の下に作成されているフォルダ名(毎回変わります)をid_nameに記入して下さい。初期状態のままだとエラーになります。

  • cedro へ返信する コメントをキャンセル

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

    ABOUTこの記事をかいた人

    アバター

    ディープラーニング・エンジニアを趣味でやってます。E資格ホルダー。 好きなものは、膨大な凡ショットから生まれる奇跡の1枚、右肩上がりのワクワク感、暑い国の新たな価値観、何もしない南の島、コード通りに動くチップ、完璧なハーモニー、仲間とのバンド演奏、数えきれない流れ星。