🌊

フレーム補間技術【RIFE】を利用してCogVideoXのFPSを改善しよう

2024/11/08に公開

はじめに

先日、動画生成モデルであるCogVideoXに関する記事を書きました。

安定してそれなりの質の動画を出してくれて、かつ安価な家庭用GPUでも問題なく動作する素晴らしいモデルなのですが、FPSが低く、動画がカクカクしていることが玉に瑕でした。

そこで今回は、CogVideoXのデモページでも利用することができるフレーム補間技術【RIFE】を利用して、FPSを改善し、滑らかな動画にしようという回です。

https://github.com/hzwer/ECCV2022-RIFE

RIFEとは

ECCV2022に採択されている、リアルタイムで動画像のフレーム補間を可能にする技術です。
さらに、ライセンス的に商用利用も可能な技術になります。

CogVideoXはFPSが低いので、フレーム補間を利用して、FPSを向上させるために利用します。

環境構築

実行環境

OS:Ubuntu 20.04
GPU:RTX3060 12GB
CUDA:12.2
RAM:64GB
Python:3.11.7

venvで仮想環境を作ります。

venvによる仮想環境を構築する。

python -m venv env
source env/bin/activate

リポジトリをクローンする。

git clone https://github.com/hzwer/ECCV2022-RIFE.git

必要なパッケージをインストールする

リポジトリの中にあるrequirements.txtは、私の環境ではそのままでは動作しなかったので、下記のように変更しています。

requirements.txt
numpy>=1.16, <=1.23.5
tqdm>=4.35.0 
sk-video>=1.1.10 
torch==2.0.1 
opencv-python>=4.1.2 
moviepy>=1.0.3 
torchvision>=0.7.0

変更点はtorchの部分だけです。
このリポジトリではtorch==2.0.1であれば動作しました。

変更したら、実際に必要なパッケージをインストールしましょう。

cd ECCV2022-RIFE
pip install -r requirements.txt

実行

クローンしたリポジトリの中に実行コードがすでにあるため、それをそのまま実行します。

python3 inference_video.py --exp=4 --video=../output.mp4

上記を実行することで、output_16X_128fps.mp4という動画が、元の動画があった場所と同じ場所に生成されています。

動画によって引数を変更する必要があります。
たとえば、

--video=../output.mp4

は、変換する元のビデオのPATHを指定します。

また、--exp=4では1を指定すると2倍のFPSに、2を指定すると4倍のFPSに、4を指定すると16倍(最大)のFPSに変換されます。
今回は4を指定しているので、8FPSから128FPSまでFPSを向上させることができます。

フレーム補間した動画

実際に、フレーム補間をした動画を下に提示します。

前回のCogVideoXの記事にて提示した生成動画に対して実行してみました。
ご覧ください。

https://youtu.be/RaIb6E5q8lo

https://youtu.be/Xt4o8u9-Q6o

https://youtu.be/LUzkggEQPpA

https://youtu.be/hg5lb9NFvhU

https://youtu.be/cmy79P2Vlnc

https://youtu.be/E5Aa9cfBZJY

https://youtu.be/wDpD8geuU8c

もともとカクついていた動画が、かなりなめらかな動画になりました!
(ちなみに、元々の動画はこちらの記事からご覧ください)

とても自然になめらかにできているので、とても使いやすいツールです!

まとめ

RIFEと組み合わせることで、CogVideoXにより生成された動画が非常になめらかな動画になりました。
つまり、安価な家庭用GPUだけで、最終的にこのクオリティの動画が作成できるということです!驚きです!

(CogVideoXの使いやすいLoRAやFineTuningモデルをご存知でしたら、使ってみたいので教えていただけると嬉しいです!)

それでは、ここまで読んでくださってありがとうございました!

Discussion