Ashkan Ganj 1 · Hang Su 2 · Tian Guo 1
1 우스터 폴리테크닉 연구소 2 Nvidia Research
이제 새로운 기능과 최적화된 성능을 갖춘 향상된 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를 사용한 사전 훈련 후 5개 초점 스택을 사용하는 NYU Depth V2 데이터 세트가 있는 정제 계층에서만 사전 훈련됩니다.
model_name = 'HybridDepth_NYU_PretrainedDFV5' #change thismodel = torch.hub.load('cake-lab/HybridDepth', model_name , pretrained=True)model.eval()
저장소를 복제하고 종속 항목을 설치합니다.
자식 클론 https://github.com/cake-lab/HybridDepth.gitcd HybridDepth conda env create -f 환경.yml 콘다는 하이브리드 깊이를 활성화합니다
사전 훈련된 가중치 다운로드:
아래 링크에서 모델의 가중치를 다운로드하여 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 = '초점 스택 이미지 디렉터리' # 폴더에 있는 초점 스택 이미지의 경로# 초점 스택 이미지 로드 focus_stack, rgb_img, focus_dist = prepare_input_image(data_dir)# torch.no_grad()로 추론 실행: out = model (rgb_img, focus_stack, focus_dist)메트릭_깊이 = 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 # 데이터세트.py에 있는 데이터로더 모듈의 경로 init_args:nyuv2_data_root: "path/to/NYUv2" # 특정 데이터세트의 경로img_size: [480, 640] # DataModule 요구 사항에 따라 조정remove_white_border: Truenum_workers: 0 # 합성 데이터를 사용하는 경우 0으로 설정합니다use_labels: Truemodel: invert_length: True # 설정 모델이 반전된 깊이 ckpt_path를 출력하는 경우 True로 설정됩니다. 체크포인트/checkpoint.ckpt
test.sh
스크립트에서 구성 파일을 지정합니다.
python cli_run.py 테스트 --config configs/config_file_name.yaml
그런 다음 다음을 사용하여 평가를 실행합니다.
CD 스크립트 sh 평가.sh
이미지 합성에 필요한 CUDA 기반 패키지를 설치합니다.
파이썬 유틸리티/synthetic/gauss_psf/setup.py 설치
이미지 합성에 필요한 패키지를 설치합니다.
데이터 세트 경로, 배치 크기 및 기타 훈련 매개변수를 지정하여 configs
디렉터리에 구성 파일 config.yaml
설정합니다. 다음은 NYUv2 데이터세트를 사용한 학습을 위한 샘플 구성입니다.
모델: invert_length: 참 # 학습률 lr: 3e-4 # 필요에 따라 조정 # 체중 감소 wd: 0.001 # 필요에 따라 조정합니다data: class_path: dataloader.dataset.NYUDataModule # 데이터세트.py에 있는 데이터로더 모듈의 경로 init_args:nyuv2_data_root: "path/to/NYUv2" # 데이터 세트 pathimg_size: [480, 640] # NYUDataModuleremove_white_border에 맞게 조정: Truebatch_size: 24 # 사용 가능한 메모리에 따라 조정num_workers: 0 # 합성 데이터를 사용하는 경우 0으로 설정use_labels: Trueckpt_path: null
train.sh
스크립트에서 구성 파일을 지정합니다.
python cli_run.py train --config configs/config_file_name.yaml
훈련 명령을 실행합니다:
CD 스크립트 sh 기차.sh
우리의 연구가 귀하의 연구에 도움이 된다면 다음과 같이 인용해 주십시오.
@misc{ganj2024hybridlengthrobustmetriclength, title={HybridDepth: 초점 및 단일 이미지 우선 순위의 깊이를 활용하여 강력한 메트릭 깊이 융합}, 작성자={Ashkan Ganj 및 Hang Su 및 Tian Guo}, 연도={2024}, eprint={2407.18443} , archivePrefix={arXiv}, PrimaryClass={cs.CV}, url={https://arxiv.org/abs/2407.18443}, }