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