Super SloMo: ニューラル ネットワークを使用してスーパー スロー モーションのブレインストーミングを行う

ビデオの遅延と滑らかさの欠如の問題を解決するために、ビデオ フレーム挿入方式が登場しました。 NVIDIA が提案する Super SloMo 方式は、一般的な機器で撮影した動画に対して、高フレームレートのスローモーション動画を「脳内補完」できる方式です。この成果物により、映像制作の敷居がさらに下がりました。
現在、人々のビデオフレームレートの追求はますます高まっており、高フレームレートのビデオはますます滑らかになり、人々の視聴体験を大幅に向上させることができます。
既存のカメラでキャプチャされたビデオのフレーム レートも、25 FPS (フレーム/秒) から 60 FPS、そして 240 FPS、あるいはそれ以上まで継続的に増加しています。

しかし、高フレームレートのカメラ機器は非常に多くのメモリを必要とし、高価であるため、まだ普及していません。専門的な機器を使わずに高フレームレートのビデオを取得するために、時代の要求に応じてビデオフレーム挿入技術が登場しました。
Nvidiaが提案するAI「頭脳補完」手法Super SloMoは、フレームレートがわずかでも数あるビデオフレーム挿入技術の中で最高のものです 30 フレームのビデオは、Super SloMo によって 60 フレーム、240 フレーム、またはそれ以上に補完することもできます。
従来のフレーム挿入方法の長所と短所の概要
Super SloMo をより深く理解するために、まず既存のより伝統的なビデオ フレーム挿入テクノロジを見てみましょう。
フレームサンプリング
フレーム サンプリングの本質は、キー フレームを使用して補正フレームを作成することです。これは、フレームを挿入しないのと同じです。同じビデオ品質でファイル属性のフレーム レートが向上し、ファイル サイズが大きくなるだけでなく、見た目の向上は得られません。
アドバンテージ:フレーム サンプリングは、消費するリソースが少なく、高速です。
欠点:ビデオがあまりスムーズに見えなくなる可能性があります。

フレームブレンディング
フレーム ブレンディングは、その名前が示すように、前後のキーフレームの透明度を高め、それらを新しいフレームにブレンドしてギャップを埋めることです。
アドバンテージ:所要時間を計算します。
欠点:あまり効果的ではありません。元のキーフレームを半透明にしているだけなので、動体の輪郭が前後2枚のフレームに重なると、明らかなぼやけが生じ、映像の滑らかさはほんの少ししか向上しません。

動き補償
動き補償 (動き推定と動き補償、略して MEMC) の原理は、画像ブロックの動きの傾向を分析し、計算を使用して 2 つのフレーム間の差分で水平方向と垂直方向の動きのあるブロックを見つけることです。真ん中のフレーム。
MEMC は、ビデオのフレーム レートを向上させ、視聴者により滑らかな外観と操作性を提供するために、主にテレビ、モニター、モバイル端末で使用されます。
アドバンテージ:モーションジッターを軽減し、画像のにじみやゴーストを弱め、画像の鮮明さを向上させます。
欠点:動くオブジェクトの背景が比較的複雑な状況では、オブジェクトのエッジの動きにバグが発生します。

オプティカルフロー方式
オプティカル フロー手法は、コンピューター ビジョン研究における重要な方向性であり、上下のフレームに基づいてピクセルの移動の軌跡を推測し、新しい空きフレームを自動的に生成します。モーション ブラーの計算方法と似ています。
アドバンテージ:映像はより滑らかになり、遅延も少なくなります。
欠点:計算量が多く時間がかかる、光に敏感で光の変化が大きいと画像乱れなどのエラーが発生しやすい。

Super SloMo: 業界標準の AI フレーム補間方式
2018 年のコンピューター カンファレンス CVPR で、NVIDIA は次の論文を発表しました。 「Super SloMo: ビデオ補間のための複数の中間フレームの高品質推定」, Super SloMo が提案され、業界で大きな注目を集めました。

論文アドレス: https://arxiv.org/pdf/1712.00080.pdf
Super SloMo は従来の方法とは異なり、ディープ ニューラル ネットワークを使用してフレーム充填を実装します。トレーニングに多数の通常ビデオとスローモーション ビデオを使用し、ニューラル ネットワークに通常のビデオに基づいて推論して高品質のスーパー スローモーション ビデオを生成する方法を学習させます。。

Super SloMoチームが提案した手法は、そのフレームワーク全体は、2 つの完全畳み込みニューラル ネットワーク U-Net に依存しています。
まず、U-Net を使用して、隣接する入力画像間の双方向オプティカル フローを計算します。これらのオプティカル フローは、各タイム ステップで線形に適合され、中間フレームの双方向オプティカル フローを近似します。
移動境界におけるアーティファクトの問題を解決するために、別の U-Net を使用して、近似のオプティカル フローを改善し、柔軟な可視性マッピング関係を予測します。最後に、2 つの入力画像がワープされ、線形に融合されて中間フレームが形成されます。
さらに、Super SloMo のオプティカル フロー計算ネットワークと補間ネットワークのパラメーターは、補間フレームの特定のタイム ステップに依存しません (タイム ステップはネットワークの入力として使用されます)。したがって、2 つのフレーム間の任意のタイム ステップでフレームを並行して補間できるため、多くの単一フレーム補間法の制限を突破できます。

著者らは、最適化されていない PyTorch コードを使用すると、単一の NVIDIA GTX 1080Ti および Tesla V100 GPU で解像度 1280*720 の 7 つの中間フレームを生成するのにわずか 0.97 秒と 0.79 秒しかかからないと述べています。
ネットワークをトレーニングするには、著者は YouTube や手持ちカメラから複数の 240 フレームのビデオを収集しました。合計 1,100 個のビデオ セグメントが収集され、解像度 1080 × 720 の 300,000 個の個々のビデオ フレームが構成されました。これらのビデオは、屋内から屋外、静的カメラから動的カメラ、日常活動からプロスポーツまで、さまざまなシーンをカバーしています。
次に、このモデルは他のデータセットで検証され、その結果、この研究によりこれらのデータセットに対する既存の手法のパフォーマンスが大幅に向上したことが示されました。
チュートリアルに従って、ワンクリックで Super SloMo を実現してください
NVIDIA の論文の著者はデータ セットとコードを公開していませんが、専門家は GitHub 上の avinashpaiwal という名前のユーザーによって、Super SloMo の独自の PyTorch 実装をオープンソース化しました。その結果は、で説明されているものとほぼ同じです。紙。
プロジェクトの具体的な情報は次のとおりです。

モデルのトレーニングとテストは PyTorch 0.4.1 と CUDA 9.2 で完了するため、これら 2 つのソフトウェアのインストールが必須です。さらに、NVIDIA グラフィック カードも必要です。
さらに、ビデオを使用してモデルを直接トレーニングすることはできないため、ビデオからフレームを抽出するために ffmpeg もインストールする必要があります。これらの準備がすべて完了したら、Adobe 240fps データセットをトレーニング用にダウンロードできます。
ただし、これらを準備する必要はありません。静かに「配り会」をするだけで、ワンクリックで Super SloMo を実現できます。
国内の機械学習コンピューティング パワー コンテナ サービス プラットフォーム (https://openbayes.com) で、対応するチュートリアルを見つけました。データセットからコード、計算能力まですべてが揃っているので、初心者でも簡単に始めることができます。
チュートリアルのリンク:
https://openbayes.com/console/openbayes/containers/xQIPlDQ0GyD/overview

チュートリアル ユーザー ガイド
まず、「Public Resources」メニューで https://openbayes.com/ に登録してログインします。 「公開チュートリアル」、このチュートリアルを選択します—「Super-SloMo スーパースローモーションレンズの PyTorch 実装」。
チュートリアルのサンプル表示ファイルは Super-SloMo.ipynb です。このファイルを実行すると環境がインストールされ、最終的なフレーム充填からのスーパー スローモーション効果が表示されます。
独自のビデオ素材を使用し、以下の生成されたコード内の lightning-dick-clip.mp4 をビデオ ファイル名に変更することもできます。
「スケール」属性は、生成されるビデオの速度を制御するために使用されます。たとえば、4 に設定すると、4 倍速でのスロー再生を意味します。
コードを生成します:
!python3 'Super-SloMo/eval.py' \
'lightning-dick-clip.mp4' \
--checkpoint='/openbayes/input/input0/SuperSloMo.ckpt' \
--output='output-tmp.mp4' \
--scale=4
print('Done')
ビデオ形式コードを変換します。
!ffmpeg -i output-tmp.mp4 -vcodec libx264 -acodec aac output.mp4
このチュートリアルでは、インターネット上の特定のビデオを使用して Super SloMo フレーム挿入を実行し、次の結果が得られます。

現在、このプラットフォームはウールの収集にも使用でき、vGPU の使用時間は毎週誰でも簡単に完了できるので、急いで試してみてください。

参考文献:
論文: https://arxiv.org/pdf/1712.00080.pdf
プロジェクトのホームページ: http://jianghz.me/projects/superslomo/
https://zhuanlan.zhihu.com/p/86426432