AIパーソナル・ラーニング
と実践的なガイダンス
サイバーナイフ用ドローイングミラー

SegAnyMo: ビデオから任意の移動物体を自動的にセグメント化するオープンソースツール

はじめに

SegAnyMoは、UCバークレーと北京大学の研究者チームによって開発されたオープンソースプロジェクトで、Nan Huangなどのメンバーが参加している。このツールはビデオ処理に重点を置いており、ビデオ内の任意の移動体(人、動物、乗り物など)を自動的に識別し、セグメント化することができる。TAPNet、DINOv2、SAM2などの技術を組み合わせており、CVPR 2025で成果を発表する予定である。SegAnyMoの目標は、動く映像の解析を簡素化し、効率的なセグメンテーションソリューションを提供することである。

SegAnyMo: ビデオから任意の動く物体を自動的にセグメンテーションするオープンソースツール-1


 

機能一覧

  • ビデオ内の動くオブジェクトを自動的に検出し、正確なセグメンテーションマスクを生成します。
  • ビデオフォーマット(MP4、AVIなど)または画像シーケンス入力をサポート。
  • 訓練済みモデルを提供し、迅速な展開とテストをサポートします。
  • TAPNetとの統合は、2Dトラッキングトレースを生成し、モーション情報をキャプチャします。
  • DINOv2を使って意味的特徴を抽出し、セグメンテーションの精度を向上させる。
  • SAM2微細化マスクを使用したピクセルレベルのセグメンテーション。
  • さまざまなシナリオに適応できるよう、カスタマイズされたデータセットのトレーニングをサポート。
  • 結果を視覚化して出力するため、チェックや調整が容易。

 

ヘルプの使用

SegAnyMoは一定の技術的基礎を必要とし、主にプログラミング経験のあるユーザーを対象としています。以下は詳細なインストールと使用ガイドです。

設置プロセス

  1. ハードウェアとソフトウェアの準備
    このプロジェクトはUbuntu 22.04で開発されており、NVIDIA RTX A6000または同様のCUDA対応グラフィックカードを推奨する。GitとAnacondaのプリインストールが必要です。

    • コードリポジトリをクローンする:
      git clone --recurse-submodules https://github.com/nnanhuang/SegAnyMo
      
    • プロジェクト・カタログにアクセスする:
      cd SegAnyMo
      
  2. 仮想環境の構築
    依存関係の衝突を避けるために、Anaconda で別の Python 環境を作成する。

    • 環境を整える:
      conda create -n seg python=3.12.4
      
    • 環境を活性化させる:
      conda activate seg
      
  3. コアの依存関係をインストールする
    PyTorchとその他の必要なライブラリをインストールする。

    • PyTorchをインストールする(CUDA 12.1をサポート):
      conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=12.1 -c pytorch -c nvidia
      
    • 他の依存関係をインストールします:
      pip install -r requirements.txt
      
    • xformers(加速推論)をインストールする:
      pip install -U xformers --index-url https://download.pytorch.org/whl/cu121
      
  4. DINOv2のインストール
    特徴抽出にはDINOv2を使用。

    • 前処理カタログにアクセスし、クローンを作成する:
      cd preproc && git clone https://github.com/facebookresearch/dinov2
      
  5. SAM2のインストール
    SAM2はマスク精製コアである。

    • SAM2カタログへ
      cd sam2
      
    • インストール:
      pip install -e .
      
    • 訓練済みモデルをダウンロードする:
      cd checkpoints && ./download_ckpts.sh && cd ../..
      
  6. TAPNetのインストール
    TAPNetは2Dトラッキングトレースの生成に使用される。

    • TAPNetカタログへ
      cd preproc/tapnet
      
    • インストール:
      pip install .
      
    • モデルをダウンロードする:
      cd ../checkpoints && wget https://storage.googleapis.com/dm-tapnet/bootstap/bootstapir_checkpoint_v2.pt
      
  7. インストールの確認
    環境が正常であることを確認する:
python -c "import torch; print(torch.cuda.is_available())"

輸出 True 成功を示す。

使用方法

データ準備

SegAnyMoはビデオまたは画像シーケンスの入力をサポートします。データは次のような構造で整理する必要がある:

data
├── images
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
├── bootstapir
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
├── dinos
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
├── depth_anything_v2
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
  • 入力がビデオの場合は、ツール(FFmpegなど)を使ってフレームを抽出し、それを images フォルダー
  • 画像シーケンスの場合は、対応するディレクトリに直接入れてください。

オペレーションの前処理

  1. 深度マップ、フィーチャー、軌跡の生成
    以下のコマンドを使用してデータを処理する(データ量にもよるが、約10分):

    • 画像シーケンスの場合:
      python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --depths --tracks --dinos --e
      
    • ビデオは?
      python core/utils/run_inference.py --video_path $VIDEO_PATH --gpus 0 --depths --tracks --dinos --e
      

    パラメータの説明

    • --e Efficient Modeを有効にすると、フレームレートと解像度が下がり、処理が速くなります。
    • --step 10 10フレーム中1フレームがクエリフレームとして使用されることを示す。

運動軌道の予測

  1. モデルウェイトのダウンロード
    をとおして ハグする顔 もしかしたら グーグルドライブ 訓練済みモデルをダウンロードする。そのパスを configs/example_train.yaml な resume_path フィールド

    • 走行軌跡の予測:
      python core/utils/run_inference.py --data_dir $DATA_DIR --motin_seg_dir $OUTPUT_DIR --config_file configs/example_train.yaml --gpus 0 --motion_seg_infer --e
      

    出力は $OUTPUT_DIR.

セグメンテーション・マスクの生成

  1. SAM2リファインメントマスクの使用
    • マスク生成を実行する:
      python core/utils/run_inference.py --data_dir $DATA_DIR --sam2dir $RESULT_DIR --motin_seg_dir $OUTPUT_DIR --gpus 0 --sam2 --e
      

    パラメータの説明

    • $DATA_DIR は元画像のパスである。
    • $RESULT_DIR はマスクの保存パスである。
    • $OUTPUT_DIR は軌跡予測結果のパスである。
      注:SAM2はデフォルトで .jpg もしかしたら .jpeg フォーマットの場合、ファイル名はプレーンな数字である必要がある。一致しない場合は、コードを変更するか、ファイル名を変更してください。

評価結果

  1. 事前計算結果のダウンロード
    譲渡団体 グーグルドライブ 比較のために公式マスクをダウンロードする。

    • DAVISデータセットの評価:
      CUDA_VISIBLE_DEVICES=0 python core/eval/eval_mask.py --res_dir $RES_DIR --eval_dir $GT_DIR --eval_seq_list core/utils/moving_val_sequences.txt
      
    • 洗練された評価:
      cd core/eval/davis2017-evaluation && CUDA_VISIBLE_DEVICES=0 python evaluation_method.py --task unsupervised --results_path $MASK_PATH
      

カスタマイズ・トレーニング

  1. データ前処理
    例としてHOI4Dデータセットを使用:
python core/utils/process_HOI.py
python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --tracks --depths --dinos

カスタムデータセットにはRGB画像とダイナミックマスクが必要です。

  • データの整合性をチェックする:
    python current-data-dir/dynamic_stereo/dynamic_replica_data/check_process.py
    
  • データをクリーンアップすることで、スペースを節約できる:
    python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --clean
    
  1. モデルトレーニング
    修正 configs/$CONFIG.yaml Kubric、HOI4Dなどのデータセットで訓練されたコンフィギュレーション:
CUDA_VISIBLE_DEVICES=0 python train_seq.py ./configs/$CONFIG.yaml

 

アプリケーションシナリオ

  1. ビデオ・ポストプロダクション
    映像から動くオブジェクト(走っている人など)を分離してマスクを生成し、エフェクト合成に使用する。
  2. 行動分析学研究
    動物や人間の移動軌跡を追跡し、行動パターンを分析する。
  3. 自律走行開発
    運転映像中の移動物体(車両、歩行者など)をセグメンテーションし、知覚システムを最適化する。
  4. 監視システムの最適化
    監視カメラの映像から異常な動きを抽出し、セキュリティ効率を向上させる。

 

品質保証

  1. GPUが必要ですか?
    そうです。NVIDIAのカードはCUDAをサポートしていることが推奨されています。
  2. リアルタイム処理に対応しているか?
    現在のバージョンはオフライン処理に適しており、リアルタイムアプリケーションは独自に最適化する必要がある。
  3. トレーニングに必要なスペースは?
    データセットにもよるが、小さなデータセットは数ギガバイト、大きなデータセットは数百ギガバイトになる。
  4. セグメンテーションの精度を上げるには?
    減らす --step 値でモデルを訓練するか、より多くのラベル付きデータでモデルを訓練する。
無断転載を禁じます:チーフAIシェアリングサークル " SegAnyMo: ビデオから任意の移動物体を自動的にセグメント化するオープンソースツール
ja日本語