動画から指定オブジェクトの除去が可能なProPainterのインストール

動画から指定オブジェクトの除去が可能なProPainterのインストール 機械学習

「動画から余計なオブジェクトを除去したい」
「動画から対象物を違和感なく自然な感じで取り除きたい」

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

本記事の内容

  • ProPainterとは?
  • ProPainterのインストール
  • ProPainterの動作確認

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

ProPainterとは?

GitHub - sczhou/ProPainter: [ICCV 2023] ProPainter: Improving Propagation and Transformer for Video Inpainting
ProPainter: Improving Propagation and Transformer for Video Inpainting - sczhou/ProPainter

ProPainterとは、ビデオインペインティングのための伝播とトランスフォーマー技術を改善することに焦点を当てたプロジェクトです。
ビデオインペインティングは、ビデオの欠損部分や不要なオブジェクトを自然に補完・修復する技術を指します。

この技術により、動画からオブジェクトを自然な感じで削除できるようになります。

このような機能であれば、GPUメモリがかなり必要になるのではと思いますよね。
しかし、そこは上手く対応しているようです。

解像度50 frames80 frames
1280 x 72028G / 19GOOM / 25G
720 x 48011G / 7G13G / 8G
640 x 48010G / 6G12G / 7G
320 x 2403G / 2G4G / 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の開発陣は、そこはちゃんと考えてくれています。

ProPainter: Improving Propagation and Transformer for Video Inpainting (ICCV 2023)

上記動画内のようなツールが、あるようです。
しかし、現時点(2023年9月25日)ではまだ公開されていません。

TODOにおいて、以下のタスクがまだ残っています。

これらのタスクは、上記の便利ツールであると想定しています。
このツールが公開されたら、動画をUPして除去対象を選択するだけで済みそうです。

ということで、とりあえずはこのツールが公開されるのを待ちましょう。

以上、ProPainterの動作確認を説明しました。

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