1.はじめに
今回ご紹介するのは、1枚の画像とモーションシークエンスから動画を生成する、MagicAnimateという技術です。
*この論文は、2023.11に提出されました。
2.MagicAnimateとは?
下記が、MagicAnimateのパイプラインで、左が学習時、右が推論時です。学習時は、reference image(参照画像)から外観エンコーダでアイデンティティ保持を行いつつ、DensePose sequence(モーションシークエンス)からビデオ拡散モデルで時間モデリングを行うことで、狙いの動画を得ることを学習します。
推論時は、長いビデオ アニメーションをサポートするために、推論中にスムーズなビデオ遷移を生成するシンプルなビデオ フュージョン戦略で動画生成を行います。
3.コード
この[リンク]をクリックすると動画を生成するcolabが動かせます。なお、このコードは、@camenduru氏によって作成されたものです。
コードの起動はボタン1つで、処理に10数分程度掛かります。ログの最後に、Running on public linkが表示されたら、それをクリックすると新たなタブに、操作画面が表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
%cd /content !git clone https://github.com/cedro3/MagicAnimate-hf !pip install -q diffusers==0.21.4 transformers==4.32.0 accelerate==0.22.0 omegaconf==2.3.0 einops==0.6.1 av gradio !pip install -q https://download.pytorch.org/whl/cu118/xformers-0.0.22.post4%2Bcu118-cp310-cp310-manylinux2014_x86_64.whl !apt -y install -qq aria2 BaseModelUrl = "https://huggingface.co/runwayml/stable-diffusion-v1-5" BaseModelDir = "/content/MagicAnimate-hf/stable-diffusion-v1-5" !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/raw/main/model_index.json -d {BaseModelDir} -o model_index.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/resolve/main/vae/diffusion_pytorch_model.bin -d {BaseModelDir}/vae -o diffusion_pytorch_model.bin !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/raw/main/vae/config.json -d {BaseModelDir}/vae -o config.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/resolve/main/unet/diffusion_pytorch_model.bin -d {BaseModelDir}/unet -o diffusion_pytorch_model.bin !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/raw/main/unet/config.json -d {BaseModelDir}/unet -o config.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/raw/main/tokenizer/vocab.json -d {BaseModelDir}/tokenizer -o vocab.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/raw/main/tokenizer/tokenizer_config.json -d {BaseModelDir}/tokenizer -o tokenizer_config.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/raw/main/tokenizer/special_tokens_map.json -d {BaseModelDir}/tokenizer -o special_tokens_map.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/raw/main/tokenizer/merges.txt -d {BaseModelDir}/tokenizer -o merges.txt !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/resolve/main/text_encoder/pytorch_model.bin -d {BaseModelDir}/text_encoder -o pytorch_model.bin !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/raw/main/text_encoder/config.json -d {BaseModelDir}/text_encoder -o config.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/raw/main/scheduler/scheduler_config.json -d {BaseModelDir}/scheduler -o scheduler_config.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/resolve/main/safety_checker/pytorch_model.bin -d {BaseModelDir}/safety_checker -o pytorch_model.bin !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/raw/main/safety_checker/config.json -d {BaseModelDir}/safety_checker -o config.json !aria2c --console-log-level=error -c -x 16 -s 16 -k 1M {BaseModelUrl}/raw/main/feature_extractor/preprocessor_config.json -d {BaseModelDir}/feature_extractor -o preprocessor_config.json %cd /content/MagicAnimate-hf !python app.py |
以下が操作画面です。下部のExamplesにあるReference ImageとMotion Sequenceがセットになったデータの中から好みのものを選択(クリック)すると、中央のReference ImageウインドウとMotion Sequenceウインドウにそのサンプルデータがセットされ、Animateボタンを押すと動画生成ができます。
自分のPCから、中央のReference ImageウインドウとMotion Sequenceウインドウに、それぞれデータをドラッグ&ドロップしてアップロードして動かすことも出来ます。
Examplesの先頭のデータを使って、動画生成をすると数分程度で以下の様な動画が生成できます。
モナリザの肖像画から走るモナリザの動画が生成出来ました。非常に滑らかな動きですね。
なお、Motion Sequenceを自分で作成したい場合は、この[リンク]をクリックすると動画(mp4 正方形 25fpsを使用)からMotion Sequenceを作成するcolabが動かせます。
(オリジナルgithub)https://github.com/magic-research/magic-animate
コメントを残す