阿什坎甘吉1 ·蘇航2 ·田果1
1伍斯特理工學院2 Nvidia 研究中心
我們發布了 HybridDepth 的改進版本,現已提供新功能和優化的性能!
這項工作提出了 HybridDepth。 HybridDepth 是一種實用的深度估計解決方案,基於從相機擷取的焦點堆疊影像。這種方法在多個知名資料集(包括 NYU V2、DDFF12 和 ARKitScenes)上的表現優於最先進的模型。
2024 年 10 月 30 日:發布了 HybridDepth 的第 2 版,具有改進的性能和預訓練權重。
2024-10-30 :對 TorchHub 的整合支持,以方便模型載入和推理。
2024-07-25 :預訓練模型的首次發布。
2024-07-23 :GitHub 儲存庫和 HybridDepth 模型上線。
使用 Colab 筆記本快速開始使用 HybridDepth。
您可以直接使用 TorchHub 選擇預訓練模型。
可用的預訓練模型:
HybridDepth_NYU5
:使用 5 焦點堆疊輸入在 NYU Depth V2 資料集上進行預訓練,並訓練 DFF 分支和細化層。
HybridDepth_NYU10
:使用 10 焦點堆疊輸入在 NYU Depth V2 資料集上進行預訓練,並訓練 DFF 分支和細化層。
HybridDepth_DDFF5
:使用 5 焦點堆疊輸入在 DDFF 資料集上進行預訓練。
HybridDepth_NYU_PretrainedDFV5
:在使用 DFV 進行預訓練之後,僅使用 NYU Depth V2 資料集使用 5 焦點堆疊在細化層上進行預訓練。
model_name = 'HybridDepth_NYU_PretrainedDFV5' #change thismodel = torch.hub.load('cake-lab/HybridDepth', model_name , pretrained=True)model.eval()
克隆存儲庫並安裝依賴項:
git 克隆 https://github.com/cake-lab/HybridDepth.gitcd HybridDepth conda env create -f 環境.yml conda 激活混合深度
下載預訓練的權重:
從下面的鏈接下載模型的權重並將其放置在checkpoints
目錄中:
HybridDepth_NYU_FocalStack5
HybridDepth_NYU_FocalStack10
HybridDepth_DDFF_FocalStack5
HybridDepth_NYU_PretrainedDFV_FocalStack5
預言
為了進行推理,您可以運行以下程式碼:
# 載入模型 checkpointmodel_path = 'checkpoints/NYUBest5.ckpt'model = DepthNetModule.load_from_checkpoint(model_path)model.eval()model = model.to('cuda')
載入模型後,使用以下程式碼處理輸入影像並取得深度圖:
注意:目前, prepare_input_image
函數僅支援.jpg
圖片。如果需要支援其他圖像格式,請修改函數。
from utils.io import prepare_input_imagedata_dir = 'focal stack images directory' # 資料夾中焦點堆疊影像的路徑# 載入焦點堆疊影像focal_stack, rgb_img, focus_dist = prepare_input_image(data_dir) 使用 deltord. (rgb_img, focus_stack, focus_dist)metric_depth = out[0].squeeze().cpu().numpy() # 度量深度
請先從下面的連結下載模型的權重並將其放置在checkpoints
目錄中:
HybridDepth_NYU_FocalStack5
HybridDepth_NYU_FocalStack10
HybridDepth_DDFF_FocalStack5
HybridDepth_NYU_PretrainedDFV_FocalStack5
NYU Depth V2 :請按照此處提供的說明下載資料集。
DDFF12 :請按照此處提供的說明下載資料集。
ARKitScenes :請按照此處提供的說明下載資料集。
在configs
目錄中設定設定檔config.yaml
。 configs
目錄中提供了每個資料集的預先配置文件,您可以在其中指定路徑、模型設定和其他超參數。這是一個設定範例:
data: class_path: dataloader.dataset.NYUDataModule # dataset.py 中資料載入器模組的路徑 init_args:nyuv2_data_root: "path/to/NYUv2" # 特定資料集的路徑img_size: [480, 640] # 根據您的DataModule要求進行調整remove_white_border: Truenum_workers: 0 # 如果使用合成資料則設定為008:de True. : True # 設定如果模型輸出反向深度ckpt_path,則為 True:checkpoints/checkpoint.ckpt
在test.sh
腳本中指定設定檔:
python cli_run.py test --config configs/config_file_name.yaml
然後,執行評估:
光碟腳本 sh 評估.sh
安裝影像合成所需的基於 CUDA 的套件:
python utils/synthetic/gauss_psf/setup.py 安裝
這將安裝合成映像所需的套件。
在configs
目錄中設定設定檔config.yaml
,指定資料集路徑、批次大小和其他訓練參數。以下是使用 NYUv2 資料集進行訓練的範例配置:
模型:invert_深度:True # 學習率 lr: 3e-4 # 依需求調整 # 權重衰減 wd: 0.001 # 依需求調整 data: class_path: dataloader.dataset.NYUDataModule # dataset.py 中資料載入器模組的路徑 init_args:nyuv2_data_root: "path/to/NYUv2" # 資料集 pathimg_size: [480, 640] # 調整 NYUDataModuleremove_white_border: Truebatch_size: 24 # 依照可用記憶體進行調整為編號
在train.sh
腳本中指定設定檔:
python cli_run.py train --config configs/config_file_name.yaml
執行訓練命令:
光碟腳本 sh 火車.sh
如果我們的工作對您的研究有幫助,請按如下方式引用:
@misc{ganj2024hybriddepthrobustmetricdepth,title={HybridDepth:透過利用焦點深度和單一影像先驗進行穩健度量深度融合},作者={Ashkan Ganj、Hang Su和TianGuo},year={2024},eprint={2407.184443 ,archivePrefix = {arXiv},primaryClass = {cs.CV},url = {https://arxiv.org/abs/2407.18443}, }