Ashkan Ganj 1 · Hang Su 2 · Tian Guo 1
1 Worcester Polytechnic Institute 2 Nvidia Research
Wir haben eine verbesserte Version von HybridDepth veröffentlicht, die jetzt mit neuen Funktionen und optimierter Leistung verfügbar ist!
Diese Arbeit präsentiert HybridDepth. HybridDepth ist eine praktische Lösung zur Tiefenschätzung, die auf von einer Kamera aufgenommenen Brennpunktbildern basiert. Dieser Ansatz übertrifft modernste Modelle in mehreren bekannten Datensätzen, darunter NYU V2, DDFF12 und ARKitScenes.
30.10.2024 : Version 2 von HybridDepth mit verbesserter Leistung und vortrainierten Gewichten veröffentlicht.
30.10.2024 : Integrierte Unterstützung für TorchHub für einfaches Laden und Inferenzieren von Modellen.
25.07.2024 : Erste Veröffentlichung vorab trainierter Modelle.
23.07.2024 : GitHub-Repository und HybridDepth-Modell sind live gegangen.
Mit dem Colab-Notebook können Sie schnell mit HybridDepth beginnen.
Sie können ein vorab trainiertes Modell direkt mit TorchHub auswählen.
Verfügbare vorab trainierte Modelle:
HybridDepth_NYU5
: Vorab trainiert auf dem NYU Depth V2-Datensatz unter Verwendung einer 5-Fokus-Stack-Eingabe, wobei sowohl der DFF-Zweig als auch die Verfeinerungsschicht trainiert wurden.
HybridDepth_NYU10
: Vorab trainiert auf dem NYU Depth V2-Datensatz unter Verwendung einer 10-Fokus-Stack-Eingabe, wobei sowohl der DFF-Zweig als auch die Verfeinerungsschicht trainiert wurden.
HybridDepth_DDFF5
: Vorab trainiert auf dem DDFF-Datensatz unter Verwendung einer 5-Fokus-Stack-Eingabe.
HybridDepth_NYU_PretrainedDFV5
: Vorab trainiert nur auf der Verfeinerungsebene mit dem NYU Depth V2-Datensatz unter Verwendung eines 5-Fokus-Stacks, nach Vorabtraining mit DFV.
model_name = 'HybridDepth_NYU_PretrainedDFV5' #change thismodel = Torch.hub.load('cake-lab/HybridDepth', model_name , pretrained=True)model.eval()
Klonen Sie das Repository und installieren Sie die Abhängigkeiten:
Git-Klon https://github.com/cake-lab/HybridDepth.gitcd HybridDepth conda env create -f ambient.yml Conda aktiviert Hybridtiefe
Laden Sie vorab trainierte Gewichte herunter:
Laden Sie die Gewichte für das Modell über die folgenden Links herunter und platzieren Sie sie im checkpoints
-Verzeichnis:
HybridDepth_NYU_FocalStack5
HybridDepth_NYU_FocalStack10
HybridDepth_DDFF_FocalStack5
HybridDepth_NYU_PretrainedDFV_FocalStack5
Vorhersage
Zur Schlussfolgerung können Sie den folgenden Code ausführen:
# Laden Sie das Modell checkpointmodel_path = 'checkpoints/NYUBest5.ckpt'model = DepthNetModule.load_from_checkpoint(model_path)model.eval()model = model.to('cuda')
Verwenden Sie nach dem Laden des Modells den folgenden Code, um die Eingabebilder zu verarbeiten und die Tiefenkarte abzurufen:
Hinweis : Derzeit unterstützt die Funktion prepare_input_image
nur .jpg
Bilder. Ändern Sie die Funktion, wenn Sie Unterstützung für andere Bildformate benötigen.
from utils.io import Prepare_input_imagedata_dir = 'Focal Stack Images Directory' # Pfad zu den Focal Stack-Bildern in einem Ordner# Laden Sie die Focal Stack-Bilderfocal_stack, rgb_img, focus_dist = Prepare_input_image(data_dir)# Run inferencewith Torch.no_grad(): out = model (rgb_img, focus_stack, focus_dist)metric_ Depth = out[0].squeeze().cpu().numpy() # Die metrische Tiefe
Bitte laden Sie zunächst die Gewichte für das Modell über die folgenden Links herunter und legen Sie sie im checkpoints
-Verzeichnis ab:
HybridDepth_NYU_FocalStack5
HybridDepth_NYU_FocalStack10
HybridDepth_DDFF_FocalStack5
HybridDepth_NYU_PretrainedDFV_FocalStack5
NYU Depth V2 : Laden Sie den Datensatz gemäß den hier bereitgestellten Anweisungen herunter.
DDFF12 : Laden Sie den Datensatz gemäß den hier bereitgestellten Anweisungen herunter.
ARKitScenes : Laden Sie den Datensatz gemäß den hier bereitgestellten Anweisungen herunter.
Richten Sie die Konfigurationsdatei config.yaml
im Verzeichnis configs
ein. Vorkonfigurierte Dateien für jeden Datensatz sind im Verzeichnis configs
verfügbar, wo Sie Pfade, Modelleinstellungen und andere Hyperparameter angeben können. Hier ist eine Beispielkonfiguration:
data: class_path: dataloader.dataset.NYUDataModule # Pfad zu Ihrem Dataloader-Modul in dataset.py init_args:nyuv2_data_root: "path/to/NYUv2" # Pfad zum spezifischen Datensatzimg_size: [480, 640] # Basierend auf Ihren DataModule-Anforderungen anpassenremove_white_border: Truenum_workers: 0 # Auf 0 setzen, wenn synthetische Daten verwendet werdenuse_labels: Truemodel: invert_third: True # Setzen auf „True“, wenn das Modell den invertierten Depthckpt_path ausgibt: checkpoints/checkpoint.ckpt
Geben Sie die Konfigurationsdatei im test.sh
-Skript an:
python cli_run.py test --config configs/config_file_name.yaml
Führen Sie dann die Auswertung durch mit:
CD-Skripte sh bewerten.sh
Installieren Sie das erforderliche CUDA-basierte Paket für die Bildsynthese:
Python utils/synthetic/gauss_psf/setup.py installieren
Dadurch wird das zum Synthetisieren von Bildern erforderliche Paket installiert.
Richten Sie die Konfigurationsdatei config.yaml
im Verzeichnis configs
ein und geben Sie dabei den Datensatzpfad, die Stapelgröße und andere Trainingsparameter an. Nachfolgend finden Sie eine Beispielkonfiguration für das Training mit dem NYUv2-Datensatz:
Modell: invert_ Depth: True # Lernrate lr: 3e-4 # Nach Bedarf anpassen # Gewichtsverlust wd: 0.001 # Nach Bedarf anpassendata: class_path: dataloader.dataset.NYUDataModule # Pfad zu Ihrem Dataloader-Modul in dataset.py init_args:nyuv2_data_root: "path/to/NYUv2" # Datensatz pathimg_size: [480, 640] # Anpassen für NYUDataModuleremove_white_border: Truebatch_size: 24 # Basierend auf verfügbarem Speicher anpassennum_workers: 0 # Auf 0 setzen, wenn synthetische Daten verwendet werden. use_labels: Trueckpt_path: null
Geben Sie die Konfigurationsdatei im train.sh
-Skript an:
python cli_run.py train --config configs/config_file_name.yaml
Führen Sie den Trainingsbefehl aus:
CD-Skripte sh trainieren.sh
Wenn unsere Arbeit Sie bei Ihrer Recherche unterstützt, zitieren Sie sie bitte wie folgt:
@misc{ganj2024hybrid Depthrobustmetric Depth, title={HybridDepth: Robust Metric Depth Fusion by Leveraging Depth from Focus and Single-Image Priors}, Autor={Ashkan Ganj und Hang Su und Tian Guo}, Jahr={2024}, eprint={2407.18443} , archivePrefix={arXiv}, PrimaryClass={cs.CV}, url={https://arxiv.org/abs/2407.18443}, }