複数枚を補間して動画をスローにしたい

概要

動画から取り出した連続する2枚のフレーム画像の間を補間する方法についてまとめています.ここではNVidiaが提案したEnd to EndなCNNによるSuper Slomoについて紹介します.
Facebookシェア Twitterツイート LINEで送る このエントリーをはてなブックマークに追加
この章を学ぶ前に必要な知識
0
条件
  • 動画が入力
効果
  • 各フレーム間を補間する画像を生成する
ポイント
  • ここではNVidiaのSuper Slomoについて紹介
  • 深層学習(Deep Learinig)ベースの手法
  • この手法では、時間に依存するパラメータを持たないので自由に補間枚数を決められる

解 説

動画から取り出した連続する2枚のフレーム画像の間を補間する方法についてまとめています. ここではNVidiaが提案したEnd to EndなCNN(Deep Learningの技術の一種)によるSuper Slomoについて紹介します.
複数枚を補間して動画をスローにする方法について

1.NVidiaのSuper Slomo

NvidiaのSuperSlomoの動画を以下にリンクします
NVidiaのSuper Slomoについて
NVidiaのSuper Slomoの論文をリンクしておきます.

1.1.Super Slomoの技術解説

SuperSlomoの概要について記します. SuperSlomoはDeepLearningにおいて頻出であるCNN, Unetを用いた深層学習による動画補間の手法です. 簡単な流れ 0~1秒のフレームを補間したいとして補間するフレーム時間をtとする. ①動画内の二枚の連続する画像(A,B)を元に、どのようなオプティカルフローがあったかを推定(CNN, Unetによる).このときF(A→B)とF(B→A)の両方を推定. ② また、見えるか見えないかのVisibilityMap V(A→t), V(B→t)を推定 ③ Flowの推定 + 入力画像 + VMapを使って補間画像 I を推定
SuperSlomoの概要
SuperSlomoの論文より引用. 上段は、ネットワーク全体.(ネットワークは二段階) 下段は、FlowのFを表示している.
それではSlomoの詳細について説明. 登場する情報 ・\(I_0,I_1\) : 入力画像. 時間0での画像と、時間1での画像 ・\(I_t\) : 補間した出力画像. ・\(F(0→1), F(1→0)\) : それぞれの画像からみてどのように動いたかのOpticalFlow ・\(F(0→t), F(1→t)\) : 補間時間tまでのそれぞれの画像からの推定OpticalFlow. ・\(\widehat {F(0→t)}, \widehat {F(1→t)}\) : 補間時間tまでのよりよく推定したOpticalFlow. ・\(V(0→t), V(1→t)\) : 補間時間tでの見える部分の変化領域.オクリュージョンを推定. 登場するネットワーク(CNN) 全部で使うネットワークは3つ.どれもCNNで構成. ①\(F(0→1), F(1→0)\)を推定するネットワーク : Unetを用いて、入力画像間\(I_0, I_1\)の補間を行う. ②\(\widehat {F(0→t)}, \widehat {F(1→t)}\) を推定するネットワーク: 境界線など動きが滑らかでないところでは、仮で推定した\(F(0→t), F(1→t)\)では精度が出ない.主に境界線周りでこれを修正するようにする. ③\(V(0→t), V(1→t)\)をステイするネットワーク: 入力画像からどこが可視されている部分かオクリュージョンかを推定するネットワーク 他は全て通常の計算で算出 上記のネットワークで出したもの以外は、通常の計算で求める. 具体的には、\(F(0→t), F(1→t)\), \(I_t\) などは計算で求めている.
Slomoの詳細
SuperSlomoはUnetを使用していることはすでに述べた通り. OpticalFlow推定のネットワーク工夫 入力に近いConvolution層ではできる限り大きなOpticalFlowも捉えられるように7x7のサイズのフィルタを設定.数段めからは5x5や3x3になるようにしている. また、poolingはAveragePoolingを用いている.
Super SlomoにおけるCNNのポイント
この章を学んで新たに学べる
Comments

Reasons
>>隠す