Ashkan Ganj 1 · Hang Su 2 · Tian Guo 1
1 Institut Politeknik Worcester 2 Penelitian Nvidia
Kami merilis versi HybridDepth yang ditingkatkan, kini tersedia dengan fitur baru dan kinerja yang dioptimalkan!
Karya ini menghadirkan HybridDepth. HybridDepth adalah solusi estimasi kedalaman praktis berdasarkan gambar tumpukan fokus yang diambil dari kamera. Pendekatan ini mengungguli model canggih di beberapa kumpulan data terkenal, termasuk NYU V2, DDFF12, dan ARKitScenes.
30-10-2024 : Merilis HybridDepth versi 2 dengan peningkatan kinerja dan bobot yang telah dilatih sebelumnya.
30-10-2024 : Dukungan terintegrasi untuk TorchHub untuk memudahkan pemuatan dan inferensi model.
25-07-2024 : Rilis awal model terlatih.
23-07-2024 : Repositori GitHub dan model HybridDepth diluncurkan.
Mulai HybridDepth dengan cepat menggunakan notebook Colab.
Anda dapat memilih model terlatih secara langsung dengan TorchHub.
Model Terlatih yang Tersedia:
HybridDepth_NYU5
: Telah dilatih sebelumnya pada kumpulan data NYU Depth V2 menggunakan input tumpukan 5 fokus, dengan cabang DFF dan lapisan penyempurnaan dilatih.
HybridDepth_NYU10
: Telah dilatih sebelumnya pada kumpulan data NYU Depth V2 menggunakan input tumpukan 10 fokus, dengan cabang DFF dan lapisan penyempurnaan dilatih.
HybridDepth_DDFF5
: Telah dilatih sebelumnya pada kumpulan data DDFF menggunakan input tumpukan 5 fokus.
HybridDepth_NYU_PretrainedDFV5
: Dilatih sebelumnya hanya pada lapisan penyempurnaan dengan kumpulan data NYU Depth V2 menggunakan tumpukan 5 fokus, setelah prapelatihan dengan DFV.
model_name = 'HybridDepth_NYU_PretrainedDFV5' #ubah thismodel = torch.hub.load('cake-lab/HybridDepth', model_name , pretrained=True)model.eval()
Kloning repositori dan instal dependensinya:
git clone https://github.com/cake-lab/HybridDepth.gitcd HybridDepth conda env buat -f lingkungan.yml conda mengaktifkan kedalaman hybrid
Unduh Anak Timbangan Pra-Terlatih:
Unduh bobot model dari tautan di bawah dan letakkan di direktori checkpoints
:
HybridDepth_NYU_FocalStack5
HybridDepth_NYU_FocalStack10
HybridDepth_DDFF_FocalStack5
HybridDepth_NYU_PretrainedDFV_FocalStack5
Ramalan
Untuk inferensi, Anda dapat menjalankan kode berikut:
# Muat model checkpointmodel_path = 'checkpoints/NYUBest5.ckpt'model = DepthNetModule.load_from_checkpoint(model_path)model.eval()model = model.to('cuda')
Setelah memuat model, gunakan kode berikut untuk memproses gambar masukan dan mendapatkan peta kedalaman:
Catatan : Saat ini, fungsi prepare_input_image
hanya mendukung gambar .jpg
. Ubah fungsinya jika Anda memerlukan dukungan untuk format gambar lainnya.
from utils.io import Prepare_input_imagedata_dir = 'direktori gambar tumpukan fokus' # Jalur ke gambar tumpukan fokus dalam folder# Muat tumpukan fokus imagesfocal_stack, rgb_img, focus_dist = persiapan_input_image(data_dir)# Jalankan inferensi dengan torch.no_grad(): out = model (rgb_img, tumpukan_fokus, fokus_dist)kedalaman_metrik = out[0].squeeze().cpu().numpy() # Kedalaman metrik
Silakan Unduh terlebih dahulu bobot model dari tautan di bawah ini dan letakkan di direktori checkpoints
:
HybridDepth_NYU_FocalStack5
HybridDepth_NYU_FocalStack10
HybridDepth_DDFF_FocalStack5
HybridDepth_NYU_PretrainedDFV_FocalStack5
NYU Depth V2 : Unduh kumpulan data dengan mengikuti instruksi yang diberikan di sini.
DDFF12 : Unduh kumpulan data dengan mengikuti instruksi yang diberikan di sini.
ARKitScenes : Unduh kumpulan data dengan mengikuti instruksi yang diberikan di sini.
Siapkan file konfigurasi config.yaml
di direktori configs
. File yang telah dikonfigurasi sebelumnya untuk setiap kumpulan data tersedia di direktori configs
, tempat Anda dapat menentukan jalur, pengaturan model, dan hyperparameter lainnya. Berikut contoh konfigurasinya:
data: class_path: dataloader.dataset.NYUDataModule # Jalur ke modul dataloader Anda di dataset.py init_args:nyuv2_data_root: "path/to/NYUv2" # Jalur ke datasetimg_size tertentu: [480, 640] # Sesuaikan berdasarkan persyaratan DataModule Andaremove_white_border: Truenum_workers: 0 # Setel ke 0 jika menggunakan data sintetisuse_labels: Truemodel: invert_ depth: True # Set menjadi True jika model menghasilkan depthckpt_path terbalik: pos pemeriksaan/pos pemeriksaan.ckpt
Tentukan file konfigurasi dalam skrip test.sh
:
tes python cli_run.py --config configs/config_file_name.yaml
Kemudian, jalankan evaluasi dengan:
skrip CD sh mengevaluasi.sh
Instal paket berbasis CUDA yang diperlukan untuk sintesis gambar:
python utils/synthetic/gauss_psf/setup.py instal
Ini menginstal paket yang diperlukan untuk mensintesis gambar.
Siapkan file konfigurasi config.yaml
di direktori configs
, tentukan jalur himpunan data, ukuran batch, dan parameter pelatihan lainnya. Di bawah ini adalah contoh konfigurasi untuk pelatihan dengan dataset NYUv2:
model: invert_kedalaman: Benar # kecepatan pembelajaran lr: 3e-4 # Sesuaikan seperlunya # penurunan berat badan wd: 0.001 # Sesuaikan sesuai kebutuhandata: class_path: dataloader.dataset.NYUDataModule # Path ke modul dataloader Anda di dataset.py init_args:nyuv2_data_root: "path/to/NYUv2" # Kumpulan data pathimg_size: [480, 640] # Sesuaikan untuk NYUDataModuleremove_white_border: Truebatch_size: 24 # Sesuaikan berdasarkan memorynum_workers yang tersedia: 0 # Setel ke 0 jika menggunakan datause_labels sintetis: Trueckpt_path: null
Tentukan file konfigurasi di skrip train.sh
:
python cli_run.py kereta --config configs/config_file_name.yaml
Jalankan perintah pelatihan:
skrip CD sh kereta.sh
Jika pekerjaan kami membantu Anda dalam penelitian Anda, mohon kutip sebagai berikut:
@misc{ganj2024hybrid depthrobustmetric depth, title={HybridDepth: Penggabungan Kedalaman Metrik yang Kuat dengan Memanfaatkan Kedalaman dari Fokus dan Prioritas Gambar Tunggal}, author={Ashkan Ganj dan Hang Su dan Tian Guo}, year={2024}, eprint={2407.18443} , archivePrefix={arXiv}, kelas utama={cs.CV}, url={https://arxiv.org/abs/2407.18443}, }