Transcript
00:00:00うわあ、なんだか悲しい光景ですね。可哀想なケイト・ウィンスレット。ジャックがいなくて
00:00:09一人ぼっちで立っています。
00:00:11Netflixが「Video Object and Interaction Deletion」、
00:00:17通称「VOID」という非常に興味深いオープンソースAIツールを公開しました。
00:00:19ほとんどのAIビデオツールは、オブジェクトを消去することに関してはすでに優れています。それは目新しくありません。
00:00:24しかし、そのオブジェクトがシーンに及ぼした影響まで消し去ることは苦手です。
00:00:29例えば、ピンに当たるボウリングの球を取り除くと、ほとんどのモデルでは
00:00:34理由もなくピンが倒れたままになりますが、VOIDはこの問題を解決しようとします。
00:00:39これはNetflixとInsightによる新しいフレームワークで、因果関係を理解し、
00:00:44削除されたオブジェクトに基づいてビデオの内容を修正します。
00:00:47この動画では、このモデルを詳しく見ていき、その仕組みを確認します。また、実際に
00:00:52このモデルをテストするためのウェブアプリを作成したので、自分たちでいくつか
00:00:57ビデオテストを行ってみましょう。
00:00:58とても楽しくなりそうです。それでは、詳しく見ていきましょう。
00:01:05VOIDは「Video Object and Interaction Deletion」の略です。
00:01:09これがなぜそれほど重要なのかを理解するには、通常のビデオインペインティングが
00:01:15どのように機能するかを見る必要があります。
00:01:16標準的なAI消しゴムは、基本的には強力になった「コンテンツに応じた塗りつぶし」です。
00:01:20穴の周りのピクセルを見て、そこに何があるべきかを推測しようとします。
00:01:24これは透かしや静止している人には有効ですが、物理的な相互作用が
00:01:29発生した瞬間に破綻します。
00:01:31ミキサーでスムージーを作っている女の子を削除すると、通常のAIは人物を消しますが、
00:01:36ミキサーが理由もなく回転し、中身がかき混ぜられている状態のままになります。
00:01:40見た目は修正されますが、周囲の他のオブジェクトの物理現象は無視されます。
00:01:46VOIDは、「反事実的な現実」を再構築することで、その幽霊のような相互作用の問題を解決します。
00:01:53基本的には、そのオブジェクトや人物が最初から存在しなかったバージョンの
00:01:57ビデオを作り上げます。
00:01:58そして、これを実現する方法は実に巧妙です。
00:02:01ただすぐに描き始めるわけではありません。
00:02:03その代わりに、2パス・システムを使用します。
00:02:06最初のステップでは、推論フェーズを行います。
00:02:08まず、VOIDは視覚言語モデルとSAM2(Segment Anything Model 2)を使用して
00:02:15シーンを観察します。
00:02:16SAM2の仕組みについては別の動画で詳しく説明しているので、興味があればチェックしてください。
00:02:22SAM2が削除したいオブジェクトをピクセル単位で追跡する一方で、AIは
00:02:28「これを削除したら、他に何が変わるか?」と自問自答します。
00:02:32ドミノの山から1つのドミノを取り除くと、AIは他のドミノがカジュアルに
00:02:38影響を受けることを特定します。
00:02:39次に、研究者が「クアッド・マスク」と呼ぶものを作成します。これは、
00:02:44拡散モデルに対してどこを消去するかだけでなく、周囲のエリアの物理現象を
00:02:50どこで書き換えるべきかを指示する特定のマップです。
00:02:51そして、ステップ2は生成と洗練です。
00:02:54そのマップが生成されると、ビデオ拡散モデルが新しい映像を生成します。
00:03:00時々、これらのモデルは夢のような感じになり、オブジェクトが変形したり形が崩れたりすることがあります。
00:03:05これを修正するために、VOIDにはオプションの2回目のパスがあります。
00:03:08「フロー・ワープ・ノイズ」と呼ばれるものを使用して、それらの形状を所定の位置に固定し、
00:03:14物理現象が変化しても、残りのオブジェクトが確実で一貫した状態を保つようにします。
00:03:19しかし、「起こらなかったこと」をどうやってAIに教えるのか不思議に思うかもしれません。
00:03:23NetflixとInsightのチームは、トレーニングデータを得るために、現実の世界で
00:03:28車の衝突事故を撮影し、それを衝突しなかったことにすることはできませんでした。
00:03:30代わりに、彼らはKubricのような合成環境を使用しました。
00:03:34彼らは何千もの物理シミュレーションを実行し、ビフォーとアフターのバージョンを用意しました。
00:03:401つは衝突があるバージョン、もう1つはオブジェクトが最初から存在しないバージョンです。
00:03:44両方のバージョンをAIに見せることで、オブジェクトの存在と、それが環境に
00:03:49与える影響との関係を学習させました。
00:03:51これらすべては非常に魅力的ですが、実際に自分たちでこのツールをテストしてみましょう。
00:03:57実行するための最善の方法は、H100 GPUやそれと同等の環境で動作する
00:04:02RunPodモジュールのようなクラウドGPUを使用することです。
00:04:05しかし、最初にはっきり言っておきますが、セットアップは決して簡単ではありません。
00:04:10GitHubのドキュメントには多くの欠落や、誤解を招く情報があります。
00:04:14正しく動作させるためには、注意すべき点がいくつかあります。
00:04:18例えば、このコマンドはおそらく失敗します。なぜなら、この手順には
00:04:23SAM3モデルが必要であることが明記されていないからです。
00:04:25また、このコマンドも失敗する可能性があります。クアッド・マスクが正常に機能するには、
00:04:30厳密に「quad_mask_0.mp4」という名前にする必要があることが記載されていないためです。
00:04:35このように、ここには文書化されていない小さな問題がたくさんあります。
00:04:38また、SAM2でセグメント化されたマスクがすでにある場合はGradioデモが便利ですが、
00:04:44実際にそのマスクを作成するためのグラフィカル・ユーザー・インターフェースは提供されていません。
00:04:48そこで私は、これらすべての問題を解決し、セグメンテーション、推論ステップ、
00:04:54さらには2パス・システムまで実行できる、すぐに使えるUIを備えた
00:05:00カスタム・ウェブアプリを作成しました。
00:05:02動画をアップロードし、マスクをセグメント化して、最終的な出力をレンダリングするだけです。
00:05:07今からまさにそれを行っていきます。
00:05:09まず、強力なGPUを搭載したRunPodインスタンスを立ち上げる必要があります。
00:05:14今回のテストではH100を使用します。
00:05:17テンプレート・セクションで、コンテナ・サイズを100GBに増やしてください。
00:05:22そしてポート・セクションに、ウェブアプリを公開するためのポート
00:05:27「8998」を追加します。
00:05:29あとはPodにSSHで接続し、私のリポジトリをクローンして、そのディレクトリに移動し、
00:05:36「run.sh」コマンドを実行するだけです。
00:05:38モデルをダウンロードするためにHugging Faceのトークンの入力を求められます。また、
00:05:42SAM3リポジトリはゲート付きモデルであり、使用許可を申請する必要があるため、
00:05:48アクセス権があることを確認してください。
00:05:51通常、プロセスは非常に速く、数分で承認されます。
00:05:55次にGemini APIキーも必要です。セグメンテーションのステップで、正確な
00:06:00クアッド・マスク生成のためのポーズ推定を決定するためにGeminiを使用するからです。
00:06:06準備はいいですか?
00:06:07これら両方の資格情報があれば、「run.sh」コマンドですべてをインストールさせます。
00:06:13完了したら、ここに記載されている以下のコマンドでウェブアプリを
00:06:18起動できます。
00:06:19RunPodのページでこのポートをクリックすると、ウェブアプリが
00:06:24開きます。
00:06:25これで、ようやくモデルのテストを開始できます。
00:06:28最初のテストとして、映画『マトリックス』の有名なシーンを使用し、
00:06:32ネオをシーンから削除してどうなるか見てみましょう。
00:06:35まず最初に、削除指示のプロンプトを指定する必要があります。
00:06:41この場合は、「白い着物を着た戦闘員をシーンから削除して」のような
00:06:45指示を指定できます。
00:06:46その後、削除したいオブジェクトや人物の周りにいくつかのポイントを指定して、
00:06:51SAM2モデルがどの形状に焦点を当てるべきかを知らせるセクションに進みます。
00:06:57そして、結果ファイルを保存する出力フォルダを指定します。
00:07:02このフォルダ名は、他のタブでどのビデオを処理しているかを特定するための
00:07:06一意の識別子として使用するため、覚えておく必要があります。
00:07:11その後、2番目のタブに進み、セグメンテーション・ステップを実行して
00:07:16プロセスを開始します。
00:07:17それが終わったらタブ3に移動します。これは推論ステップで、モデルが実際に
00:07:22対象のオブジェクトや人物を削除しようとします。
00:07:26ここでもう一度、そのフォルダ名を入力する必要があります。
00:07:29そして、削除されたオブジェクトや人物が存在しない状態で、ビデオが
00:07:34どのように見えるべきかを説明するプロンプトを指定します。
00:07:37今回のケースでは、「ジムの中に立っている黒い着物の戦闘員」のような
00:07:42感じになるでしょう。
00:07:43削除されたオブジェクトや人物については言及せず、ビデオにあるべきものだけに
00:07:48焦点を当てて、推論ステップを実行することをお勧めします。
00:07:52完了したら、結果タブに移動して最終的なビデオを確認できます。
00:07:58ここでも、ビデオフォルダを指定する必要があります。
00:08:01さあ、見てください。
00:08:03ほら、すごいでしょ。
00:08:04まるでモーフィアスが幽霊と戦っているように見えますね。
00:08:07手などの削除において、いくつか不整合があるのがわかります。
00:08:12完璧ではありませんが、改善を試みるためにできることがもう1つあります。
00:08:18より良い結果を得るために、タブ4で2パス・フィルターを実行できます。
00:08:242パスを実行すると、このように2パスの結果が表示される
00:08:29追加のウィンドウが表示されます。
00:08:32それでもまだ、少し奇妙に見えますね。
00:08:34モーフィアスが幽霊と戦っているか、踊っているかのように感じます。
00:08:39このように、すべてのシーンで機能するわけではありません。
00:08:42非常に不自然になるシーンもありますが、ネオをシーンから完全に
00:08:48取り除くという点では良い仕事をしています。
00:08:49それを踏まえて、さらに2つ面白い例を試してみましょう。
00:08:53こちらは『ラ・ラ・ランド』の有名なダンスシーンです。
00:08:56ここでエマ・ストーンをシーンから削除してどうなるか見てみます。
00:09:01うわあ、見てください。
00:09:03これはほぼ完璧に見えます。
00:09:05ライアン・ゴズリングが一人で踊っているようにしか見えません。
00:09:09エマ・ストーンがライアン・ゴズリングの前を横切る瞬間を見てください。
00:09:13この移行はほぼシームレスです。
00:09:15わずかなノイズは見られますが、大部分において素晴らしい結果です。
00:09:21私がテストしたすべての結果の中で、これが最高でした。
00:09:24どういうわけか、これが実行するのに最も難しい例になるだろうと思っていました。
00:09:28しかし驚くべきことに、これが行ったすべてのテストの中で最良の結果をもたらしました。
00:09:33さて。
00:09:34もう一つの例を試してみたいと思います。
00:09:35これでは、有名な『タイタニック』のシーンからレオナルド・ディカプリオを
00:09:41削除して、何が起こるか見てみましょう。
00:09:42ああ、なんだか悲しく見えますね。
00:09:48可哀想なケイト・ウィンスレット。
00:09:49なんてことだ。
00:09:50ジャックがいない状態で、ただ一人でそこに立っています。
00:09:53これは興味深いですね。
00:09:55このモデルはレオをシーンから削除することにおいて、素晴らしい仕事をしました。
00:09:59ただ、ケイト・ウィンスレットの腕にいくつかのアーティファクトが残っているのが見えます。
00:10:03そして、うわあ、これはとても不気味です。
00:10:06反対側には、ケイトの腕を掴んでいる不気味な手がまだ残っています。
00:10:10なんてこった。
00:10:11一度見てしまうと、もう頭から離れません。
00:10:14正直なところ、セグメンテーションのステップでそれらの特定のポイントを
00:10:19削除対象として指定しなかった私のミスです。
00:10:21ですから、これは私の責任ですね。
00:10:23また、ケイト・ウィンスレットの顔が少し変形しているのも見えます。
00:10:26確かに、ちょっとした不気味の谷現象が起きています。
00:10:30全体として、このツールは宣伝通りの機能を持っていると思います。
00:10:33ただ、特定のビデオとその性質に左右されるというだけのことです。
00:10:37当然ながら、このシーンでモーフィアスを静止させることは不可能ですから。
00:10:41しかし、彼らのプロジェクトページの他の例を見ると、それらは本当に素晴らしいものです。
00:10:46このモデルには確かな実力があり、追加のトレーニングを積めば、
00:10:51さらに良くなる可能性があると思います。
00:10:52というわけで、皆さん。
00:10:53これがVOIDモデルの概要です。
00:10:55正直なところ、これをテストするのはとても楽しかったです。
00:10:58Netflixによって開発されたものなので、彼らがこれを何に使うつもりなのか、
00:11:03非常に気になりますね。
00:11:04ユーザーの好みや選択に基づいてビデオの物語を変更するために使われるのでしょうか?
00:11:09Netflixが『ブラック・ミラー: バンダースナッチ』で行ったような、
00:11:15「自分で冒険を選ぶ」タイプのアドベンチャー体験のように。
00:11:17覚えていますか?
00:11:18誰にも分かりませんね。
00:11:19いずれにせよ、今後このツールの使い道がどのように進化していくのか、
00:11:23非常に楽しみです。
00:11:24さて、皆さんはこのフレームワークについてどう思いますか?
00:11:27このツールは、どのようなユースケースで役立つと思いますか?
00:11:30下のコメント欄で、皆さんの考えをぜひ教えてください。
00:11:33このような技術的な解説が気に入った方は、動画の下にある
00:11:37高評価ボタンをぜひ押してください。
00:11:39また、チャンネル登録もお忘れなく。
00:11:42Better StackのAndresでした。また次の動画でお会いしましょう。