
أكثر برامج التحديد الجغرافي للصور على مستوى الشارع تطورًا في العالم
أحدث ما توصلت إليه تقنيات التحديد الجغرافي بالذكاء الاصطناعي من صورة واحدة.
الفكرة • كيف يعمل • بدء الاستخدام • المركز المجتمعي • التثبيت
لديك صورة فوتوغرافية. ربما تكون لقطة شاشة من فيديو. ربما تكون صورة هاتف مقطوعة وغير واضحة نشرها شخص ما على الإنترنت. ربما تظهر مجرد واجهة متجر، أو امتداد طريق، أو زاوية مبنى. تريد أن تعرف بالضبط أين التُقطت.
Netryx Astra V2 تجيب على هذا السؤال.
إنه نظام تحديد جغرافي مفتوح المصدر يأخذ صورة واحدة ويجد الإحداثيات الدقيقة لنظام تحديد المواقع العالمي (GPS) من خلال مطابقتها مع قاعدة بيانات للصور البانورامية على مستوى الشارع. ارفع صورتك، وفي غضون دقائق يخبرك بالشارع والمدينة والإحداثيات – بدقة تصل إلى بضعة أمتار.
ما يجعل الإصدار V2 مختلفًا عن Netryx الأصلي (وعن الأدوات الأخرى المتوفرة) هو خط أنابيب المطابقة. لقد أعدنا بناء كل شيء من الأساس باستخدام نموذجين لم يكونا موجودين عندما بدأنا هذا المشروع:
MegaLoc (CVPR 2025) – النموذج الأكثر دقة لاسترجاع الصور للتعرف على الأماكن، تم تدريبه عبر ست مجموعات بيانات تغطي التباينات الداخلية والخارجية والنهارية والليلية والموسمية. يجد الحي الصحيح.
MASt3R (ECCV 2024) – أداة مطابقة كثيفة ثلاثية الأبعاد تفهم هندسة المشاهد، وليس فقط أنماط البكسل. إنه يؤكد الموقع الدقيق، حتى من الصور الجزئية أو المقطوعة بشكل كبير والتي قد تعطل أدوات المطابقة التقليدية.
النتيجة هي خط أنابيب من ثلاث خطوات أبسط وأكثر دقة من النظام ذي التسع مراحل الذي حل محله.
استخدمت Netryx الأصلية CosPlace للاسترجاع ومجموعة من DISK + LightGlue + LoFTR + RANSAC + القفز بين الواصفات + توسيع الجوار للتحقق. لقد كانت تعمل، لكنها كانت هشة – الكثير من الاستدلالات المتراكمة فوق بعضها البعض، كل منها كان حلاً بديلاً لقيود المرحلة السابقة.
قام الإصدار V2 بالتخلص من كل ذلك. إليك ما حل محل ماذا:
التبسيط ليس مجرد تحسين جمالي. عدد أقل من المراحل يعني عددًا أقل من الأماكن التي يمكن أن تحدث فيها الأخطاء، وبحوثًا أسرع، ورمزًا يسهل صيانته فعليًا.
يتكون خط الأنابيب من ثلاث مراحل. هذا ليس تبسيطًا مفرطًا – إنها بالفعل ثلاث مراحل فقط.
صورة الاستعلام
│
▼
┌─────────────┐
│ MegaLoc │ "أين يمكن أن يكون هذا في المدينة؟"
│ استرجاع │
└─────┬───────┘
│ أفضل 500 مرشح
▼
┌─────────────┐
│ MASt3R │ "هل هذا حقًا نفس المكان؟"
│ مطابقة │
└─────┬───────┘
│ مرشحون بدرجات
▼
┌─────────────┐
│ توافق │ "أي تكتل من التطابقات هو الأكثر جدارة بالثقة؟"
│ مكاني │
└─────┬───────┘
│
▼
📍 إحداثيات GPS
يتم تحويل صورة الاستعلام الخاصة بك إلى واصف مضغوط – متجه ذو 8448 بُعدًا يلتقط الجوهر البصري للمشهد. يتم تقليل هذا المتجه بواسطة PCA إلى 1024 بُعدًا، ثم يتم مقارنته مع كل موقع مفهرس عن طريق التشابه النقطي.
نقوم أيضًا باستخراج واصف لقص مركزي مكبر قليلاً ولإصدار مقلوب أفقيًا من الاستعلام، ثم ندمج النتائج. يعالج هذا الحالات التي يكون فيها الاستعلام بمستوى تكبير مختلف أو يواجه الاتجاه المعاكس للعرض المفهرس.
الناتج هو أفضل 500 موقع مرشح من الفهرس، مرتبة حسب التشابه البصري.
MegaLoc هو من مختبر Gabriele Berton (نفس المجموعة التي صنعت CosPlace وEigenPlaces). إنه الأحدث في سلسلة أعمالهم، تم تدريبه على SF-XL وGSV-Cities وMSLS وبيانات استرجاع المعالم في وقت واحد. لا يوجد نموذج استرجاع آخر يتفوق عليه باستمرار عبر جميع المعايير – داخلي، خارجي، حضري، ريفي، نهاري، ليلي.
لكل من هؤلاء المرشحين الـ 500، نقوم بتنزيل الصورة البانورامية للشارع المقابلة، ونقتصها بزاوية الاتجاه المفهرسة، ونشغل MASt3R للعثور على تطابقات كثيفة بين البكسل في الاستعلام والقص.
هذا هو المكان الذي يحدث فيه السحر للاستعلامات الصعبة. أدوات المطابقة التقليدية مثل SuperPoint + LightGlue تستخرج ربما 500-2000 نقطة مفتاحية متفرقة وتحاول مطابقتها. إذا كانت صورتك الاستعلامية تتداخل بنسبة 20٪ فقط مع صورة قاعدة البيانات، فقد يكون هناك 50 نقطة مفتاحية مرئية مشتركة فقط – غير كافية لمطابقة موثوقة.
يعمل MASt3R بشكل مختلف تمامًا. إنه يعالج المطابقة كمشكلة إعادة بناء ثلاثية الأبعاد، ويتنبأ بخرائط نقاط كثيفة ووصفات ميزات محلية لكل بكسل. حتى المنطقة المتداخلة الصغيرة تنتج مئات التطابقات الموثوقة، لأنه يفهم البنية ثلاثية الأبعاد للمشهد، وليس فقط أنماط البكسل ثنائية الأبعاد.
في معيار Map-free localization (صورة مرجعية واحدة، تغييرات في زاوية الرؤية تصل إلى 180 درجة)، يتفوق MASt3R على الطرق السابقة بنسبة 30٪. هذا ليس تحسنًا تدريجيًا – إنها قفزة جيلية.
إليك المشكلة في مجرد اختيار المرشح الحاصل على أعلى درجة مطابقة: توجد نتائج إيجابية خاطئة. مطعمان متطابقتان من نفس السلسلة على بعد 5 كيلومترات سينتجان درجات MASt3R عالية. صف من مجمعات الشقق السوفيتية تبدو جميعها متشابهة.
التوافق المكاني يحل هذا. نقوم بتقسيم منطقة البحث إلى خلايا شبكية بحجم حوالي 50 مترًا ونجمع جميع التطابقات الجيدة جغرافيًا. تحصل كل خلية على درجة بناءً على الأدلة المجمعة من جميع التطابقات في تلك الخلية وجيرانها.
تطابق واحد شاذ يحتوي على 200 نقطة داخلية في الموقع الخطأ يتم تفوقه بالنتيجة بواسطة تكتل من 5 تطابقات تحتوي كل منها على 80-150 نقطة داخلية في الموقع الصحيح. يصبح أفضل تطابق في التكتل الفائز هو الإجابة النهائية.
لهذا السبب تظل الدقة عالية حتى عند أنصاف أقطار البحث الأكبر حيث يوجد المزيد من المواقع المتشابهة.
يمكننا أن نلاحظ في هذه الصورة أنه لا يوجد أي شيء للاعتماد عليه، إنها مجرد جزء صغير مقطوع. إن تقنيات OSINT التقليدية ستفشل تمامًا هنا. ومع ذلك، قامت Netryx Astra بتحديد موقعها الجغرافي بدقة حتى إحداثياتها المحددة دون أي بيانات وصفية أو أدلة مسبقة، وتعمل بالكامل محليًا.
صورة مقطوعة صغيرة لمبنى، هذا كل ما تطلبه الأمر للعثور على موقعه في دائرة نصف قطرها 1 كم في موسكو.
هذا هو الجزء الذي نحن متحمسون له أكثر.
فهرسة مدينة تستغرق ساعات من وقت الحوسبة. من المهدر أن يقوم كل مستخدم بفهرسة نفس المدينة بشكل مستقل. لذلك قمنا ببناء نظام مشاركة: شخص واحد يقوم بفهرسة موسكو، ويحمل النتيجة، ويقوم الجميع بتنزيلها في دقائق.
أسرع طريقة. قام شخص آخر بالفعل بعمل الفهرسة – ما عليك سوى تنزيل الفهرس المبني مسبقًا.
اضبط الوضع على بحث، وانقر على تشغيل البحث، واختر صورة الاستعلام الخاصة بك. يتم ملء إحداثيات الخريطة ونصف قطر البحث تلقائيًا من بيانات الفهرس الوصفية. هذه الميزة تعمل فقط إذا ساهم المجتمع ودعم بعضه البعض، إذا قمت بفهرسة منطقة، فسنكون جميعًا ممتنين إذا قمت بتحميلها.
ملاحظة هامة: إذا تجمد التطبيق بسبب نفاد ذاكرة التطبيق أثناء تركيب PCA، استخدم هذا الأمر في الطرفية! python3 -c "from test_super import build_compact_index; build_compact_index()"
هل تريد فهرسة مدينة أو منطقة لم يقم أحد بفهرستها بعد؟ يتولى التطبيق كل شيء – تنزيل الصور البانورامية، واستخراج الواصفات، وبناء فهرس البحث.
python test_super.py
ما يحدث تحت الغطاء: يولد التطبيق شبكة من النقاط داخل نصف القطر، ويجد جميع مواقع الصور البانورامية المتاحة، ويحمل كل صورة بانورامية كبلاطات ويقوم بتجميعها، ويقص كل صورة بانورامية بزوايا اتجاه متعددة، ويستخرج واصفات MegaLoc لكل قص، ويطبق PCA على جميع الواصفات، ويبني فهرس بحث مضغوطًا.
هل لديك ملف .netryx من صديق، أو خادم Discord، أو رابط تنزيل؟ فقط انقر على 📥 استيراد فهرس في التطبيق، واختر الملف، وستكون جاهزًا للبحث. لا حاجة لحساب، ولا حاجة للإنترنت – إنها سير عمل غير متصلة بالإنترنت تمامًا.
يتم استضافة الفهارس على Hugging Face Hub كمجموعات بيانات عامة. يمكن لأي شخص التنزيل دون حساب. المساهمة (الرفع) تتطلب حساب Hugging Face مجانيًا.
من الواجهة الرسومية: انقر على زر 🌐 المركز المجتمعي لتصفح الفهارس المتاحة والبحث فيها وتنزيلها. انقر على ⬆ رفع الفهرس الحالي لمشاركة فهرستك.
تستخدم حزم الفهرس تنسيق .netryx – وهو أرشيف ZIP يحتوي على:
عند التصدير، يحدث التصفية الجغرافية تلقائيًا. إذا كان الفهرس الخاص بك يحتوي على موسكو + باريس + طوكيو ولكنك تصدر "موسكو 1 كم"، فسيتم تضمين إدخالات موسكو فقط. يمكنك تقطيع مناطق محددة من فهرس أكبر دون أي عمل يدوي.
لا تريد استخدام Hugging Face؟ فقط قم بتصدير الملف ومشاركته بالطريقة التي تريدها:
# تصدير
python netryx_hub.py export \
--index-dir ./netryx_data/index \
-o moscow_1km.netryx \
--city moscow --radius 1 --lat 55.75 --lon 37.62
# أرسل الملف عبر Discord، البريد الإلكتروني، Google Drive، أياً كان
# الشخص الآخر يستورد
python netryx_hub.py import moscow_1km.netryx -o ./netryx_data/index
Mac / Linux:
git clone https://github.com/sparkyniner/Netryx-Astra-V2-Geolocation-Tool.git
cd netryx-astra-v2
chmod +x setup.sh && ./setup.sh
source venv/bin/activate
python3 test_super.py
Windows:
git clone https://github.com/sparkyniner/netryx-astra-v2.git
cd netryx-astra-v2
ثم انقر نقرًا مزدوجًا على setup.bat لتثبيت كل شيء. عند الانتهاء، انقر نقرًا مزدوجًا على run.bat للتشغيل.
هذا كل شيء. يقوم برنامج الإعداد بإنشاء بيئة افتراضية، وتثبيت جميع التبعيات، واستنساخ MASt3R بجانب المستودع، وتنزيل أوزان النماذج مسبقًا. لا حاجة لتكوين يدوي.
يتم تنزيل أوزان MASt3R تلقائيًا من Hugging Face عند التشغيل الأول.
يجب أن يبدو هيكل مجلدك كما يلي:
some_folder/
├── netryx-astra-v2/ # هذا المستودع
│ ├── test_super.py
│ ├── megaloc_utils.py
│ ├── mast3r_utils.py
│ ├── netryx_hub.py
│ └── ...
└── mast3r/ # مستنسخ بشكل منفصل
├── mast3r/
├── dust3r/
└── ...
يقوم mast3r_utils.py تلقائيًا بالعثور على المجلد المجاور mast3r/ واستيراده في وقت التشغيل. لا حاجة لتكوين المسار.
كل شيء يعمل على Apple Silicon فورًا. يتعامل الكود تلقائيًا مع شذوذ MPS – التبديل إلى وحدة المعالجة المركزية للعمليات غير المدعومة، والتعديل التلقائي لـ .view() إلى .reshape() للمصفوفات غير المتجاورة، وتنظيف ذاكرة التخزين المؤقت لـ MPS أثناء عمليات الفهرسة الطويلة.
إذا كان لديك Mac M1/M2/M3/M4، فسيستخدم تسريع GPU تلقائيًا. لا حاجة لتكوين.
ستحتاج إلى تثبيت rocm/pytorch لجهازك المحدد يدويًا في البيئة الافتراضية بعد تشغيل برنامج التثبيت.
استخدم إصدارات TheRock pytorch لجهازك: https://github.com/ROCm/TheRock/blob/main/RELEASES.md#installing-pytorch-python-packages
للتثبيت على سبيل المثال، لبطاقات سلسلة RX7xxx:
pip install --index-url https://rocm.nightlies.amd.com/v2/gfx110X-all/ torch torchaudio torchvision
ملاحظة: تأكد من أن المستخدم جزء من مجموعة render:
sudo usermod -aG render <userid>
وأن برنامج التشغيل الأساسي مثبت: https://rocm.docs.amd.com/projects/install-on-linux/en/latest/install/quick-start.html#amd-gpu-driver-installation
netryx-astra-v2/
├── test_super.py # التطبيق الرئيسي — الواجهة الرسومية، خط الأنابيب، كل شيء
├── megaloc_utils.py # تحميل نموذج MegaLoc، استخراج الواصفات، PCA
├── megaloc_model.py # بنية MegaLoc المستقلة (خيار احتياطي إذا فشل torch.hub)
├── mast3r_utils.py # تحميل MASt3R والمطابقة الكثيفة
├── netryx_hub.py # المركز المجتمعي — رفع، تنزيل، تصدير، استيراد
├── README.md
├── LICENSE
└── requirements.txt
# يتم إنشاؤها في وقت التشغيل (غير ملتزمة بـ git):
netryx_data/
├── megaloc_parts/ # أجزاء الواصفات الخام 8448-dim (يتم إنشاؤها أثناء الفهرسة)
└── index/ # فهرس البحث المضغوط
├── megaloc_descriptors.npy # واصفات مختزلة بواسطة PCA
├── metadata.npz # الإحداثيات والاتجاهات ومعرفات البانوراما
├── megaloc_pca.pkl # نموذج PCA لتحويل وقت الاستعلام
└── manifest.json # موجود إذا تم تنزيله من المركز المجتمعي
# تبعية خارجية (مستنسخة بشكل منفصل، وليس داخل هذا المستودع):
../mast3r/ # https://github.com/naver/mast3r
يمكنك ضبط هذه المعلمات في test_super.py إذا لزم الأمر. تعمل الإعدادات الافتراضية بشكل جيد لمعظم حالات الاستخدام.
الشيء الرئيسي الذي قد ترغب في تعديله هو INDEX_TARGET_DIM — خفضه إلى 512 يقلص حجم فهرستك إلى النصف مع فقدان دقة بنسبة 2-3٪ فقط.
نحن نؤمن بالصراحة بشأن ما يمكن وما لا يمكن لهذه الأداة فعله.
إنها تجد فقط الأماكن الموجودة في الفهرس. إذا لم يتم فهرسة موقع ما بواسطتك أو تنزيله من المجتمع، فلن يتم العثور عليه. لا يوجد نموذج، مهما كان متقدمًا، يمكنه المطابقة ضد بيانات غير موجودة. سقف الدقة تحدده التغطية، وليس النماذج.
الهندسة المعمارية المتكررة تسبب نتائج إيجابية خاطئة. المتاجر المتسلسلة، التطورات السكنية في الضواحي، صفوف مجمعات الشقق المتطابقة – هذه تبدو متشابهة حقًا من مستوى الشارع. التوافق المكاني يساعد (تكتل من التطابقات القريبة يتفوق على تطابق منفرد شاذ)، لكنه ليس مضمونًا، خاصة عند أنصاف أقطار بحث كبيرة (10 كم+) حيث يوجد المزيد من المرشحين المتشابهين. هذه مشكلة غير محلولة في المجال، وليست قيصرية خاصة بـ Netryx.
توجد فجوات في التغطية في بعض المناطق. قد تحتوي المناطق الريفية والبلدان النامية والأحياء المبنية حديثًا والمساحات الداخلية على صور محدودة أو معدومة على مستوى الشارع متاحة للفهرسة.
هذا ليس نظامًا في الوقت الفعلي. تشغيل MASt3R على 500 مرشح يستغرق عدة دقائق على وحدة معالجة رسوميات استهلاكية. هذا مصمم للتحليل الجنائي – الصحافة الاستقصائية، توثيق حقوق الإنسان، أبحاث OSINT، التحقيق في الاحتيال في التأمين – وليس للملاحة أو التتبع المباشر.
الفهرسة تتطلب موارد حاسوبية كبيرة. قاعدة DINOv2 الخاصة بـ MegaLoc أثقل بحوالي 5 مرات من قاعدة CosPlace المستخدمة في الإصدار V1. فهرسة دائرة نصف قطرها 1 كم تستغرق حوالي 20-30 دقيقة. مدينة كاملة (10 كم+) هي مهمة تستغرق ليلة كاملة. لهذا السبب يوجد المركز المجتمعي – حتى يتم دفع هذه التكلفة مرة واحدة ومشاركتها. كما أن التطابق الذي يحتوي على أكبر عدد من النقاط الداخلية ليس بالضرورة هو التطابق الصحيح، ولهذا يعيد نتائج متعددة يمكنك التحقق منها بنفسك.
إذا كنت تستخدم Netryx Astra V2 في بحثك أو عملك، فنحن نقدر الاقتباس:
@software{netryx_astra_v2,
title={Netryx Astra V2: State-of-the-Art AI Geolocation},
author={Sairaj Balaji},
year={2026},
url={https://github.com/yourusername/netryx-astra-v2}
}
رخصة MIT. انظر LICENSE للحصول على التفاصيل.
أوزان MegaLoc مرخصة بموجب MIT. MASt3R مرخص بموجب Apache 2.0. DINOv2 مرخص بموجب Apache 2.0. الفهارس المشتركة مجتمعيًا مرخصة بموجب CC-BY-4.0.
بُني بواسطة Sairaj Balaji
كما بُني PrismX الذي ظهر في Fast Company · 404 Media · Deutsche Welle
| V1 (الأصلي) | V2 (Astra) |
|---|
| إيجاد المرشحين | CosPlace (ResNet-50, 512-dim) | MegaLoc (DINOv2 ViT-B/14, 8448-dim → PCA 1024) |
| تأكيد التطابقات | DISK + LightGlue + RANSAC | مطابقة ثلاثية الأبعاد كثيفة MASt3R |
| معالجة الحالات الحدية | خيار احتياطي LoFTR، القفز بين الواصفات، توسيع الجوار، الوضع فائق السرعة | توافق مكاني – هذا كل شيء |
| إجمالي مراحل خط الأنابيب | 9+ | 3 |
| مطابقة الصور الجزئية | ضعيف – نقاط المفاتيح المتفرقة تفشل عند التداخلات الصغيرة | قوي – يجد MASt3R تطابقات كثيفة في مناطق صغيرة جدًا |
| مشاركة الفهارس | غير ممكن | المركز المجتمعي عبر Hugging Face + حزم .netryx دون اتصال |
| المعلمة | الإفتراضي | الوظيفة |
|---|
INDEX_TARGET_DIM | 1024 | بُعد إخراج PCA. 512 = فهرس أصغر، دقة أقل قليلاً. 1024 = توازن جيد. |
MAX_PANOID_WORKERS | 16 | عدد الصور البانورامية التي يتم تنزيلها بالتوازي أثناء الفهرسة |
MAX_DOWNLOAD_WORKERS | 100 | اتصالات تنزيل البلاط المتزامنة (كل بانوراما = 8 بلاطات) |
EARLY_EXIT_INLIER_THRESHOLD | 450 | إذا وجد MASt3R هذا العدد من التطابقات الكثيفة، توقف عن البحث مبكرًا — إنها إصابة مؤكدة |
MAST3R_STAGE2_TOP_N | 500 | عدد مرشحي MegaLoc الذين سيتم تشغيلهم عبر MASt3R |