at backyard

Color my life with the chaos of trouble.

RIFE ncnn VulkanをmacOS上で試すだけの備忘録

だいぶ久しぶりの投稿です

ビデオフレームを補間するためのRIFEというものがあります。
ここらへん私は全く専門ではないので、あまり説明はできません。

ユニバーサルなニューラルネットワーク推論フレームワークとしてncnnプロジェクトを使用している rife-ncnn-vulkan というプロジェクトがあり、これのmacOS向けのバイナリをローカルで動かした際のメモ書きです。

github.com

なおncnnは、モバイルプラットフォーム向けに最適化された高性能なニューラルネットワーク推論コンピューティングフレームワークであり、ncnnは、設計の初期段階から携帯電話への展開と使用を考慮された設計になっているようです。
なんだかすごそうですね

github.com

RIFE ncnn VulkanのリリースバイナリをmacOSで試してみる

あまり難しいことは分かりませんので、早速手を動かします。

リリースバイナリは以下からダウンロードできます。最新のmacOS版は rife-ncnn-vulkan-20221029-macos.zip のようなので、これをダウンロードします。

github.com

ちなみにバイナリ自体はintelでもm1でも、どちらでも利用できるようですね

~ file rife-ncnn-vulkan
rife-ncnn-vulkan: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64]
rife-ncnn-vulkan (for architecture x86_64): Mach-O 64-bit executable x86_64
rife-ncnn-vulkan (for architecture arm64):  Mach-O 64-bit executable arm64

解凍したバイナリを用いて以下のように利用することができるようです。

./rife-ncnn-vulkan -0 0.jpg -1 1.jpg -o 01.jpg

この場合 0.jpg 1.jpg という2つの画像の間を補間するような画像が生成できるようです。

で、早速実行してみようとすると、このようなメッセージが出てしまいます。

最近のmacは厳しいので、今回のようにダウンロードした実行バイナリなどは基本的にそのままでは実行できません。
これをこのまま実行するようにするには、以下のようにターミナルから実行ファイルに対して実行する必要があります。

※注意:このコマンドを打つとmacOS側のセキュリティの仕組みにより本来は実行できなかったバイナリが実行できるようになります。これによってPCが危険な状態になるケースもあるので、自己責任でお願いします

# 実行バイナリに対してxattrを実行
xattr -c rife-ncnn-vulkan

これで実行が可能になります。

実際に利用してみる

というわけで以下の2枚の画像を用意します。

0.png

1.png

0.png から 1.png にかけて女性の表情が笑顔になっていく画像ですが、0.png1.png の間を補間する画像を生成させます。

実行方法は

./rife-ncnn-vulkan -0 0.png -1 1.png -o 01.png

となります。

これで実行すると 01.png という画像ファイルがカレントに生成されます。

こちらの画像が以下です

01.png

0.pngと1.pngの間を補間する画像

いい感じに0.png1.png の間を補間する画像が生成できました。

ディレクトリ単位で指定

以下のようにコマンドを打つことで、input_frames 内に入っている画像間を勝手に保管して output_frames に出力してくれます。

./rife-ncnn-vulkan -i input_frames/ -o output_frames/

一応 input_frames には連番でファイルを格納しておきましたが、その順番通りに画像を見て補間してくれているようでした。

まだHello worldレベルでしか触っていませんが、かなり良さそうです。