يحتوي هذا المستودع على الكود المصدري لورقتنا:
SLAM متعدد الجلسات مع تحسين وضعية خط الأساس العريض القابلة للتمييز
لاهاف ليبسون، جيا دينغ
@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 طرف ثالث/التعريب الهرمي python -m pip install -e .cd ../..
و eigen
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip قم بفك ضغط eigen-3.4.0.zip -d طرف ثالث
وأخيرا، تشغيل
تثبيت النقطة .
تحميل نماذج الأوزان
نحن نقدم الأوزان النموذجية للعمود الفقري VO، والعمود الفقري ثنائي العرض، والعمود الفقري ثنائي العرض بعد التدريب المسبق على التجانس:
https://drive.google.com/drive/folders/11iC4ZAmO_mWMUjkpS83HgVcS80hFL-30?usp=sharing
قم بتشغيل conda install jupyter
إذا لم يتم ذلك مسبقًا.
نحن نقدم دفاتر ملاحظات لعرض أسلوب العرض المزدوج الخاص بنا. تقوم الدالة run_model(model, images, intrinsics)
بإخراج قائمة بالتنبؤات المتوسطة للوضعية/المطابقات. التنبؤ الأخير (الأفضل) هو من النموذج
لتصور التنبؤات على Scannet / mega Deep، اتبع تعليمات تنزيل البيانات ذات العرضين وقم بتشغيلها
jupyter notebook demo_scannet_megadepth.ipynb
لتصور التنبؤ على أي زوج من الصور، قم بتحرير وتشغيل demo_pair.ipynb
دفتر jupyter demo_pair.ipynb
عرضين
يقدم مؤلفو LoFTR بسخاء مجموعات الاختبار الخاصة بـ Scannet و Mega Deep. قم بتنزيلها وفك ضغطها في data/scannet/scannet_test_1500/
و data/megadepth/megadepth_test_1500/
، على التوالي.
untar megaديبوث_test_1500.tar -C البيانات/ميجاديبوث/ untar scannet_test_1500.tar -C data/scannet/
سلام متعدد الجلسات
EuRoC : قم بتنزيل التسلسلات من مجموعة بيانات EuRoC هنا. تأكد من تنزيل تنسيق ASL. قم بفك ضغط التسلسلات ضمن data/EuRoC
ETH3D : يمكنك تنزيل التسلسلات من مجموعة بيانات تدريب ETH3D باستخدام البرنامج النصي المتوفر الخاص بهم download_eth3d_slam_datasets.py. يمكنك اختيار أحادية، RGB فقط. قم بفك التسلسل تحت data/ETH3D
سلام متعدد الجلسات
لتقييم نهج SLAM متعدد الجلسات الكامل الخاص بنا على جميع مجموعات تسلسل EuRoC، قم بتشغيل
python eval_euroc.py 'Vicon 1'python eval_euroc.py 'Vicon 2' python eval_euroc.py 'Machine Hall'python eval_euroc.py 'Machine Hall0-3'
لتقييم طريقتنا على مجموعات تسلسل ETH3D، قم بتشغيل
أريكة بيثون eval_eth3d.py بيثون eval_eth3d.py الجدول بيثون eval_eth3d.py plant_scene بيثون eval_eth3d.py أينشتاين بيثون eval_eth3d.py مستو
كلا البرنامجين يتبعان نفس القالب. يتطلب توسيع خط الأنابيب إلى البيانات الجديدة فقط تنفيذ أداة تحميل البيانات لتحميل الصور والعناصر الجوهرية.
وضعية النظرتين
لتقييم طريقة العرض الثنائي الخاصة بنا على Scannet، قم بالتشغيل
بيثون تقييم.py --dataset test_scannet --load_ckpt twoview.pth -o ScanNetDatasetWrapper.pad_to_size=840
بالنسبة للعمق الكبير، قم بالتشغيل
بيثون تقييم.py --dataset test_megareach --load_ckpt twoview.pth
تنزيل البيانات
التجانسات التركيبية : قم بتشغيل البرنامج النصي للتنزيل في https://github.com/filipradenovic/revisitop لتنزيل مجموعة بيانات عوامل التشتيت من Oxford-Paris. قم بتخزين الملفات تحت data/revisitop1m/jpg/
Scannet/Mega Deep : اتبع التعليمات الواردة من إعداد بيانات تدريب LoFTR: https://github.com/zju3dv/LoFTR/blob/master/docs/TRAINING.md. قم بفك ضغط *_indices.tar
في مجلدات index
.
تنزيل بيانات VO : لتنزيل البيانات الخاصة بتدريب العمود الفقري لـ VO، اتبع تعليمات التنزيل من مستودع DROID-SLAM.
يجب أن يكون تخطيط البيانات الكامل كما يلي:
├── البيانات ├── إعادة النظر في Top1m ├── JPG ├── revisitop1m.txt ├── سكانيت ├── الفهرس ├── scannet_test_1500 ├── القطار ├── عمق كبير ├── الفهرس ├── scannet_test_1500 ├── القطار ├── تارتان إير ├── مصنع مهجور ├── ...
Homography ذو عرضين قبل التدريب
قم بتشغيل واحد أو أكثر من طائرات A6000 (استخدمنا 1).
بيثون Train.py -g Train_homog.gin --batch_size 14 --name Homog_pretrain mv model_weights/homog_pretrain/step_140000.pth homog_pretrain.pth
تدريب كامل بنظرتين
قم بتشغيل واحد أو أكثر من طائرات A6000 (استخدمنا 10 منها).
بيثون Train.py -g Train_pose.gin --batch_size 12 --name 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
DPVO
Pytorch3D
شكرًا للمؤلفين على فتح المصدر الخاص بهم