本記事では、FILM: Frame Interpolation for Large Motionと呼ばれる機械学習手法を用いて、フレーム間の中間画像を生成する方法を紹介します。
|
出典: google-research/frame-interpolation |
FILMとは
FILM: Frame Interpolation for Large Motionとは、2022年2月にGoogle
Researchより論文発表された2つの入力画像から複数の中間フレームを合成するフレーム補間アルゴリズムです。
上図をご覧いただくとイメージしやすいかと思いますが、FILMは2つの入力画像が与えられると、
その間を自然に繋ぐ画像を予測し合成します(フレーム補完)
従来手法では、複数のネットワークを使用して最適化、深度推定を行い、フレーム合成専用の個別のネットワークを使用していました。
この手法では、深度のground-truthを必要としていました。
FILMでは、すべてのスケールで重みを共有し、フレームのみからトレーニング可能なマルチスケール特徴抽出器によって区別される単一の統合ネットワークを提案しています。また、鮮明なフレームを合成するために、特徴マップ間の相関差を測定するグラム行列損失を使用してネットワークを最適化しています。
論文中では、Xiphラージモーショションベンチマークの最先端の方法よりも優れており、知覚損失を使用する方法と比較した場合、Vimeo-90K、Middlebury、およびUCF101でより高いスコアを達成していると言及されています。
|
出典: google-research/frame-interpolation |
デモ(Colaboratory)
それでは、実際に動かしながらFILMのフレーム補完を行っていきます。
ソースコードは本記事にも記載していますが、下記のGitHubでも取得可能です。
GitHub - Colaboratory demo
また、下記から直接Google Colaboratoryで開くこともできます。
なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。
おすすめの書籍
[初心者向け] Pythonで機械学習を始めるまでに読んだおすすめ書籍一覧
本記事では、現役機械学習エンジニアとして働く筆者が実際に読んだ書籍の中でおすすめの書籍をレベル別に紹介しています。
おすすめのオンライン講座
[初心者向け] 機械学習がゼロから分かるおすすめオンライン講座
本記事では、機械学習エンジニアとして働く筆者が、AI・機械学習をまったく知らない方でも取り組みやすいおすすめのオンライン講座をご紹介しています。
環境セットアップ
それではセットアップしていきます。 Colaboratoryを開いたら下記を設定しGPUを使用するようにしてください。
はじめに、GitHubからソースコードを取得します。
FILMの動作に必要なライブラリをインストールします。
requirement.txtをそのままpip
installすると推論時にエラーになるためColaboratoryにインストールされていないライブラリのみインストールします。
以上で、環境のセットアップ完了です。
学習済みモデルのセットアップ
論文発表元から公開された学習済みモデルを使用します。
gdownでプログラム上からColaboratory環境に直接ダウンロードします。
1枚の中間画像生成
それでは、さっそく中間画像を生成してみましょう。
まず、2つの入力画像から中間画像を1フレーム分のみ生成してみます。
結果は以下の通りです。
frame1, frame2の中間画像middleが生成されました。
複数枚の中間画像生成
次に、中間画像となるフレーム画像を複数枚生成し、フレーム画像をつなげて動画を作成します。
まず、入力画像となる2枚のフレーム画像を動画から切り出します。
本記事では、Pixabay様の動画を使用させていただきます。
Colaboratoryにアップロードした動画をフレーム画像に切り出します。
切り出したフレーム画像の1フレーム目と、15フレーム目をモデルに入力して、中間フレームを生成させてみます。
使用するフレーム画像は以下の通りです。
上記フレーム画像の中間フレーム画像を生成します。
結果は以下の通りです。
非常に自然にフレーム間を繋げていることが確認できます。
まとめ
本記事では、FILMを用いてフレーム間の中間画像を生成する方法をご紹介しました。
2枚の写真から動画を生成したり、一部が欠損している昔の動画の復元などに活用できそうですね。
これを機に機械学習に興味を持つ方が一人でもいらっしゃいましたら幸いです。
また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。
また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。
0 件のコメント :
コメントを投稿