0
Help us understand the problem. What are the problem?

posted at

SIGGRAPH Asia2021の論文Layered Neural Atlases for Consistent Video Editingを動かす

今回はタイトルの論文のソースコードを動かしてみます。githubはこちら。
https://github.com/ykasten/layered-neural-atlases

PyTorchとdetectron2のバージョンさえ合わせれば素直に動くようです。

動作環境

RTX3080Tiを搭載したUbuntuマシンで試します。RTX3000系で動かしたいのでCUDA11系を使っています。

ホストマシン

  • OS: Ubuntu20.04
  • GPU: RTX3080Ti
  • nvidia driver: 510.47.03

docker環境

  • docker image: nvidia/cuda:11.3.0-devel-ubuntu20.04
  • torch: 1.10.2+cu113(stable)
  • CUDA: 11.3

PyTorchのバージョン

detectron2とtorchのバージョンを合わせる必要がありました。detectron2が対応している最新のtorchは1.10なので、1.10.2+cu113を使いました。以下のコマンドでインストールします。torchが新しすぎるとdetectron2のimportのところで止まってしまうようです。

pip install torch==1.10.2+cu113 torchvision==0.11.3+cu113 torchaudio==0.10.2+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

detectron2のインストール

今回はここがちょっと難しかったです。元のソースコードではCUDA10系を使っていますが、CUDA11系を使いたい場合はこちらのページのInstall Pre-Built Detectron2 (Linux only)のテーブルからcuda11.3とtorch 1.10の組み合わせのところのインストールコマンドを利用します。
https://detectron2.readthedocs.io/en/latest/tutorials/install.html

python -m pip install detectron2 -f \
  https://dl.fbaipublicfiles.com/detectron2/wheels/cu113/torch1.10/index.html

その他のモジュール

Open-CVはopencv-pythonでインストールしています。

requirements.txt

numpy
tqdm
opencv-python
scikit-image
tensorboard
tensorflow
scipy
matplotlib
gdown
imageio-ffmpeg

データの準備

gdownコマンドではダウンロードできなかったので、ブラウザからGoogleドライブを開いてダウンロードします。
https://drive.google.com/uc?id=1WipZR9LaANTNJh764ukznXXAANJ5TChe

ダウンロード後に展開します。

unzip data.zip

こちらのdata/blackswanなどに動画をフレームごとに連番にした画像ファイルが入っています。
00000.jpg

マスクの抽出

以下のコマンドで動画からマスク画像を抽出します。こちらのコマンドではdata/blackswanに入っている連番ファイルからbirdに分類される領域のマスクをdata/blackswan_maskrcnnへ出力します。

python preprocess_mask_rcnn.py --vid-path data/blackswan --class_name bird

00000.png

オプティカルフローの抽出

サブモジュールを更新してRAFTのダウンロードを実行します。

git submodule update --init
cd thirdparty/RAFT/
./download_models.sh
cd ../..

以下のコマンドを実行するとdata/blackswan_flowへフレームごとのオプティカルフローが出力されます。*.npy形式のファイルなので画像のようには表示できません。

python preprocess_optical_flow.py --vid-path data/blackswan --max_long_edge 768

訓練済みモデルのダウンロード

Googleドライブからダウンロードします。
https://drive.google.com/uc?id=10voSCdMGM5HTIYfT0bPW029W9y6Xij4D

unzipコマンドで展開。

unzip pretrained_models.zip

学習

ここは時間がかかりそうなので飛ばします。

評価

そのままで動きました。最後に出るのが精度でしょうか?

python only_evaluate.py --trained_model_folder=pretrained_models/checkpoints/blackswan --video_name=blackswan --data_folder=data --output_folder=evaluation_outputs
1
2
3
...
47
48
49
29.98105892457371

編集

以下のコマンドを実行するとediting_outputsへ結果のmp4ファイルが出力されます。差し替え用の画像はpretrained_models/edit_inputs/blackswanのものを使います。

python only_edit.py --trained_model_folder=pretrained_models/checkpoints/blackswan --video_name=blackswan --data_folder=data --output_folder=editing_outputs --edit_foreground_path=pretrained_models/edit_inputs/blackswan/edit_blackswan_foreground.png --edit_background_path=pretrained_models/edit_inputs/blackswan/edit_blackswan_background.png

texture_edit1.png

texture_edit2.png

ここでの説明はblackswanでしたが、boat, libbyについても同様にmp4ファイルを出力できることを確認しました。

edited_blackswan.PNG

edited_boat.PNG

edited_libby.PNG

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?