Rerender A Videoを用いたテキストによる動画変換

Rerender A Videoを用いたテキストによる動画変換 ツール

「動画をテキスト入力するだけでスタイル変換したい」
「実写の動画をアニメ風のキャラ動画にしたい」

このような場合には、Rerender A Videoがオススメです。
この記事では、Rerender A Videoについて解説しています。

本記事の内容

  • Rerender A Videoとは?
  • Rerender A Videoのシステム要件
  • Rerender A Videoのダウンロード
  • Rerender A Videoのインストール
  • Rerender A Videoの動作確認

それでは、上記に沿って解説していきます。

Rerender A Videoとは?

Rerender A Videoとは、ゼロショットのテキストガイドによるビデオからビデオへの変換技術を指します。
簡単に言うと、動画をテキストによる指示で加工できるということです。

実際にRerender A Videoで生成した動画は、以下。
変換前の動画が左、変換後の動画が右となります。

仕組み的には、主に以下を用いています。

  • Stable Diffusion
  • ControlNet
  • EbSynth
  • GMFlow

これらから想定できるRerender A Videoの仕組みは、次のようになります。

元動画から切り取った画像をベースにStable Diffusionでテキストに沿って加工します。
その際、ControlNetを用いて元画像の形を維持することが可能になります。

そうやって生成される画像が、EbSynthにおけるキーフレームです。
EbSynthでは、キーフレームをもとにアニメーション(動画)を生成できます。
キーフレーム間のフレームをEbSynthで自動的に生成して補間します。

そのとき、GMFlowが動画のフレーム間での物体の動きや変化を捉えるために利用されています。
Rerender A Videoは、様々な技術を組み合わせて構成されていると言えます。

正確な仕組みについては、論文を読んでみてください。

以上、Rerender A Videoについて説明しました。
次は、Rerender A Videoのシステム要件を説明します。

Rerender A Videoのシステム要件

Rerender A Videoは、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

Rerender A Videoでは、アニメーションを生成する処理はEbSynthに依存しています。
ただ、EbSynthはRerender A Videoのインストール時にビルドされます。

そのため、事前にインストールすることはありません。
その代わり、EbSynthをビルドできる環境を用意しておく必要があります。

OS毎にビルドの条件が異なります。

    if os_str == 'Windows':
        print('Build Ebsynth Windows 64 bit.',
              'If you want to build for 32 bit, please modify install.py.')
        cmd = '.\\build-win64-cpu+cuda.bat'
        exe_file = 'deps/ebsynth/bin/ebsynth.exe'
    elif os_str == 'Linux':
        cmd = 'bash build-linux-cpu+cuda.sh'
        exe_file = 'deps/ebsynth/bin/ebsynth'
    elif os_str == 'Darwin':
        cmd = 'sh build-macos-cpu_only.sh'
        exe_file = 'deps/ebsynth/bin/ebsynth.app'
    else:
        print('Cannot recognize OS. Ebsynth installation stopped.')
        return

macOSでは、CPUサポートのみのEbSynthになります。
Linuxは、特に何も準備する必要はありません。

問題となるのは、Windowsです。
GPUサポートしたEbSynthをビルドする設定になっています。

そのため、以下を用意しておく必要があります。

  • C++ Compiler
  • CUDA Toolkit

以下でそれぞれを説明します。

C++ Compiler

ビルドするためにC++のコンパイラが必要になります。
C++ Compilerのインストールは、次の記事内で説明しています。

次のコマンドが動けば、要件クリアということになります。

C:\>cl
Microsoft(R) C/C++ Optimizing Compiler Version 19.29.30151 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.
使い方: cl [ オプション... ] ファイル名... [ /link リンク オプション... ]

CUDA Toolkit

CUDAは、GPU版のPyTorchをインストールする際にも必要です。
CPUのみでPyTorchを動かすことは、現実的に無理があります。

CUDAのインストールは、次の記事で説明しています。

バージョンは、11.8をオススメします。
PyTorchでは、CUDA 11.8が標準のような形になっています。

ダウンロードは、次のページから可能です。
(※ログイン不要に戻ったみたいですね)
https://developer.nvidia.com/cuda-toolkit-archive

インストール後にコマンドプロンプトで次のように確認できれば、要件はクリアとなります。

C:\>nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

以上、Rerender A Videoのシステム要件を説明しました。

Rerender A Videoのダウンロード

Rerender A Videoのダウンロードを説明します。
地味にハマる箇所でもあります。

最初に、Rerender A VideoをGitHubからcloneします。
ダウンロードできたら、リポジトリルートに移動しておきます。

git clone https://github.com/williamyang1991/Rerender_A_Video.git --recursive
cd Rerender_A_Video

上記を実行したら、「deps」以下を確認してみてください。

ディレクトリだけ作成されている状態の可能性があります。
このような場合は、自分でダウンロードしましょう。

まず、「deps」以下のディレクトリをすべて削除します。
そして、手動でそれぞれをダウンロードすることで対応します。

cd deps
git clone https://github.com/SingleZombie/ebsynth.git
git clone https://github.com/lllyasviel/ControlNet.git
git clone https://github.com/haofeixu/gmflow.git
cd ..

ダウンロードが終わったら、リポジトリルートに戻っておきます。
処理が終わった時点での「deps」の状態は、以下。

なお、「–recursive」オプション付きのgitコマンドが失敗したのは以下のファイルがその原因です。

.gitmodules

[submodule "deps/gmflow"]
	path = deps/gmflow
	url = git@github.com:haofeixu/gmflow.git
[submodule "deps/ControlNet"]
	path = deps/ControlNet
	url = git@github.com:lllyasviel/ControlNet.git
[submodule "deps/ebsynth"]
	path = deps/ebsynth
	url = git@github.com:SingleZombie/ebsynth.git

urlの箇所の記述により、次のようなエラーが出ていました。

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

秘密鍵のid_rsaを適切に設定していれば、エラーは出なかったのかもしれません。
でも、秘密鍵の存在が前提という設定は公開リポジトリではよろしくないでしょうね。

秘密鍵については、次の記事で説明しています。

他のプロジェクトでは、次のような設定が一般的です。

[submodule "submodules/simple-knn"]
	path = submodules/simple-knn
	url = https://gitlab.inria.fr/bkerbl/simple-knn.git
[submodule "submodules/diff-gaussian-rasterization"]
	path = submodules/diff-gaussian-rasterization
	url = https://github.com/graphdeco-inria/diff-gaussian-rasterization
[submodule "SIBR_viewers"]
	path = SIBR_viewers
	url = https://gitlab.inria.fr/sibr/sibr_core

ちなみに、上記の「.gitmodules」は3D Gaussian Splattingのモノです。

以上、Rerender A Videoのダウンロードを説明しました。
次は、Rerender A Videoのインストールを説明します。

Rerender A Videoのインストール

Rerender A Videoのインストールには、Python仮想環境の利用をオススメします。

検証は、次のバージョンのPythonで行います。

> python -V
Python 3.10.4

インストールを始める前に、次のおまじないを唱えておきましょう。

python.exe -m pip install --upgrade pip setuptools

まずは、PyTorch のインストールから行います。
Pytorch 2系のGPU版をインストールします。

次は、必要なライブラリのインストールです。
リポジトリルートにある「requirements.txt」を確認してください。

requirements.txt

addict==2.4.0
albumentations==1.3.0
basicsr==1.4.2
blendmodes
einops==0.3.0
gradio==3.33.1
imageio==2.9.0
imageio-ffmpeg==0.4.2
invisible-watermark==0.1.5
kornia==0.6
numba==0.57.0
omegaconf==2.1.1
open_clip_torch==2.0.2
prettytable==3.6.0
pytorch-lightning==1.5.0
safetensors==0.2.7
streamlit==1.12.1
streamlit-drawable-canvas==0.8.0
test-tube==0.7.5
timm==0.6.12
torchmetrics==0.6.0
transformers==4.19.2
webdataset==0.2.5
yapf==0.32.0

gradioのバージョンを外します。
指定バージョンのgradioのままだと、webUIの起動においてエラーを出力します。

また、xformersを追加しておきます。
少しでも速く処理させるためにインストールすることが推奨されています。

修正後のrequirements.txtの一部

gradio
xformers

「requirements.txt」を変更できたら、次のコマンドを実行します。

pip install -r requirements.txt

最後に、インストール用のスクリプト(install.py)を実行する必要があります。
このスクリプトにより、利用するモデルなどを自動でダウンロードしています。

あとは、Ebsynthのビルドもこのプログラム内で実行されています。
実行する前に、一部修正しておきます。

なぜか、一部関数がコメントにしてあります。
しかし、その関数でダウンロードするファイルは必要となります。

そのため、コメントを解除しておきます。

スクリプトを修正できたら、次のコマンドでスクリプトを実行します。

python install.py

ここは、そこそこ時間がかかります。
しばらく放置で良いでしょう。

正常に処理が進めば、次のようにコンソールに表示されていきます。

...
ebsynth_cpu.cpp
ebsynth_cuda.cu
   ライブラリ lib\ebsynth.lib とオブジェクト lib\ebsynth.exp を作成中
Ebsynth installed successfully.
Install gmflow_sintel-0c07dcb3.pth ...
Install successfully.
Install control_sd15_canny.pth ...
Install successfully.
Install control_sd15_hed.pth ...
Install successfully.
Install vae-ft-mse-840000-ema-pruned.ckpt ...
Install successfully.

VAEまでダウンロードできたら、スクリプトの処理は完了です。
「models」ディレクトリ以下に、ダウンロードされたファイルが保存されています。

やはり、全部10GB以上のファイルダウンロードであるため、時間はかかりますよね。

以上、Rerender A Videoのインストールを説明しました。
次は、Rerender A Videoの動作確認を説明します。

Rerender A Videoの動作確認

Rerender A Videoの動作確認を行います。
動作確認用のコマンドが、公式ページで公開されています。

webUIを動かす前に、スクリプトで試すことが推奨されているようです。
設定ファイルを読み込んで実行する形式になります。

python rerender.py --cfg config/real2sculpture.json

「config」ディレクトリ以下には、次のファイルが用意されています。

real2sculpture.jsonでは、次のモデルを利用することが記述されています。

「realisticVisionV20_v20.safetensors」については、次の記事で説明しています。

woman.jsonには「revAnimated_v11.safetensors」が記述されています。
これらのモデルをダウンロードして、「models」以下に保存します。

モデルの保存ができたら、動作確認用のスクリプトを実行します。
処理は、結構待たされます。

・・・
others: 15.466087102890015
others: 14.454501390457153
others: 13.954355955123901
others: 13.981889963150024
others: 14.12795877456665
others: 14.298452377319336
others: 14.707191228866577
others: 14.297895908355713
others: 15.20901370048523
others: 14.66628384590149

上記のように表示されたら、処理は完了しています。
「videos」ディレクトリ以下にディレクトリが作成されていることを確認できます。

そのディレクトリ以下に「blend.mp4」が確認できれば、処理は成功しています。
動画の内容は、次のような彫刻が動くモノです。

ここまで確認できれば、Rerender A Videoの動作には問題がありません。
あとは、GUIであるwebUIがちゃんと動くかどうかですね。

webUIの起動には、次のコマンドを実行します。

python webUI.py

ただし、Windowsの場合だとそのままではwebUIをブラウザで開けません。
そのため、webUI.pyを修正します。

修正前は、次のようなコードとなっています。

これを次のように変更します。

Windows環境では、IPアドレス「0.0.0.0」が基本的にはNGということです。
webUI.pyを修正したら、webUIを起動してみましょう。

コンソールには、以下のように表示されます。

logging improved.
Running on local URL:  http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.

そして、ブラウザで「http://127.0.0.1:7860」にアクセスします。
アクセスすると、次のような画面を確認できます。

画面下部のExampleは、次の設定ファイルをもとに表示されているのでしょうね。

とりあえず、Rerender A Videoの動作確認はここまでとします。
あとは、webUIの操作方法になります。

これに関しては、別の記事にまとめます。

以上、Rerender A Videoの動作確認を説明しました。

タイトルとURLをコピーしました