タグ: 動画

  • 動画も高精度に!ComfyUIとSegment Anything Model 2(SAM 2)でセグメンテーションをマスターしよう

    コンピュータビジョンの世界に革命をもたらした画像セグメンテーションモデル「Segment Anything Model(SAM)」。その登場から約1年、METAが新たな進化を遂げた「Segment Anything Model 2(SAM 2)」を発表しました。画像だけでなく動画にも対応したこの最新モデル、使い方によってはかなり実用的になり得るでしょう。
    本記事では、SAM 2の特徴や機能、そして将来の可能性について詳しく解説します。また、ComfyUIで実際に動作させる方法についても解説します。

      1. Segment Anything Model 2(SAM 2)とは

      画像

      2024年7月29日、METAは画像と動画の両方に対応した最新のオブジェクトセグメンテーションモデル「Segment Anything Model 2(SAM 2)」を発表しました。SAM 2は、昨年リリースされた画像セグメンテーションモデル「Segment Anything Model(SAM)」の後継として開発され、画像だけでなく動画にも対応した革新的な機能を備えています。

      https://ai.meta.com/blog/segment-anything-2

      SAM 2の主な特徴

      1. 統合モデル: SAM 2は、画像と動画の両方でオブジェクトセグメンテーションを行える初めての統合モデルです。
      2. リアルタイム処理: プロンプトベースのセグメンテーションをリアルタイムで実行できます。
      3. ゼロショット汎化: 事前に学習していない物体や視覚ドメインでもセグメンテーションが可能です。
      4. 高性能: 画像と動画の両方で最先端の性能を達成しています。
      5. 柔軟性: カスタム適応なしに多様な用途に適用できます。

      技術的詳細

      SAM 2は、統一されたプロンプト可能なモデルアーキテクチャを採用しています。このモデルは、1100万枚のライセンス画像とプライバシーを尊重した画像、110万枚の高品質セグメンテーションマスクデータ、10億以上のマスクアノテーションという過去最大のデータセットで訓練されています。

      また、SAM2は、画像と動画のセグメンテーションを統合する革新的なアーキテクチャを採用しています。

      画像
      1. 画像エンコーダー: 入力フレームを高次元の特徴表現に変換します。
        • アーキテクチャ: Vision Transformer (ViT)ベース
        • 出力: 空間的に構造化された特徴マップ
      2. マスクデコーダー: セグメンテーションマスクを生成します。
        • アーキテクチャ: Transformer decoder
        • 入力: 画像特徴、プロンプト埋め込み
        • 出力: 2D確率マスク
      3. メモリメカニズム:
        • メモリエンコーダー: 現在のマスク予測からメモリトークンを生成
        • メモリバンク: 過去フレームとプロンプトからのメモリを保存
        • メモリアテンション: 現在フレーム埋め込みとメモリを統合
      4. オクルージョンヘッド: オブジェクトの可視性を予測します。
        • アーキテクチャ: 軽量なMLPネットワーク
        • 出力: フレームごとの可視性スコア

      SAM 2の特筆すべき機能の一つが「メモリバンク」です。これは最近のフレームや以前にプロンプトされたフレームの情報を空間特徴マップとして保持する機能で、短期的な物体の動きを符号化し、オブジェクトトラッキング能力を向上させています。

      応用分野

      SAM 2は以下のような幅広い分野での活用が期待されています。

      1. クリエイティブ産業: ビデオ編集の改善、ユニークな視覚効果の作成
      2. 医療画像処理: 解剖学的構造の正確な識別
      3. 自動運転: 知覚能力の向上、ナビゲーションと障害物回避の改善
      4. 科学研究: 海洋科学での音波画像のセグメンテーション、サンゴ礁の分析
      5. 災害救援: 衛星画像の分析
      6. データアノテーション: アノテーション作業の高速化

      オープンソースとデータセット

      METAは、SAM 2のコードとモデルのweightsをApache 2.0ライセンスで公開しています。さらに、SAM 2の開発に使用されたSA-Vデータセットも公開されており、約51,000本の実世界の動画と60万以上のマスクレット(時空間マスク)が含まれています。このデータセットはCC BY 4.0ライセンスで提供され、研究者やデベロッパーが自由に利用できます。

      2. ComfyUIでの実行準備

      まずは、SAM2をComfyUIで実行するための準備をしましょう。

      AICU謹製の ComfyUI Manger入りGoogle Colabノートブックです。
      https://j.aicu.ai/Comfy

      カスタムノード

      以下のカスタムノードをインストールしてください。すべてComfyUI Managerからインストール可能です。

      • ComfyUI-segment-anything-2
        • Kijai氏が作成したSAM2用のカスタムノード
        • SAM2に必要なモデルは、Kijai氏のHugging Faceのリポジトリから自動でダウンロードされる

      https://github.com/kijai/ComfyUI-segment-anything-2

      • ComfyUI-Florence2
        • Florence2を使用するためのカスタムノード
        • Florence2でプロンプトからのオブジェクト検出を実現する

      https://github.com/kijai/ComfyUI-Florence2

      • KJNodes for ComfyUI
        • ImageAndMaskPreview: 画像とマスクを両方合わせてプレビューするためのノード
        • Resize Image: 画像サイズの変更に使用されるノード

      https://github.com/kijai/ComfyUI-KJNodes

      • comfyui-tensorop
        • ComfyUI-Florence2で必要

      https://github.com/un-seen/comfyui-tensorops

      • ComfyUI-VideoHelperSuite
        • 動画を処理するためのカスタムノード

      https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite

      Google Colabのログにインストール経過が表示されます。

      画像

      ComfyUI Manager上からComfyUIの再起動が必要です。
      (URLは変わりません)

      ワークフロー

      ComfyUI-segment-anything-2のリポジトリで配布しているサンプルを使用します。サンプルは、オブジェクト自動検出による画像のセグメンテーション、同様の手法による動画のセグメンテーション、指定した箇所のセグメンテーションの3種類があります。以下のリポジトリからワークフローのJSONファイルをダウンロードし、ComfyUIのキャンバスにロードしてください。

      ロード直後は「truck.jpgがない」というエラーが出ますが、まずは動作確認をしていきましょう。気にせずにお好きな画像を左下の「Load Image」に読み込んで「Queue Prompt」を押してみてください。

      今回動作確認に使用した画像

      画像
      画像

      複雑な画像ですが見事に分離できています。

      以下は各ワークフローの詳細解説です。

      • オブジェクト自動検出による画像のセグメンテーション

      https://github.com/kijai/ComfyUI-segment-anything-2/blob/main/examples/florence_segment_2.json

      • オブジェクト自動検出による動画のセグメンテーション

      https://github.com/kijai/ComfyUI-segment-anything-2/blob/main/examples/image_batch_bbox_segment.json

      • 指定箇所のセグメンテーション

      https://github.com/kijai/ComfyUI-segment-anything-2/blob/main/examples/points_segment_video_example.json

      3. ワークフローの解説: オブジェクト自動検出による画像のセグメンテーション

      グラフの全体像

      以下がグラフの全体図になります。

      画像

      以下に今回使用するグラフのフローチャートと詳細を示します。

      画像

      このグラフは、Florence-2とSAM 2を組み合わせて画像内のオブジェクトを検出し、セグメンテーションを行うプロセスを示しています。以下に詳細な解説を提供します。

      グラフの主要コンポーネント

      1. 画像の読み込み (LoadImage ノード)
      2. Florence-2モデルのロード (DownloadAndLoadFlorence2Model ノード)
      3. SAM 2モデルのロード (DownloadAndLoadSAM2Model ノード)
      4. 画像のリサイズ (ImageResizeKJ ノード)
      5. Florence-2による物体検出 (Florence2Run ノード)
      6. 検出結果の座標変換 (Florence2toCoordinates ノード)
      7. SAM 2によるセグメンテーション (Sam2Segmentation ノード)
      8. 結果のプレビュー (ImageAndMaskPreview ノード)

      グラフの詳細な解説

      1. 画像の読み込み:
        • 「truck.jpg」という画像ファイルを読み込みます。
      2. Florence-2モデルのロード:
        • 「microsoft/Florence-2-base」モデルをFP16精度でロードします。
      3. SAM 2モデルのロード:
        • 「sam2_hiera_small.safetensors」モデルをCUDAデバイスでBF16精度でロードします。
      4. 画像のリサイズ:
        • 入力画像を768×512ピクセルにリサイズします。(大きすぎる画像を小さくしているだけなので、このノードをスキップしても問題ありません)
      5. Florence-2による物体検出:
        • リサイズされた画像に対してFlorence-2モデルを実行します。
        • 「wheel」(車輪)をプロンプトとして使用し、画像内の車輪を検出します。
        • 出力には検出されたオブジェクトの情報(バウンディングボックスなど)が含まれます。
      6. 検出結果の座標変換:
        • Florence-2の出力をSAM 2で使用可能な座標形式に変換します。
      7. SAM 2によるセグメンテーション:
        • Florence-2で検出されたバウンディングボックスを使用して、SAM 2モデルでセグメンテーションを実行します。
        • 結果として、検出されたオブジェクト(車輪)の詳細なセグメンテーションマスクが生成されます。
      8. 結果のプレビュー:
        • 元の画像とセグメンテーションマスクを組み合わせて表示します。
        • マスクは赤色(RGB: 255, 0, 0)で表示されます。

      4. ワークフローの解説: オブジェクト自動検出による動画のセグメンテーション

      グラフの全体像

      以下がグラフの全体図になります。

      画像

      以下に今回使用するグラフのフローチャートと詳細を示します。

      画像

      グラフの主要コンポーネント

      1. 動画の読み込み (VHS_LoadVideo ノード)
      2. Florence-2モデルのロード (DownloadAndLoadFlorence2Model ノード)
      3. SAM 2モデルのロード (DownloadAndLoadSAM2Model ノード)
      4. Florence-2による物体検出 (Florence2Run ノード)
      5. 検出結果の座標変換 (Florence2toCoordinates ノード)
      6. SAM 2によるセグメンテーション (Sam2Segmentation ノード)
      7. 結果の合成と表示 (MaskToImage, ImageCompositeMasked, VHS_VideoCombine ノード)

      グラフの詳細な解説

      1. 動画の読み込み:
        • 「katana_02.mp4」という動画ファイルを読み込みます。
        • 16フレームを上限とし、5フレームごとに1フレームを選択して処理します。
      2. Florence-2モデルのロード:
        • 「microsoft/Florence-2-large」モデルをFP16精度でロードします。
      3. SAM 2モデルのロード:
        • 「sam2_hiera_base_plus.safetensors」モデルをCUDAデバイスでBF16精度でロードします。
      4. Florence-2による物体検出:
        • 読み込んだ動画フレームに対してFlorence-2モデルを実行します。
        • 「sword」(剣)をプロンプトとして使用し、画像内の剣を検出します。
      5. 検出結果の座標変換:
        • Florence-2の出力をSAM 2で使用可能な座標形式(バウンディングボックス)に変換します。
      6. SAM 2によるセグメンテーション:
        • Florence-2で検出されたバウンディングボックスを使用して、SAM 2モデルでセグメンテーションを実行します。
        • 結果として、検出されたオブジェクト(剣)の詳細なセグメンテーションマスクが生成されます。
      7. 結果の合成と表示:
        • セグメンテーションマスクを画像に変換し、元の動画フレームと合成します。
        • 合成された画像をフレームごとに処理し、最終的な動画として出力します。

      5. ワークフローの解説: 指定箇所のセグメンテーション

      グラフの全体像

      以下がグラフの全体図になります。

      画像

      以下に今回使用するグラフのフローチャートと詳細を示します。

      グラフの主要コンポーネント

      1. 動画の読み込み (VHS_LoadVideo ノード)
      2. SAM 2モデルのロード (DownloadAndLoadSAM2Model ノード)
      3. ユーザーによる点の指定 (PointsEditor ノード)
      4. SAM 2によるセグメンテーション (Sam2Segmentation ノード)
      5. 結果のアニメーションプレビュー (PreviewAnimation ノード)
      6. 座標情報の表示 (ShowText ノード)

      グラフの詳細な解説

      1. 動画の読み込み:
        • 「ballerina_davinci.mp4」という動画ファイルを読み込みます。
        • 16フレームを上限とし、3フレームごとに1フレームを選択して処理します。
      2. SAM 2モデルのロード:
        • 「sam2_hiera_base_plus.safetensors」モデルをCUDAデバイスでBF16精度でロードします。
      3. ユーザーによる点の指定:
        • 動画の最初のフレームを表示し、ユーザーがセグメンテーションしたいオブジェクト(この場合はダンサー)上に点を配置できるインターフェースを提供します。
        • この例では、ダンサーの上半身に2つの正の点が配置されています。
      4. SAM 2によるセグメンテーション:
        • ユーザーが指定した点の情報と動画フレームを入力として、SAM 2モデルでセグメンテーションを実行します。
        • 結果として、指定されたオブジェクト(ダンサー)の詳細なセグメンテーションマスクが生成されます。
      5. 結果のアニメーションプレビュー:
        • 元の動画フレームとSAM 2で生成されたセグメンテーションマスクを組み合わせて、アニメーションとして表示します。
        • これにより、ユーザーはセグメンテーション結果をリアルタイムで確認できます。
      6. 座標情報の表示:
        • ユーザーが指定した点の座標情報を表示します。

      6. ワークフローの実行

      オブジェクト自動検出による画像のセグメンテーション

      今回使用した画像は以下になります。

      画像

      これを「truck.jpg」という名前でLoad Imageの「choose file to upload」でComfyUI上にアップロードします。

      画像

      画像サイズに合わせて、Resize Imageのwidthとheightを変更します。

      画像

      検出するオブジェクトは、wheelのままにします。

      画像

      これでワークフローを実行してみます。メニューの「Queue Prompt」をクリックしてください。
      しばらくすると、検出結果が出力されます。まずは、Florance2によるオブジェクトの検出結果です。しっかり写真に写っているタイヤがすべて検出されています。

      画像

      次にSAM2によるセグメンテーションの結果です。Florance2で検出したタイヤがしっかりとマスクされています。

      画像

      オブジェクト自動検出による動画のセグメンテーション

      まず、検証に使用する動画素材を入手します。以下のリンクから動画をダウンロードします。今回選んだ動画は、女性が牧場ではしゃいでいる動画になります。

      https://www.pexels.com/ja-jp/video/4919748

      今回は実験的にSAM2を動かすので、426×226の小さいサイズをダウンロードします。

      画像

      ダウンロードした動画をComfyUIにアップロードします。Load Video (Upload)の「choose video to upload」から動画をアップロードします。
      Load Video (Upload)の初期設定では、frame_load_cap(*1)が16になっており、最初の16フレーム(*2)のみを読み込むようになっています。検証としては、それで問題ないですが、もし動画を全て読み込んで欲しい場合は、frame_load_capを0に設定してください。
      また、初期設定では、select_every_nthが5になっていますが、これは1に変更してください。select_every_nthは、何フレームごとに1フレームを選択するかを指定するウィジェットです。1を設定することで、フレームをスキップせずに、全てのフレームが対象になります。

      *1 読み込むフレーム数を指定するウィジェット。例えば、24fpsの動画で、frame_load_capに16を指定すると、16/24 ≒ 0.7秒となる。
      *2 動画を構成する個々の静止画であり、1秒間に表示されるフレーム数(fps: frames per second)によって動きの滑らかさが決まります。

      画像

      次に、Florence2Runのプロンプトを変更します。今回は、女性をセグメンテーションするため、「girl」を入力します。

      画像

      これで生成を実行(Queue Prompt)します。以下が最終的な実行結果です。最初に後ろの牛を誤検出しているように見えますが、それ以外は問題ないように見えます。

      画像

      指定箇所のセグメンテーション

      前項の「オブジェクト自動検出による動画のセグメンテーション」で使用した動画を今回も使用します。動画は以下からダウンロードしてください。

      https://www.pexels.com/ja-jp/video/4919748

      前項と同様に、Load Video (Upload)の「choose video to upload」から動画をアップロードします。

      画像

      次にセグメンテーションする箇所を指定します。オブジェクトの指定は、Points Editorで行います。ワークフローの初期状態では、Points Editorにバレエの女性の写真が表示されています。

      画像

      まずは、オブジェクト検出箇所を指定するために、この写真を現在の動画の1フレーム目の画像にする必要があります。それには2つの方法があります。1つは、動画の1フレーム目の画像を用意し、Points Editorに写真の箇所を右クリックして表示されるコンテキストメニューの「Load Image」で画像を差し替える方法です。2つ目は、ワークフローを実行すると、Points Editorに写真の箇所が自動でアップロードした動画の1フレーム目に切り替わる性質を利用して、一先ずワークフローを実行し、オブジェクト検出箇所指定に使う画像を差し替える方法です。後者の方が楽なので、一先ずワークフローを実行し、画像を差し替えます。

      画像

      一度ワークフローを実行すると、以下のように動画の1フレーム目の画像が表示されます。Points Editorにバグがあるようで、左上に赤丸が残った状態になってしまいます。こちらは利用せずに、画像上に緑色の丸が表示されている場合は、女性の上に緑色の丸を配置してください。緑色の丸が表示されていない場合は、女性をクリックすると、新たに緑色の丸を追加できます。

      画像

      これで生成を実行(Queue Prompt)します。以下が最終的な実行結果です。女性が綺麗にマスクされています。

      画像

      7. まとめ: ComfyUIとSAM 2でセグメンテーションがより身近な存在に

      本記事では、画像や動画のセグメンテーションにおいて革新的な進化を遂げた「Segment Anything Model 2 (SAM 2)」について解説し、ComfyUIを用いた具体的な使用方法を紹介しました。

      SAM 2は、従来のSAMと比較して、動画への対応リアルタイム処理高精度なセグメンテーションを実現しており、その応用範囲は多岐に渡ります。

      ComfyUIのワークフローを活用することで、オブジェクトの自動検出によるセグメンテーションや、指定箇所のセグメンテーションを容易に行うことができます。

      SAM 2はまだ発展途上の技術ですが、今後の進化によって、映像制作医療画像解析自動運転など、様々な分野で大きな影響を与える可能性を秘めていると言えるでしょう。

      この記事に「いいね!」と思ったら、いいねとフォロー、おすすめをお願いします!

      https://note.com/aicu/ X(Twitter)@AICUai

      この記事を読んで「ComfyUIをマスターしたい!」と思った方はこちらもおすすめです。

      ゼロから学ぶ「ComfyUI」マガジン

      https://note.com/aicu/m/md2f2e57c0f3c

      ✨️オトクなメンバーシップについての詳細はこちら

      ComfyUIの世界はまだまだ拡がっていきそうです!

      ✨️本記事は Yas@BizDev支援のエンジニア さんの寄稿をベースにAICU AIDX Labおよび編集部にて加筆・検証したものです。ご寄稿いただきありがとうございました。


      この記事の続きはこちらから https://note.com/aicu/n/n9426cd3355f6

      Originally published at https://note.com on Aug 17, 2024.

    1. Stability AI:動的多視点動画生成を実現する「Stable Video 4D」を発表

      2024年7月24日、Stability AI は同社の初の Video to Video生成モデルである動的多視点動画生成技術「Stable Video 4D」を提供開始しました。1本のビデオから8つの新しいアングルの動的で斬新な視点の動画を生成できます。

      この発表に合わせて、このモデル開発で達成された方法論、課題、ブレークスルーを詳述した包括的な技術レポートも公開されています。

      Stable Video 4D (英語ページ)

      日本語公式リリース

      https://ja.stability.ai/blog/stable-video-4d

      主なポイント:

      • Stable Video 4D は、1つの目的の動画から、8 つの異なる角度/視点からの斬新な複数視点動画に変換します。
      • Stable Video 4D は、1回の推論で、8視点にわたる 5フレームを約40秒で生成します。
      • ユーザーはカメラアングルを指定して、特定のクリエイティブニーズに合わせて出力を調整できます。
      • 現在研究段階にあるこのモデルは、ゲーム開発、動画編集、バーチャルリアリティにおける将来的な応用が期待されており、継続的な改善が進められています。Hugging Face で現在公開中です。

      仕組み

      ユーザーはまず、単一の動画をアップロードし、目的の3D カメラの姿勢を指定します。次に、Stable Video 4D は、指定されたカメラの視点に従って 8 つの斬新な視点動画を生成し、被写体の包括的で多角的な視点を提供します。生成された動画は、動画内の被写体の動的な 3D 表現を効率的に最適化するために使用できます。

      現在、Stable Video 4D は 8 つの視点にわたって 5 フレームの動画を約 40 秒で生成でき、4D最適化全体には約 20 ~ 25 分かかります。開発チームは、ゲーム開発、動画編集、バーチャルリアリティにおける将来的な応用を構想しており。これらの分野の専門家は、オブジェクトを複数の視点から視覚化する機能から大きな恩恵を受け、製品のリアリズムと没入感を高めることがが可能になります。

      最先端のパフォーマンス

      画像拡散モデル、動画拡散モデル、多視点拡散モデルの組み合わせからサンプリングする必要がある従来のアプローチとは異なり、SV4D は複数の斬新な視点動画を同時に生成できるため、空間軸と時間軸の一貫性が大幅に向上しています。この機能により、複数の視点とタイムスタンプにわたって一貫したオブジェクトの外観が保証されるだけでなく、複数の拡散モデルを使用した煩雑なスコア蒸留サンプリング (Score Distillation Sampling: SDS) を必要としない、より軽量な 4D 最適化フレームワークが可能になります。

      Stable Video 4D は、既存の事例と比較して、より詳細で、入力動画に忠実で、フレームと視点間で一貫性のある斬新な視点動画を生成できます。

      研究開発

      Stable Video 4D は Hugging Face で公開されており、Stability AI 初の動画から動画への生成モデルであり、エキサイティングなマイルストーンとなっています。現在トレーニングに使用されている合成データセットを超えて、より幅広い実際の動画を処理できるように、モデルの改良と最適化に積極的に取り組んでいます。

      テクニカルレポート

      この発表と併せて、このモデルの開発中に達成された方法論、課題、ブレークスルーを詳述した包括的な技術レポートが公開されています。

      https://sv4d.github.io/static/sv4d_technical_report.pdf

      リポジトリより(VRAM40GB以上必要)

      Hugging Face でのモデル配布は実施されていますが、そのまま試すことは難しい状態です。AICU AIDX LabではローカルおよびGoogle Colab Pro環境で実験してみました(結論はVRAMが40GB以上必要で、動作確認には至っていません)。ノートブックへのリンクは文末にて。

      Stability AI の GitHub では Generative Models というリポジトリでサンプルコードが提供されています。
      SV4D helper
      https://github.com/Stability-AI/generative-models/blob/main/scripts/demo/sv4d_helpers.py
      Sample code
      https://github.com/Stability-AI/generative-models/blob/main/scripts/sampling/simple_video_sample_4d.py

      事前準備

      まず Hugging Face で以下のモデルについてライセンス登録を行う必要があります。

      https://huggingface.co/stabilityai/sv4d

      https://huggingface.co/stabilityai/sv3d

      次にGPUメモリが40GB以上搭載された環境をご準備ください。
      Google Colab Pro+ でA100環境をご準備ください。

      Hugging Face Access Token キー を HF_TOKEN という名前で Google Colab左側の「シークレット」に設定します。

      画像

      sv4d.safetensors と sv3d_u.safetensors を ./checkpoints/ にダウンロードします。

      SV4Dは、5つのコンテキストフレーム(入力映像)と、同じサイズの8つの参照ビュー(SV3Dのようなマルチビュー拡散モデルを使用して、入力映像の最初のフレームから合成された)が与えられ、576×576の解像度で40フレーム(5ビデオフレームx8カメラビュー)を生成するように訓練されています。より長い新規のビュー動画(21フレーム)を生成するために、まず5つのアンカーフレームをサンプリングし、次に時間的な一貫性を保ちながら残りのフレームを高密度にサンプリングするという、SV4Dを用いた新しいサンプリング方法を提案します。

      例えば21フレームの単一の入力動画でSV4Dを実行するには:

      generative-models ディレクトリから
      以下のコマンドを実行します。

      python scripts/sampling/simple_video_sample_4d.py –input_path <path/to/video>

      起動時パラメータとしては以下のとおりです。

      • input_path: 入力動画は、
        • assets/test_video1.mp4のような gif または mp4 形式の単一のビデオファイル
        • .jpg、.jpeg、または.png形式の(連番)ビデオフレームの画像を含むフォルダ
        • ビデオフレームの画像に一致するファイル名パターン
          を指定できます。
      • num_steps: デフォルトは20です。より高い品質を得るには50に増やすことができますが、サンプリング時間が長くなります。
      • sv3d_version: 参照マルチビューを生成するために使用するSV3Dモデルを指定するには、SV3D_uの場合は –sv3d_version=sv3d_u、SV3D_pの場合は –sv3d_version=sv3d_p を設定します。
      • elevations_deg: SV3D_p(デフォルトはSV3D_u)を使用して、指定された仰角(デフォルトの仰角は10)でノベルビュー動画を生成するには、 python scripts/sampling/simple_video_sample_4d.py –input_path test_video1.mp4 –sv3d_version sv3d_p –elevations_deg 30.0 を実行します。
      • 背景削除: 無地の背景を持つ入力動画の場合、(オプションで) –remove_bg=True を設定することで、rembgを使用して背景を削除し、ビデオフレームをトリミングします。ノイズの多い背景を持つ現実世界の入力動画でより高品質の出力を得るには、SV4Dを実行する前に、Cliipdropを使用して前景オブジェクトをセグメント化してみてください。

      # このままだと A100 GPU (40GB)でも動作しない
      #!python scripts/sampling/simple_video_sample_4d.py –input_path assets/test_video1.mp4 –output_folder outputs/sv4d


      import os
      os.environ[‘PYTORCH_CUDA_ALLOC_CONF’] = ‘max_split_size_mb:512’
      #パラメータを小さくしてみましたが動かず
      !python scripts/sampling/simple_video_sample_4d.py \
          –input_path assets/test_video2.mp4 \
          –output_folder outputs/sv4d \
          –model_path checkpoints/sv4d.safetensors \
          –model_path_sv3d checkpoints/sv3d_u.safetensors \
          –batch_size 1 \
          –height 32 –width 32 \
          –num_steps 1

      # どなたか動作確認していただける方を募集します!

      Stable_Video_4D.ipynb https://j.aicu.ai/SVD4D

      Originally published at https://note.com on July 24, 2024.

    2. AI動画生成の大きな一歩 StabilityAIが「SVD Image-to-Video」を公開

      AI動画生成の大きな一歩 StabilityAIが「SVD Image-to-Video」を公開

      2023年11月21日、StabilityAI社は画像から動画を生成する技術「Stable Video Diffusion」(SVD)を公開しました。
      研究者の方はGitHubリポジトリで公開されたコードを試すことができます。ローカルでモデルを実行するために必要なウェイトは、HuggingFaceで公開されています(注意:40GBのVRAMが必要です)。
      さらにStable Video Diffusion (SVD) を使って画像から動画へウェブインタフェースも近日公開予定とのこと。キャンセル待ちリストが公開されています。

      stable-video-diffusion公式アナウンス

      https://stability.ai/news/stable-video-diffusion-open-ai-video-model

      日本語アナウンス

      https://ja.stability.ai/blog/stable-video-diffusion

      https://youtu.be/G7mihAy691g

      ウェイティングリスト

      https://stability.ai/contact

      研究論文

      「Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets」(21 Nov ,2023)
      安定した映像拡散: 潜在的映像拡散モデルの大規模データセットへの拡張

      高解像度で最先端のテキストから動画、画像から動画生成のための潜在動画拡散モデル、Stable Video Diffusionを紹介する。近年、2次元画像合成のために学習された潜在拡散モデルは、時間レイヤーを挿入し、小規模で高品質なビデオデータセット上で微調整することで、生成的なビデオモデルへと変化している。しかし、文献に記載されている学習方法は様々であり、ビデオデータをキュレーションするための統一的な戦略について、この分野はまだ合意されていない。本論文では、動画LDMの学習を成功させるための3つの異なる段階を特定し、テキストから画像への事前学習、動画の事前学習、高品質動画の微調整の評価を行った。

      Translated from the original paper

      Github: https://github.com/Stability-AI/generative-models

      HuggingFace

      https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt

      Stable Video Diffusion Image-to-Video モデルカードより

      Stable Video Diffusion (SVD) Image-to-Video は、静止画像を条件フレームとして取り込み、そこから動画を生成する拡散モデルです。

      モデル詳細

      (SVD)Image-to-Videoは、画像コンディショニングから短いビデオクリップを生成するようにトレーニングされた潜在拡散モデルです。このモデルは、 SVD Image-to-Video[14フレーム]から微調整された、同じサイズのコンテキスト・フレームが与えられたときに、解像度576×1024の25フレームを生成するように訓練されています。また、広く使われている f8-デコーダを時間的整合性のために微調整した。便宜上、標準的な フレーム単位のデコーダのモデル も提供されています。

      研究目的であれば、Generative-modelsのGithubリポジトリリポジトリ: https://github.com/Stability-AI/generative-models

      最も一般的な拡散フレームワーク(学習と推論の両方)が実装されています。
      論文: https://stability.ai/research/stable-video-diffusion-scaling-latent-video-diffusion-models-to-large-datasets

      評価

      https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt

      比較チャートは、GEN-2やPikaLabsに対するSVD-Image-to-Videoのユーザー嗜好を評価したものです。SVD-Image-to-Videoは、ビデオの品質という点で、人間に好まれています。ユーザー調査の詳細については、研究論文を参照してください。

      用途:直接利用

      このモデルは研究目的でのみ使用されます。想定される研究分野や課題は以下の通りです。

      ・生成モデルの研究
      ・有害なコンテンツを生成する可能性のあるモデルの安全な展開
      ・生成モデルの限界とバイアスの調査と理解
      ・芸術作品の生成と、デザインやその他の芸術的プロセスにおける使用
      ・教育的または創造的なツールへの応用

      除外される用途を以下に示します
      使用の範囲外
      このモデルは、人物や出来事の事実または真実の表現となるように訓練されていないため、そのようなコンテンツを生成するためにモデルを使用することは、このモデルの能力の範囲外です。またこのモデルをStability AI の 利用規定 に違反するような方法で使用しないでください。

      制限とバイアス

      制限事項
      生成される動画はかなり短く(4秒未満)、モデルは完全なフォトリアリズムを達成しません。
      ・モデルは動きのないビデオや、非常に遅いカメラパンを生成することがあります。
      ・モデルはテキストで制御することができません。
      ・モデルは読みやすいテキスト(legible text)をレンダリングできません。
      ・顔や人物全般が適切に生成されないことがあります。
      ・モデルの自動エンコード部分は非可逆です。

      推奨事項
      このモデルは研究目的のみを意図しています。

      モデルを使い始めるには
      https://github.com/Stability-AI/generative-models をチェックしてください。

      最新の進歩を取り入れたモデルのアップデートに意欲的に取り組み、皆さんのフィードバックを取り入れるよう努力していますが、現段階では、このモデルは実世界や商業的な応用を意図したものではないことを強調しておきます。安全性と品質に関する皆様の洞察とフィードバックは、最終的な商業リリースに向けてこのモデルを改良する上で極めて重要です。

      StabilityAI社のリリースメッセージより翻訳

      AICU media のコメント

      StableDiffusionを2022年8月に公開してから14カ月。ついにStabilityAIがAI動画生成の大きな一歩となる「SVD Image-to-Video」をオープンに公開しました。画像を入力すると動画が生成されるDiffusionモデルのようです。フレーム間の安定性も高いようです。論文も30ページの超大作なので今後のこの分野における革新の一歩になることは間違いありません。今後も注目していきます。

      Originally published at https://note.com on November 22, 2023.