「動画から余計なオブジェクトを除去したい」
「動画から対象物を違和感なく自然な感じで取り除きたい」
このような場合には、ProPainterがオススメです。
この記事では、ProPainterについて解説しています。
本記事の内容
- ProPainterとは?
- ProPainterのインストール
- ProPainterの動作確認
それでは、上記に沿って解説していきます。
ProPainterとは?
ProPainterとは、ビデオインペインティングのための伝播とトランスフォーマー技術を改善することに焦点を当てたプロジェクトです。
ビデオインペインティングは、ビデオの欠損部分や不要なオブジェクトを自然に補完・修復する技術を指します。
この技術により、動画からオブジェクトを自然な感じで削除できるようになります。
このような機能であれば、GPUメモリがかなり必要になるのではと思いますよね。
しかし、そこは上手く対応しているようです。
解像度 | 50 frames | 80 frames |
---|---|---|
1280 x 720 | 28G / 19G | OOM / 25G |
720 x 480 | 11G / 7G | 13G / 8G |
640 x 480 | 10G / 6G | 12G / 7G |
320 x 240 | 3G / 2G | 4G / 3G |
解像度を抑えれば、そこまで強力なGPUである必要がありません。
以上、ProPainterについて説明しました。
次は、ProPainterのインストールを説明します。
ProPainterのインストール
ProPainterのインストールには、Python仮想環境の利用をオススメします。
検証は、次のバージョンのPythonで行います。
> python -V Python 3.10.4
インストールを始める前に、次のおまじないを唱えておきます。
python.exe -m pip install --upgrade pip setuptools
まずは、PyTorch のインストールから行います。
Pytorch 2系のGPU版をインストールしましょう。
では、ProPainter本体をダウンロードします。
ダウンロードできたら、リポジトリルートに移動。
git clone https://github.com/sczhou/ProPainter.git cd ProPainter
ここでrequirements.txtを確認しましょう。
requirements.txt
av addict einops future numpy scipy opencv-python matplotlib scikit-image torch>=1.7.1 torchvision>=0.8.2 imageio-ffmpeg pyyaml requests timm yapf
修正せずにそのまま利用できそうです。
次のコマンドを実行して、ライブラリをインストールします。
pip install -r requirements.txt
処理が終わったら、ProPainterのインストールは完了です。
以上、ProPainterのインストールを説明しました。
次は、ProPainterの動作確認を説明します。
ProPainterの動作確認
ProPainterのインストール後、以下のコマンドを真っ先に試します。
実行するには、リポジトリルートにおいてです。
python inference_propainter.py --video inputs/object_removal/bmx-trees --mask inputs/object_removal/bmx-trees_mask
各オプションで指定しているディレクトリ以下の画像は以下となります。
それぞれに80枚の画像が、保存されています。
inputs/object_removal/bmx-treesの画像ファイル
inputs/object_removal/bmx-trees_maskの画像ファイル
上記を実行すると、必要なモデルを自動的にダウンロードします。
処理中に「weights」ディレクトリ以下にファイルが保存されます。
処理がすべて完了すると、コンソールに以下が表示されるはずです。
All results are saved in results\bmx-trees
「results」ディレクトリを確認します。
確かに、それっぽいモノが保存されていることを確認できます。
以下の動画は、上記二つのmp4を並べた動画になります。
左が、masked_in.mp4です。
そして、右がinpaint_out.mp4になります。
masked_in.mp4は、「–video」と「–mask」で指定した画像をベースに生成された動画になります。
その動画からマスク(緑色)された部分が除去された結果が、inpaint_out.mp4ということですね。
処理の流れは、大体わかりました。
簡単で速いことも確認できました。
しかし、「–video」と「–mask」で指定するディレクトリ以下の画像を用意しないと話が始まりません。
実際にやろうとすれば、次の方法で動画から静止画を用意することからでしょうね。
そうすると、次はmask画像をどうするんだとなります。
その辺を考えていくと、面倒です。
ProPainterの開発陣は、そこはちゃんと考えてくれています。
上記動画内のようなツールが、あるようです。
しかし、現時点(2023年9月25日)ではまだ公開されていません。
TODOにおいて、以下のタスクがまだ残っています。
これらのタスクは、上記の便利ツールであると想定しています。
このツールが公開されたら、動画をUPして除去対象を選択するだけで済みそうです。
ということで、とりあえずはこのツールが公開されるのを待ちましょう。
以上、ProPainterの動作確認を説明しました。