พื้นที่เก็บข้อมูลนี้มีซอร์สโค้ดสำหรับรายงานของเรา:
SLAM แบบหลายเซสชันพร้อมการปรับท่าโพสแบบ Wide-Baseline ที่สร้างความแตกต่างได้
ลาฮาฟ ลิปสัน, เจีย เติ้ง
@inproceedings{lipson2024multi, title={Multi-Session SLAM with Differentiable Wide-Baseline Pose Optimization}, author={Lipson, Lahav and Deng, Jia}, booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition}, year={2024} }
git clone --recursive [email protected]:princeton-vl/MultiSlam_DiffPose.git cd MultiSlam_DiffPose conda env create --file environment.yml --name msdp conda activate msdp
คุณจะต้องติดตั้ง hloc ไลบรารีบุคคลที่สามด้วย
cd บุคคลที่สาม/ลำดับชั้น-การแปลเป็นภาษาท้องถิ่น หลาม -m pip ติดตั้ง -e .cd ../..
และ ไอเกน
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip เปิดเครื่องรูด eigen-3.4.0.zip -d บุคคลที่สาม
สุดท้ายก็วิ่ง
การติดตั้ง pip
ดาวน์โหลดตุ้มน้ำหนักโมเดล
เราจัดเตรียมตุ้มน้ำหนักแบบจำลองสำหรับแกนหลัก VO, แกนหลักสองมุมมอง และแกนหลักสองมุมมอง หลังจากการฝึกอบรมล่วงหน้าแบบ homography:
https://drive.google.com/drive/folders/11iC4ZAmO_mWMUjkpS83HgVcS80hFL-30?usp=sharing
เรียกใช้ conda install jupyter
หากยังไม่ได้ทำก่อนหน้านี้
เรามีสมุดบันทึกเพื่อสาธิตวิธีการโพสท่าสองมุมมองของเรา ฟังก์ชัน run_model(model, images, intrinsics)
จะแสดงรายการการคาดการณ์ระดับกลางของท่าทาง/การจับคู่ การทำนายครั้งสุดท้าย (ดีที่สุด) คือรูปแบบ
หากต้องการแสดงภาพการคาดการณ์บน Scannet / megadeeppel ให้ทำตามคำแนะนำในการดาวน์โหลดข้อมูลแบบสองมุมมองแล้วดำเนินการ
jupyter notebook demo_scannet_megadepth.ipynb
หากต้องการแสดงภาพการทำนายของคู่รูปภาพใดๆ ให้แก้ไขและเรียกใช้ demo_pair.ipynb
สมุดบันทึก jupyter demo_pair.ipynb
สองมุมมอง
ผู้เขียน LoFTR จัดเตรียมชุดการทดสอบสำหรับ Scannet และ Megadeeppe ด้วยความเอื้อเฟื้อ ดาวน์โหลดและแตกไฟล์ลงใน data/scannet/scannet_test_1500/
และ data/megadepth/megadepth_test_1500/
ตามลำดับ
untar megalength_test_1500.tar -C ข้อมูล/megadeep/ untar scannet_test_1500.tar -C ข้อมูล/scannet/
SLAM แบบหลายเซสชัน
EuRoC : ดาวน์โหลดลำดับจากชุดข้อมูล EuRoC ที่นี่ อย่าลืมดาวน์โหลดรูปแบบ ASL คลายลำดับภายใต้ data/EuRoC
ETH3D : คุณสามารถดาวน์โหลดลำดับจากชุดข้อมูลการฝึกอบรม ETH3D โดยใช้สคริปต์ download_eth3d_slam_datasets.py ที่ให้มา คุณสามารถเลือกโมโน RGB เท่านั้น คลายลำดับภายใต้ data/ETH3D
SLAM แบบหลายเซสชัน
หากต้องการประเมินแนวทาง Multi-Session SLAM เต็มรูปแบบของเราในกลุ่มลำดับ EuRoC ทั้งหมด ให้รัน
python eval_euroc.py 'Vicon 1'python eval_euroc.py 'Vicon 2'python eval_euroc.py 'ห้องโถงเครื่อง'python eval_euroc.py 'ห้องโถงเครื่อง0-3'
เพื่อประเมินวิธีการของเราในกลุ่มลำดับ ETH3D ให้รัน
หลาม eval_eth3d.py โซฟา ตารางหลาม eval_eth3d.py หลาม eval_eth3d.py plant_scene หลาม eval_eth3d.py ไอน์สไตน์ หลาม eval_eth3d.py ระนาบ
สคริปต์ทั้งสองเป็นไปตามเทมเพลตเดียวกัน การขยายไปป์ไลน์ไปยังข้อมูลใหม่จำเป็นต้องใช้ตัวโหลดข้อมูลเพื่อโหลดรูปภาพและอินทรินซิกเท่านั้น
ท่าโพสท่าสองมุมมอง
หากต้องการประเมินวิธีจัดท่าแบบสองมุมมองของเราบน Scannet ให้เรียกใช้
หลามประเมิน.py --ชุดข้อมูล test_scannet --load_ckpt twoview.pth -o ScanNetDatasetWrapper.pad_to_size=840
สำหรับ Megadeeppe ให้รัน
หลามประเมิน.py --ชุดข้อมูล test_megalength --load_ckpt twoview.pth
ดาวน์โหลดข้อมูล
Homographies สังเคราะห์ : เรียกใช้สคริปต์ดาวน์โหลดใน https://github.com/filipradenovic/revisitop เพื่อดาวน์โหลดชุดข้อมูลตัวรบกวน Oxford-Paris เก็บไฟล์ไว้ภายใต้ data/revisitop1m/jpg/
Scannet/Megaความลึก : ทำตามคำแนะนำจากการตั้งค่าข้อมูลการฝึกอบรม LoFTR: https://github.com/zju3dv/LoFTR/blob/master/docs/TRAINING.md แตกไฟล์ *_indices.tar
ลงในโฟลเดอร์ย่อย index
ดาวน์โหลดข้อมูล VO : หากต้องการดาวน์โหลดข้อมูลสำหรับการฝึกแกนหลัก VO ให้ทำตามคำแนะนำการดาวน์โหลดจาก repo DROID-SLAM
เค้าโครงข้อมูลทั้งหมดควรเป็นดังนี้:
├── ข้อมูล ├── ทบทวนอีกครั้ง 1m ├── jpg ├── ทบทวนอีกครั้ง ├── สแกนเน็ต ├── ดัชนี ├── scannet_test_1500 ├── รถไฟ ├── ความลึกระดับล้าน ├── ดัชนี ├── scannet_test_1500 ├── รถไฟ ├── ทาร์ทันแอร์ ├──โรงงานที่ถูกทิ้งร้าง ...
Homography Two-view การฝึกอบรมล่วงหน้า
ใน A6000 หนึ่งตัวหรือหลายตัว (เราใช้ 1 ตัว) ให้เรียกใช้
หลาม train.py -g train_homog.gin --batch_size 14 -- ชื่อ homog_pretrain MV model_weights/homog_pretrain/step_140000.pth homog_pretrain.pth
การฝึกอบรมเต็มรูปแบบสองมุมมอง
ใน A6000 หนึ่งตัวหรือหลายตัว (เราใช้ 10 ตัว) ให้เรียกใช้
หลาม train.py -g train_pose.gin --batch_size 12 -- ชื่อ twoview --load_ckpt homog_pretrain.pth mv model_weights/twoview/step_100000.pth twoview.pth
การฝึกอบรมวีโอ
ใน A6000 หนึ่งตัวหรือหลายตัว (เราใช้ 1 ตัว) ให้เรียกใช้
หลาม train_vo.py --steps=240000 --lr=0.00008 --name=vo จุดตรวจ mv/vo_240000.pth vo.pth
โปรเจ็กต์นี้อาศัยโค้ดจากที่เก็บที่มีอยู่:
ลำดับชั้น-การแปลเป็นภาษาท้องถิ่น
LoFTR
อปส
Pytorch3D
ขอขอบคุณผู้เขียนสำหรับโอเพ่นซอร์สโค้ดของพวกเขา