LoginSignup
0
0

Python RIFE(AI)を使って滑らかな動きの動画を作成するrife_video

Last updated at Posted at 2024-02-17

はじめに

rife_videoはECCV2022-RIFEを使ってフレーム補完をすることで30fpsの動画を60fpsにしたり スローモーション動画を作成するPython用のツールです。動画をドラックアンドドロップするだけで使えるようになっています。
また、別のAIモデルSuper-SloMoを使ったslomo_videoも同梱しています。どちらも同じことができますがAIモデルが異なるので処理速度やクオリティに違いがあります。

できること

  • 30fpsの動画を60fps(2倍)または120fps(4倍)にする
  • スローモーション動画を作成する
  • 検証用サイドバイサイド動画を作成する

処理速度(処理時間)

処理時間はビデオカードの性能で大きく変わります。
FullHD(1920x1080) 30fps 1分の動画を 60fps(2倍)にする場合の目安は次の通りです。

GTX1080 RTX4090 所感
slomo_video 約 14分 約 2分30秒 精細感が高く良好
極稀に破綻する
rife_video (scale1.0) 約 5分 約 1分 ややぼやけた印象
破綻しにくい
rife_video (scale0.5) 約 2分 約 30秒 ややぼやけた印象
さらに破綻しにくい

動作条件

  • Windows10 / 11
  • 4GB以上のnVIDIA製ビデオカード
  • Python 3.11.4

ダウンロード

rife_video1_0_0.zip を解凍してできる'rife_video'フォルダへ下記のものをコピーしてください。
全てコピーすると次のようになります。

files.png

共通

rife_video

  • ECCV2022-RIFE 一式
    https://github.com/megvii-research/ECCV2022-RIFE
    ECCV2022-RIFE-main.zipを解凍してできる
    ・'ECCV2022-RIFE-main'フォルダ
  • 学習データ
    同ページのInstallationの項にある「Download the pretrained HD models from here.」から
    RIFE_trained_model_v3.6.zipを解凍してできる
    ・'train_log'フォルダ

slomo_video

  • Super-SloMo 一式
    https://github.com/avinashpaliwal/Super-SloMo
    Super-SloMo-master.zipを解凍してできる
    ・'Super-SloMo-master'フォルダ
  • 学習データ
    同ページのPretrained modelの項にある「You can download the pretrained model trained on adobe240fps dataset here.」から
    ・SuperSloMo.ckpt

Pythonのインストール

このツールはPython用のスクリプトになっていますので、Pythonを公式サイトからダウンロードしてインストールしてください。

https://www.python.org/downloads/release/python-3114/
・python-3.11.4-amd64.exe

インストール画面ではカスタマイズを選択し Pythonへ パスを通すオプションをONにしてください。


インストールが終わったらPCを再起動します(再起動しないとパス設定が有効にならない)。

Windows PowerShellを起動してPythonが使えることを確認します。Pythonから抜けるには[Ctrl] + [Z]。
power_python.png

AppStoreのPythonのページが表示されるようなら パスの設定ができていません。
インストーラーで修復か再インストールしてください。

Pythonで必要なモジュール

requirements.txt
ffmpeg-python==0.2.0
keyboard==0.13.5
tqdm==4.66.1
Pillow==9.3.0
numpy==1.26.4
#torch==2.2.0.dev20230915+cu121
#torchvision==0.17.0.dev20230915+cu121

同梱のmodule_install.batで一括インストールできます。

また、PyTorchのCUDA 12版が必要です。CPU版や CUDA 11版では動かない場合があります。
動かない場合は 次の様に上書きインストールしてください。

pip install --upgrade --force-reinstall torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

使い方

以下のバッチファイルへ動画をD&Dしてください。
カレントフォルダ(rife_videoのフォルダ)へfpsを2倍または4倍にした動画が作成されます。

  • drop_here_rife_x2.bat
    fpsを2倍にする
  • drop_here_rife_x4.bat
    fpsを4倍にする
  • drop_here_rife_sbs.bat
    入力画像と補完画像を左右に並べたスロー動画を作成

コマンドライン オプション

書式
python rife_video.py [input_path] [opions]

input_path

入力動画のフルパス

options

オプション 説明
-d --output_dir 処理結果を保存するフォルダを指定する
省略した場合は カレントフォルダへ出力 最後の'¥'または'/'は
あってもなくてもいい
例 -d="C:/video"
-s --slow_factor スローファクター
フレーム数をn倍にし且つfpsもn倍にする
省略した場合は 2倍
rifeでは2,4,8,16... 2のn乗のみ可
slomoは3や5も可
マイナスにすると目標fpsに合わせて倍率を自動設定する
例 -s -120 なら120fpsに近い倍率になるよう自動設定される
-f --fps_ratio 作成する動画のfpsを元動画のfpsのn倍にする
0.5や 1.5など実数も可
このオプションを使うと音声はコピーされない
省略した場合はslow_factorの倍率が適用される
例 -s 4 -f 2 フレーム数を4倍 fpsは2倍にする
-a --scale 画像を縮小して処理を早くする
rife専用
省略した場合は 0.5
-i --input_option 入力ストリームのffmpeg オプション
例 -i="-ss 1:30:00 -to 2:10:00" 処理する時間を指定する
-o --output_options 出力ストリームのffmpeg オプション
例 -o="-c:v h264_nvenc -cq 26" nvencを使う
-n --no_suffix 作成する動画のファイル名に接尾語を付けない
--log ログファイルを作成する
--sbs 入力画像と補完画像を左右に並べた動画を作成する
--fp16 実数演算にfloat16を使う
少し早くなるかわりにクオリティ(画質)が低下する
rife専用

補足

30fpsの動画と60fpsの動画がある場合に いずれも120fpsにしたい

通常は--slow_factorを使って-s 4と-s 2のように異なるオプションを指定しますが、-s -120(マイナスの場合は目標fpsとみなされる)とすると いずれも120fpsにすることができます。

30fpsまたは60fpsの動画を120fpsにする
python rife_video.py input.mp4 --slow_factor -120

24fpsの動画を120fpsにするにはslomo_video.pyで--slow_factorを5にしてください

スローモーション動画を作成する

--slow_factorで補完フレームを多めに指定した後 '--fps_ratio'を1.0等 小さめにして調整します。

8倍スローモーション
python rife_video.py input.mp4 --slow_factor 16 --fps_ratio 2

出力ファイルと同じ名前のファイルがある場合

ファイル名の最後に番号を付けて保存されます。

動画の一部を処理する(処理する時間を指定する)

入力ストリームオプションでffmpegコマンドを使います。

1時間30分から2時間10分までを処理する場合
python rife_video.py input.mp4 -i="-ss 1:30:00 -to 2:10:00"

nvencを使う

出力ストリームオプションでffmpegコマンドを使ってエンコーダーを指定できます。

h264 画質26の場合
python rife_video.py input.mp4 -o="-c:v h264_nvenc -cq 26"
h265 画質30の場合
python rife_video.py input.mp4 -o="-c:v hevc_nvenc -cq 30"

※ nvencはビデオカードが対応している必要があります。
※ (大抵の場合)処理のボトルネックはAI部分なので エンコーダーを早いものに変えても処理時間を早くする効果は得られません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0