يحتوي هذا المستودع على تنفيذ الورقة التالية:
"D2-Net: A Trainable CNN for Joint Detection and Description of Local Features".
M. Dusmanu, I. Rocco, T. Pajdla, M. Pollefeys, J. Sivic, A. Torii, and T. Sattler. CVPR 2019.
ورقة على Arxiv ، صفحة المشروع
ينصح Python 3.6+ لتشغيل الكود الخاص بنا. يمكن استخدام كوندا لتثبيت الحزم المطلوبة:
conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
conda install h5py imageio imagesize matplotlib numpy scipy tqdmيمكن تنزيل أوزان Caffe VGG16 من الكافيين ونظيرها المضبوط عن طريق التشغيل:
mkdir models
wget https://dusmanu.com/files/d2-net/d2_ots.pth -O models/d2_ots.pth
wget https://dusmanu.com/files/d2-net/d2_tf.pth -O models/d2_tf.pth
wget https://dusmanu.com/files/d2-net/d2_tf_no_phototourism.pth -O models/d2_tf_no_phototourism.pth تحديث - 23 مايو 2019 أضفنا مجموعة جديدة من الأوزان المدربين على megadepth بدون مشاهد السياحة الضوئية (Sagrada_Familia - 0019 ، Lincoln_Memorial_Statue - 0021 ، British_Museum - 0024 ، London_Bridge - 0025 ، us_capitol - 0078 ، 0089). نتائجنا الأولية تظهر أداء مماثل. من أجل استخدام هذه الأوزان في وقت الاختبار ، يجب عليك إضافة --model_file models/d2_tf_no_phototourism.pth .
يمكن استخدام extract_features.py لاستخراج ميزات D2 لقائمة معينة من الصور. تتطلب ميزات SinglesCale أقل من 6 جيجابايت من VRAM لصور 1200x1600. يمكن استخدام علامة --multiscale لاستخراج الميزات المتعددة -لهذا ، نوصي بما لا يقل عن 12 جيجابايت من VRAM.
يمكن أن يكون تنسيق الإخراج إما npz أو mat . في كلتا الحالتين ، تغلف ملفات الميزات ثلاث صفائف:
keypoints [ N x 3 ] تحتوي على مواضع من نقاط المفاتيح x, y والمقاييس s . تتبع المواضع تنسيق Colmap ، مع الإشارة إلى محور X إلى اليمين والمحور Y إلى القاع.scores [ N ] صفيف يحتوي على تنشيطات Keypoints (أعلى أفضل).descriptors [ N x 512 ] تحتوي على الواصفات الطبيعية L2. python extract_features.py --image_list_file images.txt (--multiscale)Kapture هو تنسيق ملف محوري ، استنادًا إلى الملفات والملفات الثنائية ، المستخدم لوصف SFM (بنية من الحركة) والبيانات المكتسبة بشكل عام.
وهي متوفرة على https://github.com/naver/kapture. أنه يحتوي على أدوات تحويل للتنسيقات الشائعة ، وتتوفر العديد من مجموعات البيانات الشائعة مباشرة في Kapture.
يمكن تثبيته مع:
pip install kaptureيمكن تنزيل مجموعات البيانات مع:
kapture_download_dataset.py update
kapture_download_dataset.py list
# e.g.: install mapping and query of Extended-CMU-Seasons_slice22
kapture_download_dataset.py install " Extended-CMU-Seasons_slice22_* "إذا كنت ترغب في تحويل مجموعة البيانات الخاصة بك إلى kapture ، فيرجى العثور على بعض الأمثلة هنا.
بمجرد التثبيت ، يمكنك استخراج نقاط المفاتيح لمجموعة بيانات Kapture الخاصة بك مع:
python extract_kapture.py --kapture-root pathto/yourkapturedataset (--multiscale) Run python extract_kapture.py --help لمزيد من المعلومات حول معلمات الاستخراج.
خط أنابيب التدريب المقدم هنا هو تطبيق Pytorch لرمز TensorFlow الذي تم استخدامه لتدريب النموذج المتاح للتنزيل أعلاه.
تحديث - 05 يونيو 2019 لقد أصلحنا خطأ في معالجة البيانات المسبقة - إعادة تدريب الآن نتائج مماثلة لتطبيق TensorFlow الأصلي.
التحديث - 07 أغسطس 2019 لقد أصدرنا إصدارًا محدثًا وأكثر دقة من مجموعة بيانات التدريب - التدريب أكثر استقرارًا وأسرع بكثير للأداء المتساوي.
لهذا الجزء ، يجب تثبيت Colmap. يرجى الرجوع إلى الموقع الرسمي للحصول على تعليمات التثبيت.
بعد تنزيل مجموعة بيانات MEGADEPTH بالكامل (بما في ذلك نماذج SFM) ، فإن الخطوة الأولى هي توليد عمليات إعادة البناء غير المملوكة. يمكن القيام بذلك عن طريق استدعاء undistort_reconstructions.py على النحو التالي:
python undistort_reconstructions.py --colmap_path /path/to/colmap/executable --base_path /path/to/megadepth بعد ذلك ، يمكن استخدام preprocess_megadepth.sh لاسترداد معلمات الكاميرا وحساب التداخل بين الصور لجميع المشاهد.
bash preprocess_undistorted_megadepth.sh /path/to/megadepth /path/to/output/folderبعد تنزيل Megadepth والمعالجة المسبقة ، يمكن بدء التدريب على الفور:
python train.py --use_validation --dataset_path /path/to/megadepth --scene_info_path /path/to/preprocessing/outputإذا كنت تستخدم هذا الرمز في مشروعك ، فيرجى الاستشهاد بالورقة التالية:
@InProceedings { Dusmanu2019CVPR ,
author = { Dusmanu, Mihai and Rocco, Ignacio and Pajdla, Tomas and Pollefeys, Marc and Sivic, Josef and Torii, Akihiko and Sattler, Torsten } ,
title = { {D2-Net: A Trainable CNN for Joint Detection and Description of Local Features} } ,
booktitle = { Proceedings of the 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition } ,
year = { 2019 } ,
}