皆様こんにちは。TOM1192です。
今回は閑話休題。GPUを酷使することでフレーム補間を作成してくれるDAIN-APPの紹介です。
当方ですらやべーことになりました。
1.DAIN-APPとは
AIの力でフレーム補間を作るアプリケーションです。NvidiaGPUのCUDAを使用するのでAMDやIntelGPUでは使用できません。
また、CUDA5.0に対応している必要があり、最低でもMaxwell(GTX900番台)を必須とします。
2.DAIN-APPのやべーところ
このアプリケーションは、
となっています。
動画のフレーム単位での分割と動画生成はCPUで行われるのですが、フレーム補間の生成をGPUで行うようになっています。
が、なんとこのフレーム補間生成にとんでもないGPUメモリを要求してくるのがこのDAIN-APPのやべーところとなります。
さて問題です。これは生成中の解像度はどれくらいでしょうか?
答えは720p(1280x720)です。
実際はもともと使用されているのが2GBくらいあるのですが、それでも6GBをフレーム補間生成に使用しています。
ちなみに、このアプリでは分割数を増やすことでVRAM消費を抑えることができるのですが、それを使わずにできるのはRTX3090でもFullHD(1920x1080)が限界かもしれません。
4Kに関しては縦横4分割(合計16分割)を行うことで可能にすることができました。
4Kは平気で24GBを使い切ります。
最上位のRTX3090でこのザマなので、本気で4Kでフレーム補間を生成したい方はさらに上位のRTX A6000(VRAM48GB)を狙うほかありません。
なお、価格はRTX3090の3倍です。
当方は途中で打ち切りましたが、4Kの2分動画を生成しようとすると13時間かかるそうです。
720pですら1時間半とか平気でかかるので、いかにやべーかわかるかと思います。
今までRTX3090を酷使した事例は
- DaVinci Resolve(18GB/24GB)
- Waifu2x Caffe(19.7GB/24GB)
というものはありましたが、DAIN-APPはそれを超えるという時点でおかしいです。
3.操作画面
3-1 ファイル入出力
動画のインポートと出力先を指定します。
です。
その下は出力の方式です。
- MP4、WebM・・・動画として出力
- Gif・・・Gifアニメーションで出力
- APNG・・・AnimationPNGで出力
となっています。
Output Folderは出力先です。自動設定されないので予めちゃんと設定しておきましょう。
3-2 フレーム補間生成の条件
フレーム補間の生成条件を指定します。
Interpolation Optionsで設定します。
3-2-1 Use Harf-Precision float
いわゆる半精度浮動小数点数演算(FP16)で行うかという設定です。
精度が低くなりますが、高速になります(単純に倍にくらいになる)。RTX3000番台以降はFP32コアが別途追加されてるので更に倍になります。
3-2-2 Use Pytorch benchmark
機械学習(AI)をベンチマークモードで運用するかどうかの設定です。
有効化すると、オートチューニングで効率よく行えるそうですが、一方でVRAM使用量もふえるそう。
速度と容量の両立は厳しいです。
3-2-3 Batch Size
バッチ数です。コレが多いほど処理速度は速くなりますが、CPU負荷が増大するのとまたしもVRAM使用量が増えます。
たとえ1にしていても平気でVRAMが8GB近く消費されるあたり、増やすのは自殺行為ともいえるでしょう。
ただし、後述する分割を有効化した場合は増やしてもいいかもしれません。
3-2-4 Device to Use
使うGPUの設定です。複数搭載している場合は良いほうを選びましょう。
といっても複数搭載自体は珍しいので設定することはほとんどの場合はないでしょう。
3-2-5 Depth Awareness Mode
映像の奥行き処理の設定です。
- Real life or 3D 奥行きが多い撮影系動画や3DCG用に最適化します。
- Cartoon or anime 2次元動画用に最適化します。
3-2-6 Interpolation Algorithm
フレーム補間生成のアルゴリズム設定です。
現段階ではDefaultともう一つありますが、もう一つのほうはNot Workingと書いてあるので設定不要です。
3-2-7 InputFPSとInterpolate
最初のファイル入出力を動画にした場合は自動的にFPSが入力されますが、連番のフレームキーの場合は手動入力する必要があります。
Interpolateは出力動画のFPSの倍率を指定し、30FPSの場合でInterpolateをX2にすると出力される動画は60FPSになります。
最大でX8倍まで行えますが、当然時間も負荷もVRAM消費量も増えます。
3-2-8 PNG files compression
フレーム補間で生成するPNG画像の圧縮率です。
1に近づくほどきれいになりますが、1枚あたりのサイズが大きくなり、速度が低下します。
逆に9に近づくほど圧縮率が上がり、速度も向上しますが品質は低下します。
なお、初期値は6です。ほぼオリジナルと同じサイズの画像を生成します。
0で無圧縮になりますが、1枚あたりだいたい3倍くらいのサイズになるためストレージ圧迫が凄まじくなります。
3-3 VRAM不足対策
RTX3090をもってしてもVRAMが不足することはままあります。
故にこちらでVRAMが不足しないように設定することができます。
3-3-1 Downscale Video
チェックを入れると有効化され、高い解像度の動画を意図的に落とし込むことでVRAMの使用を減らします。
解像度が減るので出力される動画の解像度まで減ってしまいます。
縦解像度(例:1280x720であれば720)を指定します。
3-3-2 Split frames into sections
画像1枚を多数に分割することで擬似的に解像度を低下させ、VRAMの使用量を抑えます。
- Number of divisions X・・・X軸方向(横解像度)の分割数
- Number of divisions Y・・・Y軸方向(縦解像度)の分割数
- Section Padding・・・縦横それぞれのかぶらせるドット数
をそれぞれ設定します。
分割数を増やせば増やすほどVRAM使用量が減りますが、べらぼうに時間が伸びていきますので長時間使用が封印される公算が高くなります。
RTX3090ですら13時間もかかるということはもっと分割数を増やすと日単位になりかねません。
他の設定もあるんですが、個人的にはこの2つのタブを設定するといいかと思います。
4.実際に生成してみて
当方で実際に720p30fpsの動画を60fps化してみたところ、動きが少ないところでは歪んだところが発生してしまうのですが、逆にそこそこ動きの多いところでは歪んだところも少なく十分実用的であると感じました。
なお、このアプリではフレーム補間を生成するまでを担当させられるので、それを動画編集ソフトで取り込めば自分好みの動画生成も可能です。
5.終わりに
特定の欠点を除けば十分実用的なフレーム補間生成ソフトです。
AMDのFluidMotionとは異なり、物理的にフレームを生成する仕様上取り回し自体は非常に良いというメリットがあります(もともとのコンセプトが違うので一概に同じとはいえませんが)。
が、VRAMの消費量とかかる時間は圧倒的に長いという欠点がありますが、それに見合った価値は存分にあります。
なお、当方の使用量的に最低でもVRAMが8GB以上(GTX1070以上)で推奨RTX2080以上であると思われます。
自分で使えると思った方はぜひ試していただきたいと思っています。
-PS
PC勢を欲してるDiscord鯖があるそうです。興味があったら見に行ってあげてください。