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.
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
- 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
- Klonen Sie das Code-Repository:
- 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
- Eine Umgebung schaffen:
- 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
- Installieren Sie PyTorch (unterstützt CUDA 12.1):
- 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
- Gehen Sie zum Vorverarbeitungskatalog und klonen Sie:
- 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 ../..
- Rufen Sie den SAM2-Katalog auf:
- 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
- Rufen Sie den TAPNet-Katalog auf:
- Ü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
- 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.
- Für Bildsequenzen:
Vorhersage von Bewegungsabläufen
- Download Modellgewichte
durch (eine Lücke) Gesicht umarmen vielleicht Google Drive Laden Sie das vortrainierte Modell herunter. Schreiben Sie den Pfad zumconfigs/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
. - Vorhersage der Lauftrajektorie:
Segmentierungsmaske generieren
- 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.
- Maskengenerierung ausführen:
Bewertungsergebnisse
- 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
- Auswertung des DAVIS-Datensatzes:
Maßgeschneiderte Ausbildung
- 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
- Modellschulung
Änderungenconfigs/$CONFIG.yaml
Konfiguration, trainiert mit Datensätzen wie Kubric, HOI4D, etc:
CUDA_VISIBLE_DEVICES=0 python train_seq.py ./configs/$CONFIG.yaml
Anwendungsszenario
- 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. - Forschung im Bereich der Verhaltensanalyse
Verfolgung der Bewegungsabläufe von Tieren oder Menschen und Analyse von Verhaltensmustern. - Entwicklung des autonomen Fahrens
Segmentierung von sich bewegenden Objekten (z. B. Fahrzeugen, Fußgängern) in Fahrvideos zur Optimierung des Wahrnehmungssystems. - Optimierung des Überwachungssystems
Extrahieren abnormaler Bewegungen aus Überwachungsvideos zur Verbesserung der Sicherheitseffizienz.
QA
- Brauchen Sie eine GPU?
Ja, es wird empfohlen, dass NVIDIA-Karten CUDA unterstützen, da sie sonst ineffizient arbeiten. - Unterstützt es die Echtzeitverarbeitung?
Die aktuelle Version ist für die Offline-Verarbeitung geeignet, Echtzeitanwendungen müssen selbst optimiert werden. - 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. - Wie lässt sich die Segmentierungsgenauigkeit verbessern?
vermindern--step
Werte, oder trainieren Sie das Modell mit mehr beschrifteten Daten.