Ashkan Ganj 1 · Hang Su 2 · Tian Guo 1
1 สถาบันโพลีเทคนิควูสเตอร์ 2 การวิจัยของ Nvidia
เราได้เปิดตัว HybridDepth เวอร์ชันปรับปรุง ซึ่งขณะนี้มาพร้อมกับฟีเจอร์ใหม่และประสิทธิภาพที่ได้รับการปรับปรุงแล้ว!
งานนี้นำเสนอ HybridDepth HybridDepth เป็นโซลูชันการประมาณความลึกที่ใช้งานได้จริงโดยอิงตามภาพสแต็กโฟกัสที่ถ่ายจากกล้อง วิธีการนี้มีประสิทธิภาพเหนือกว่าโมเดลล้ำสมัยในชุดข้อมูลที่มีชื่อเสียงหลายชุด รวมถึง NYU V2, DDFF12 และ ARKitScenes
30-10-2024 : เปิดตัว HybridDepth เวอร์ชัน 2 พร้อมประสิทธิภาพที่ดีขึ้นและตุ้มน้ำหนักที่ผ่านการฝึกอบรมมาแล้ว
30-10-2567 : การสนับสนุนแบบรวมสำหรับ TorchHub เพื่อให้การโหลดและการอนุมานโมเดลทำได้ง่าย
25-07-2024 : การเปิดตัวโมเดลที่ผ่านการฝึกอบรมเบื้องต้นเป็นครั้งแรก
23-07-2024 : พื้นที่เก็บข้อมูล GitHub และโมเดล HybridDepth ใช้งานได้แล้ว
เริ่มต้นใช้งาน HybridDepth อย่างรวดเร็วโดยใช้สมุดบันทึก Colab
คุณสามารถเลือกโมเดลที่ผ่านการฝึกอบรมล่วงหน้าได้โดยตรงจาก TorchHub
โมเดลที่ผ่านการฝึกอบรมมาแล้วที่มีจำหน่าย:
HybridDepth_NYU5
: ได้รับการฝึกอบรมล่วงหน้ากับชุดข้อมูล NYU Depth V2 โดยใช้อินพุตสแต็ก 5 โฟกัส โดยได้รับการฝึกอบรมทั้งสาขา DFF และเลเยอร์การปรับแต่ง
HybridDepth_NYU10
: ได้รับการฝึกอบรมล่วงหน้ากับชุดข้อมูล NYU Depth V2 โดยใช้อินพุตสแต็ก 10 โฟกัส โดยได้รับการฝึกอบรมทั้งสาขา DFF และเลเยอร์การปรับแต่ง
HybridDepth_DDFF5
: ได้รับการฝึกอบรมล่วงหน้ากับชุดข้อมูล DDFF โดยใช้อินพุตสแต็ก 5 โฟกัส
HybridDepth_NYU_PretrainedDFV5
: ฝึกอบรมล่วงหน้าเฉพาะบนชั้นการปรับแต่งด้วยชุดข้อมูล NYU Depth V2 โดยใช้สแต็ก 5 โฟกัส หลังจากการฝึกอบรมล่วงหน้าด้วย DFV
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 สร้าง -f สภาพแวดล้อม .yml conda เปิดใช้งานไฮบริดความลึก
ดาวน์โหลดตุ้มน้ำหนักก่อนการฝึก:
ดาวน์โหลดตุ้มน้ำหนักสำหรับโมเดลจากลิงก์ด้านล่าง และวางไว้ในไดเร็กทอรี checkpoints
:
HybridDepth_NYU_FocalStack5
HybridDepth_NYU_FocalStack10
HybridDepth_DDFF_FocalStack5
HybridDepth_NYU_PretrainedDFV_FocalStack5
การทำนาย
สำหรับการอนุมาน คุณสามารถเรียกใช้โค้ดต่อไปนี้:
# โหลดโมเดล checkpointmodel_path = 'จุดตรวจ/NYUBest5.ckpt'model = DepthNetModule.load_from_checkpoint(model_path)model.eval()model = model.to('cuda')
หลังจากโหลดโมเดลแล้ว ให้ใช้โค้ดต่อไปนี้เพื่อประมวลผลภาพที่อินพุตและรับแผนผังความลึก:
หมายเหตุ : ในปัจจุบัน ฟังก์ชัน prepare_input_image
รองรับเฉพาะรูปภาพ .jpg
เท่านั้น แก้ไขฟังก์ชันหากคุณต้องการการสนับสนุนสำหรับรูปแบบภาพอื่นๆ
จาก utils.io import allowance_input_imagedata_dir = 'ไดเร็กทอรีรูปภาพสแต็กโฟกัส' # เส้นทางไปยังรูปภาพสแต็กโฟกัสในโฟลเดอร์ # โหลดสแต็กโฟกัส imagefocal_stack, rgb_img, focus_dist = wait_input_image (data_dir) # เรียกใช้การอนุมานด้วย torch.no_grad (): out = model (rgb_img, focal_stack, focus_dist)metric_deep = out[0].squeeze().cpu().numpy() # ความลึกของเมตริก
ขั้นแรก โปรดดาวน์โหลดตุ้มน้ำหนักสำหรับโมเดลจากลิงก์ด้านล่าง และวางไว้ในไดเร็กทอรี checkpoints
:
HybridDepth_NYU_FocalStack5
HybridDepth_NYU_FocalStack10
HybridDepth_DDFF_FocalStack5
HybridDepth_NYU_PretrainedDFV_FocalStack5
NYU Depth V2 : ดาวน์โหลดชุดข้อมูลโดยทำตามคำแนะนำที่ให้ไว้ที่นี่
DDFF12 : ดาวน์โหลดชุดข้อมูลโดยทำตามคำแนะนำที่ให้ไว้ที่นี่
ARKitScenes : ดาวน์โหลดชุดข้อมูลโดยทำตามคำแนะนำที่ให้ไว้ที่นี่
ตั้งค่าไฟล์การกำหนดค่า config.yaml
ในไดเร็กทอรี configs
ไฟล์ที่กำหนดค่าไว้ล่วงหน้าสำหรับชุดข้อมูลแต่ละชุดจะมีอยู่ในไดเร็กทอรี configs
ซึ่งคุณสามารถระบุเส้นทาง การตั้งค่าโมเดล และไฮเปอร์พารามิเตอร์อื่นๆ ได้ นี่คือตัวอย่างการกำหนดค่า:
ข้อมูล: class_path: dataloader.dataset.NYUDataModule # เส้นทางไปยังโมดูล dataloader ของคุณใน dataset.py init_args:nyuv2_data_root: "path/to/NYUv2" # เส้นทางไปยังชุดข้อมูลเฉพาะ img_size: [480, 640] # ปรับตามความต้องการ DataModule ของคุณremove_white_border: Truenum_workers: 0 # ตั้งค่าเป็น 0 หากใช้ datause_labels สังเคราะห์: Truemodel: invert_ allowance: True # Set เป็น True หากโมเดลเอาต์พุตกลับด้าน deepckpt_path: จุดตรวจ/จุดตรวจ.ckpt
ระบุไฟล์การกำหนดค่าในสคริปต์ test.sh
:
หลามทดสอบ cli_run.py --config configs/config_file_name.yaml
จากนั้นดำเนินการประเมินด้วย:
สคริปต์ซีดี sh ประเมิน.sh
ติดตั้งแพ็คเกจที่ใช้ CUDA ที่จำเป็นสำหรับการสังเคราะห์ภาพ:
ติดตั้ง python utils/synthetic/gauss_psf/setup.py
ซึ่งจะติดตั้งแพ็คเกจที่จำเป็นสำหรับการสังเคราะห์รูปภาพ
ตั้งค่าไฟล์การกำหนดค่า config.yaml
ในไดเรกทอรี configs
โดยระบุเส้นทางชุดข้อมูล ขนาดแบตช์ และพารามิเตอร์การฝึกอื่นๆ ด้านล่างนี้คือตัวอย่างการกำหนดค่าสำหรับการฝึกกับชุดข้อมูล NYUv2:
รุ่น: invert_deep: จริง #อัตราการเรียนรู้ lr: 3e-4 # ปรับตามต้องการ #น้ำหนักลด wd: 0.001 # ปรับข้อมูลตามต้องการ: class_path: dataloader.dataset.NYUDataModule # พาธไปยังโมดูล dataloader ของคุณใน dataset.py init_args:nyuv2_data_root: "path/to/NYUv2" # ชุดข้อมูล pathimg_size: [480, 640] # ปรับสำหรับ NYUDataModuleremove_white_border: Truebatch_size: 24 # ปรับตาม memorynum_workers ที่มีอยู่: 0 # ตั้งเป็น 0 หากใช้ datause_labels สังเคราะห์: Trueckpt_path: null
ระบุไฟล์การกำหนดค่าในสคริปต์ train.sh
:
หลาม cli_run.py รถไฟ --config configs/config_file_name.yaml
ดำเนินการคำสั่งการฝึกอบรม:
สคริปต์ซีดี ช train.sh
หากงานของเราช่วยคุณในการวิจัยของคุณ โปรดอ้างอิงดังนี้:
@misc{ganj2024hybriddeeprobustmetric allowance, title={HybridDepth: การรวมความลึกของเมตริกที่แข็งแกร่งโดยใช้ประโยชน์จากความลึกจากโฟกัสและ Priors รูปภาพเดียว}, author={Ashkan Ganj และ Hang Su และ Tian Guo}, year={2024}, eprint={2407.18443} , archivePrefix={arXiv}, primaryClass={cs.CV}, url={https://arxiv.org/abs/2407.18443}, -