だいぶ久しぶりの投稿です
ビデオフレームを補間するためのRIFEというものがあります。
ここらへん私は全く専門ではないので、あまり説明はできません。
ユニバーサルなニューラルネットワーク推論フレームワークとしてncnnプロジェクトを使用している rife-ncnn-vulkan
というプロジェクトがあり、これのmacOS向けのバイナリをローカルで動かした際のメモ書きです。
なおncnnは、モバイルプラットフォーム向けに最適化された高性能なニューラルネットワーク推論コンピューティングフレームワークであり、ncnnは、設計の初期段階から携帯電話への展開と使用を考慮された設計になっているようです。
なんだかすごそうですね
RIFE ncnn VulkanのリリースバイナリをmacOSで試してみる
あまり難しいことは分かりませんので、早速手を動かします。
リリースバイナリは以下からダウンロードできます。最新のmacOS版は rife-ncnn-vulkan-20221029-macos.zip
のようなので、これをダウンロードします。
ちなみにバイナリ自体は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.png
と1.png
の間を補間する画像を生成させます。
実行方法は
./rife-ncnn-vulkan -0 0.png -1 1.png -o 01.png
となります。
これで実行すると 01.png
という画像ファイルがカレントに生成されます。
こちらの画像が以下です
01.png
いい感じに0.png
と1.png
の間を補間する画像が生成できました。
ディレクトリ単位で指定
以下のようにコマンドを打つことで、input_frames
内に入っている画像間を勝手に保管して output_frames
に出力してくれます。
./rife-ncnn-vulkan -i input_frames/ -o output_frames/
一応 input_frames
には連番でファイルを格納しておきましたが、その順番通りに画像を見て補間してくれているようでした。
まだHello worldレベルでしか触っていませんが、かなり良さそうです。