BiM-VFIを使ってフレームを補間する

Ubuntu
スポンサーリンク

Amazonのアソシエイトとして、当ブログは適格販売により収入を得ています。

以前、自作の動画フレーム補間ソフト「VIP」をアップしましたが、これはフレーム生成の推論部分に「rife-ncnn-vulkan」を使っていました。

今回、推論部分をBiM-VFIに置き換えて作り直してみました。
以下はBiM-VFIについてのサイトです。

BiM-VFI: Bidirectional Motion Fields-Guided Frame Interpolation for Video with Non-uniform Motions
BiM-VFI interpolates clearer intermediate images from given input images.
GitHub - KAIST-VICLab/BiM-VFI: [CVPR 2025] Official repository of BiM-VFI
Official repository of BiM-VFI. Contribute to KAIST-VICLab/BiM-VFI development by creating an account on GitHub.

以下に、ちょっとだけ比較動画を作ってみました。

rife-ncnn-vulkan
BiMVFI

出典: 映画『ベルセルク 黄金時代篇I 覇王の卵』

本記事は技術公開を目的としており、動画の視聴を目的としたものではありません

rifeと比べると生成された画像に歪みがあまり出ない印象です。


ただし、生成時間は大幅に伸びます。
ざっと計算して「30〜40分の1」の速度といったところ。
どちらを使うかは、動画の出来栄えと生成時間で決めることになると思います。

BiM-VFIは元々cuda環境のみで動作するようコードが書かれています。
今回Intel Arcで開発するに当たって、xpuで動作するよう書き直している途中で「cupy」で動作する部分をまるまるオミットしてしまいました。
GeForceなら、本来「cupy」のおかげでもっと高速に動作するはずですが・・・。
実装したいところなんですが、自分がGeForceを持っていないので動作テストできません。
ごめんなさい。

BiM-VFIには元々学習用や研究用のコードがあったんですが、フレーム補間に必要なのは推論部分だけです。なので不要なファイルはまるまる削除しています。

そして今回も、コードの作成の殆どをGeminiに書いてもらいました。
ありがとう、Gemini。

ちなみに動作テストはUbuntuで行っています。
多分Windowsでも動くと思いますが、テストしていないのでなんとも・・・。
中の人もここ二年くらいWindowsに触っていないため、いちいち環境を変えてテストする気になれなくなっています。
またしてもごめんなさい。

では、導入手順やっていきましょう。

導入手順1(ドライバ)

まずはドライバですが、自分はIntel Arcを使っていますので、こちらにドライバのインストールの仕方を書いています。

Radeonの場合はこちらの記事の「ROCmのインストール」を参照して下さい。

GeForceの場合は自分はもっていないのでわかりません。
どのグラフィックスカードにも言えることですが、ComfyUIやStable diffusionが動く環境ならドライバは大丈夫でしょう。

導入手順2(仮想環境)

rife-ncnn-vulkanと違ってBiM-VFIはpytorchで動きます。
なので仮想環境があった方が良いでしょう。
今回は「uv」で環境を構築しますが、別にpython-venvでもcondaでもなんでもOK(たぶん)。
ちなみに「uv」のインストール方法は、ここの記事で書いています。

sudo apt update
sudo apt install git
sudo apt install python3-tk

git clone https://github.com/toaru-ubuntu/bimvfi-interp-python.git
cd bimvfi-interp-python

uv venv --python /usr/bin/python3 #システムにインストールされたpythonを使う
source .venv/bin/activate

これで仮想環境はできあがりです。

導入手順3(pytorch)

Intel Arcの場合は以下です。

uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/xpu

RadeonやGeForceの場合は以下のリンクから選択してください。

PyTorch
PyTorch Foundation is the deep learning community home for the open source PyTorch framework and ecosystem.

導入手順4(必要なライブラリ)

Arc、Radeon、GeForceすべて共通です。

uv pip install scenedetect av pyyaml opencv-python-headless tqdm numpy

導入手順5(モデルファイルのダウンロード)

BiMVFIの本家からダウンロードします。

GitHub - KAIST-VICLab/BiM-VFI: [CVPR 2025] Official repository of BiM-VFI
Official repository of BiM-VFI. Contribute to KAIST-VICLab/BiM-VFI development by creating an account on GitHub.
赤丸の部分からダウンロード。

先程のターミナルから

#「bim_vfi」フォルダの直下に「pretrained」という名前のフォルダを作る
mkdir -p ./bim_vfi/pretrained

#ダウンロードした「bim_vfi.pth」を、先程作った「pretrained」フォルダにコピペ
cp ~/Downloads/bim_vfi.pth ./bim_vfi/pretrained/

起動方法

そのまま以下のコマンドを実行

python ./bimvfi_interp_python.py 

VIPと違うところ

今まではプロセス数を設定できていましたが、BiMVFIは超重い処理なので、並列処理できなくなりました。

使用デバイスの設定は、このソフトの処理をどのデバイスで行うかの設定です。「CPU」と「GPU」のどちらかを選びます。

シーンチェンジの検出に「PSNR値」ではなく「PySceneDetect」を使うようにしました。
しきい値は設定できますが、基本的にいじらなくてOKです。

と、こんなところです。

最後に

rifeとは違って歪みの少ない動画が生成できるようになったと思います。
が、トレードオフとして生成時間が(とても)長くなりました。

好きな方を使って下さい。

それからGeForceのみ動作確認がとれていません。
もし、「動いたよ」って方がいたら教えて下さい。

githubのページはこちらです。

今回は以上です。


使用VRAMはフルHDの動画で10〜11GBといったところです。
ffmpegでHD画質まで落とせば5GBで足りるんですが、そうすると画質が・・・。
というわけで12GBと16GBのモデルをピックアップ。

Amazon | 玄人志向 Intel Arc B580 搭載 グラフィックボード GDDR6 12GB 【国内正規代理店品】 AR-B580D6-E12GB/DF | 玄人志向 | グラフィックボード 通販
玄人志向 Intel Arc B580 搭載 グラフィックボード GDDR6 12GB 【国内正規代理店品】 AR-B580D6-E12GB/DFがグラフィックボードストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。アマ...
Amazon | ASUS AMD Dual Radeon RX 9060 XT 16GB GDDR6ビデオカード DUAL-RX9060XT-16G 国内正規代理店品 | ASUS | グラフィックボード 通販
ASUS AMD Dual Radeon RX 9060 XT 16GB GDDR6ビデオカード DUAL-RX9060XT-16G 国内正規代理店品がグラフィックボードストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。...
Palit RTX 5060 Ti 16GB GDDR7 PCIe 5.0 グラフィックボード
Palit(パリット) GeForce RTX 5060 Ti Infinity 3 16GB / NE7506T019T1-GB2061S / グラフィックボードがグラフィックボードストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お...

GeForceが高いですね。
でもきっと速いんだろうなぁ。

コメント

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