AI Personal Learning
und praktische Anleitung
Sitzsack Marscode1

SegAnyMo: ein Open-Source-Tool zur automatischen Segmentierung beliebiger bewegter Objekte aus Videos

Allgemeine Einführung

SegAnyMo ist ein Open-Source-Projekt, das von einem Team von Forschern der UC Berkeley und der Universität Peking entwickelt wurde, zu denen auch Nan Huang gehört. Das Tool konzentriert sich auf die Videoverarbeitung und kann automatisch beliebige bewegte Objekte in einem Video identifizieren und segmentieren, z. B. Menschen, Tiere oder Fahrzeuge. Es kombiniert Technologien wie TAPNet, DINOv2 und SAM2 und plant, die Ergebnisse auf der CVPR 2025 zu präsentieren. Der Projektcode ist vollständig öffentlich und kann von den Nutzern kostenlos heruntergeladen, verwendet oder verändert werden. Er eignet sich für Entwickler, Forscher und Enthusiasten der Videoverarbeitung.

SegAnyMo: ein Open-Source-Tool zur automatischen Segmentierung beliebiger bewegter Objekte aus Video-1


 

Funktionsliste

  • Erkennt automatisch sich bewegende Objekte im Video und erzeugt genaue Segmentierungsmasken.
  • Unterstützung für Videoformate (z. B. MP4, AVI) oder Bildsequenzen.
  • Bietet vorgefertigte Modelle zur Unterstützung einer schnellen Bereitstellung und Prüfung.
  • Die Integration mit TAPNet erzeugt 2D-Tracking-Spuren zur Erfassung von Bewegungsinformationen.
  • Verwendung von DINOv2 zur Extraktion semantischer Merkmale zur Verbesserung der Segmentierungsgenauigkeit.
  • Segmentierung auf Pixelebene unter Verwendung der SAM2-Verfeinerungsmaske.
  • Unterstützung von kundenspezifischem Dataset-Training zur Anpassung an verschiedene Szenarien.
  • Gibt visualisierte Ergebnisse zur einfachen Überprüfung und Anpassung aus.

 

Hilfe verwenden

SegAnyMo erfordert ein gewisses technisches Fundament und richtet sich vor allem an Nutzer mit Programmiererfahrung. Im Folgenden finden Sie eine ausführliche Anleitung zur Installation und Nutzung.

Einbauverfahren

  1. Vorbereiten von Hardware und Software
    Das Projekt wird auf Ubuntu 22.04 entwickelt, und eine NVIDIA RTX A6000 oder eine ähnliche CUDA-fähige Grafikkarte wird empfohlen. Erfordert die Vorinstallation von Git und Anaconda.

    • Klonen Sie das Code-Repository:
      git clone --recurse-submodules https://github.com/nnanhuang/SegAnyMo
      
    • Rufen Sie den Projektkatalog auf:
      cd SegAnyMo
      
  2. Erstellen einer virtuellen Umgebung
    Erstellen Sie eine separate Python-Umgebung mit Anaconda, um Abhängigkeitskonflikte zu vermeiden.

    • Eine Umgebung schaffen:
      conda create -n seg python=3.12.4
      
    • Aktivieren Sie die Umwelt:
      conda activate seg
      
  3. Installation von Kernabhängigkeiten
    Installieren Sie PyTorch und andere notwendige Bibliotheken.

    • Installieren Sie PyTorch (unterstützt 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
      
    • Installieren Sie andere Abhängigkeiten:
      pip install -r requirements.txt
      
    • Installieren Sie xformers (beschleunigtes Rechnen):
      pip install -U xformers --index-url https://download.pytorch.org/whl/cu121
      
  4. Installation von DINOv2
    DINOv2 wird für die Merkmalsextraktion verwendet.

    • Gehen Sie zum Vorverarbeitungskatalog und klonen Sie:
      cd preproc && git clone https://github.com/facebookresearch/dinov2
      
  5. Installation von SAM2
    SAM2 ist der Kern der Maskenveredelung.

    • Rufen Sie den SAM2-Katalog auf:
      cd sam2
      
    • Einbau:
      pip install -e .
      
    • Laden Sie das vortrainierte Modell herunter:
      cd checkpoints && ./download_ckpts.sh && cd ../..
      
  6. Installation von TAPNet
    TAPNet wird verwendet, um 2D-Tracking-Spuren zu erzeugen.

    • Rufen Sie den TAPNet-Katalog auf:
      cd preproc/tapnet
      
    • Einbau:
      pip install .
      
    • Laden Sie das Modell herunter:
      cd ../checkpoints && wget https://storage.googleapis.com/dm-tapnet/bootstap/bootstapir_checkpoint_v2.pt
      
  7. Überprüfen der Installation
    Prüfen Sie, ob die Umgebung normal ist:
python -c "import torch; print(torch.cuda.is_available())"

Ausfuhren True Zeigt den Erfolg an.

Verwendung

Vorbereitung der Daten

SegAnyMo unterstützt die Eingabe von Video- oder Bildsequenzen. Die Daten müssen in der folgenden Struktur organisiert werden:

data
├── images
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
├── bootstapir
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
├── dinos
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
├── depth_anything_v2
│   ├── scene_name
│   │   ├── image_name
│   │   ├── ...
  • Wenn es sich bei der Eingabe um ein Video handelt, verwenden Sie ein Tool (z. B. FFmpeg), um die Bilder in den images Mappe.
  • Handelt es sich um eine Bildsequenz, legen Sie sie direkt in das entsprechende Verzeichnis ab.

Operative Vorverarbeitung

  1. Erzeugen von Tiefenkarten, Features und Trajektorien
    Verwenden Sie die folgenden Befehle, um die Daten zu verarbeiten (etwa 10 Minuten, je nach Datenmenge):

    • Für Bildsequenzen:
      python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --depths --tracks --dinos --e
      
    • Für das Video:
      python core/utils/run_inference.py --video_path $VIDEO_PATH --gpus 0 --depths --tracks --dinos --e
      

    Parameter Beschreibung:

    • --e Aktivieren Sie den Effizienzmodus, um die Bildrate und Auflösung zu verringern und die Verarbeitung zu beschleunigen.
    • --step 10 Gibt an, dass 1 Bild von 10 Bildern als Abfragebild verwendet wird, was nach unten korrigiert werden kann, um die Genauigkeit zu verbessern.

Vorhersage von Bewegungsabläufen

  1. Download Modellgewichte
    durch (eine Lücke) Gesicht umarmen vielleicht Google Drive Laden Sie das vortrainierte Modell herunter. Schreiben Sie den Pfad zum configs/example_train.yaml (in Form eines Nominalausdrucks) resume_path Felder.

    • Vorhersage der Lauftrajektorie:
      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
      

    Die Ausgabe wird in der Datei $OUTPUT_DIR.

Segmentierungsmaske generieren

  1. Verwendung der SAM2-Verfeinerungsmaske
    • Maskengenerierung ausführen:
      python core/utils/run_inference.py --data_dir $DATA_DIR --sam2dir $RESULT_DIR --motin_seg_dir $OUTPUT_DIR --gpus 0 --sam2 --e
      

    Parameter Beschreibung:

    • $DATA_DIR ist der ursprüngliche Bildpfad.
    • $RESULT_DIR ist der Pfad zum Speichern der Maske.
    • $OUTPUT_DIR ist der Ergebnispfad der Flugbahnvorhersage.
      Hinweis: SAM2 unterstützt standardmäßig .jpg vielleicht .jpeg Format, muss der Dateiname eine einfache Zahl sein. Wenn er nicht übereinstimmt, können Sie den Code ändern oder die Datei umbenennen.

Bewertungsergebnisse

  1. Vorberechnete Ergebnisse herunterladen
    übertragende Einheit Google Drive Laden Sie die offizielle Maske zum Vergleich herunter.

    • Auswertung des DAVIS-Datensatzes:
      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
      
    • Verfeinerte Bewertung:
      cd core/eval/davis2017-evaluation && CUDA_VISIBLE_DEVICES=0 python evaluation_method.py --task unsupervised --results_path $MASK_PATH
      

Maßgeschneiderte Ausbildung

  1. Vorverarbeitung der Daten
    Der HOI4D-Datensatz wird als Beispiel verwendet:
python core/utils/process_HOI.py
python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --tracks --depths --dinos

Für benutzerdefinierte Datensätze sind RGB-Bilder und dynamische Masken erforderlich.

  • Prüfen Sie die Datenintegrität:
    python current-data-dir/dynamic_stereo/dynamic_replica_data/check_process.py
    
  • Das Bereinigen von Daten spart Platz:
    python core/utils/run_inference.py --data_dir $DATA_DIR --gpus 0 --clean
    
  1. Modellschulung
    Änderungen configs/$CONFIG.yaml Konfiguration, trainiert mit Datensätzen wie Kubric, HOI4D, etc:
CUDA_VISIBLE_DEVICES=0 python train_seq.py ./configs/$CONFIG.yaml

 

Anwendungsszenario

  1. Nachbearbeitung von Videos
    Trennen Sie sich bewegende Objekte (z. B. rennende Menschen) aus dem Video, erzeugen Sie Masken und verwenden Sie diese dann für das Compositing von Effekten.
  2. Forschung im Bereich der Verhaltensanalyse
    Verfolgung der Bewegungsabläufe von Tieren oder Menschen und Analyse von Verhaltensmustern.
  3. Entwicklung des autonomen Fahrens
    Segmentierung von sich bewegenden Objekten (z. B. Fahrzeugen, Fußgängern) in Fahrvideos zur Optimierung des Wahrnehmungssystems.
  4. Optimierung des Überwachungssystems
    Extrahieren abnormaler Bewegungen aus Überwachungsvideos zur Verbesserung der Sicherheitseffizienz.

 

QA

  1. Brauchen Sie eine GPU?
    Ja, es wird empfohlen, dass NVIDIA-Karten CUDA unterstützen, da sie sonst ineffizient arbeiten.
  2. Unterstützt es die Echtzeitverarbeitung?
    Die aktuelle Version ist für die Offline-Verarbeitung geeignet, Echtzeitanwendungen müssen selbst optimiert werden.
  3. Wie viel Platz brauchen Sie für die Ausbildung?
    Je nach Datensatz ist ein kleiner Datensatz einige Gigabyte groß und ein großer Datensatz kann Hunderte von Gigabyte groß sein.
  4. Wie lässt sich die Segmentierungsgenauigkeit verbessern?
    vermindern --step Werte, oder trainieren Sie das Modell mit mehr beschrifteten Daten.
Darf nicht ohne Genehmigung vervielfältigt werden:Leiter des AI-Austauschkreises " SegAnyMo: ein Open-Source-Tool zur automatischen Segmentierung beliebiger bewegter Objekte aus Videos
de_DEDeutsch