
세계에서 가장 정교한 거리 수준 이미지 지리 위치 소프트웨어
단일 이미지로 최첨단 AI 위치 추정
아이디어 • 작동 방식 • 시작하기 • 커뮤니티 허브 • 설치
당신은 사진을 가지고 있습니다. 어쩌면 비디오에서 캡처한 스크린샷일 수도 있습니다. 누군가 온라인에 올린 잘린 흐릿한 휴대폰 사진일 수도 있습니다. 상점 앞, 도로 구간, 건물 모퉁이만 보일 수도 있습니다. 당신은 그 사진이 정확히 어디서 찍혔는지 알고 싶습니다.
Netryx Astra V2가 그 질문에 답합니다.
이것은 단일 이미지를 가져와 거리 뷰 파노라마 데이터베이스와 비교하여 정확한 GPS 좌표를 찾는 오픈 소스 위치 추정 시스템입니다. 사진을 업로드하면 몇 분 안에 거리, 도시, 좌표를 몇 미터 오차 이내로 알려줍니다.
V2가 원래 Netryx(및 다른 도구들)와 다른 점은 매칭 파이프라인입니다. 우리는 이 프로젝트를 시작할 당시에는 존재하지 않았던 두 가지 모델을 사용하여 처음부터 모든 것을 재구축했습니다.
MegaLoc (CVPR 2025) — 장소 인식을 위한 가장 정확한 이미지 검색 모델로, 실내, 실외, 낮, 밤, 계절 변화를 포함한 6개 데이터셋에서 학습되었습니다. 올바른 동네를 찾아냅니다.
MASt3R (ECCV 2024) — 3D 인식 밀집 매칭기로, 픽셀 패턴뿐만 아니라 장면의 기하학적 구조를 이해합니다. 전통적인 매칭기로는 깨질 부분적이거나 크게 잘린 사진에서도 정확한 위치를 확인합니다.
그 결과, 이전 9단계 시스템을 대체하는 더 간단하면서도 더 정확한 3단계 파이프라인이 탄생했습니다.
원래 Netryx는 검색에 CosPlace를 사용하고, 검증에 DISK + LightGlue + LoFTR + RANSAC + 디스크립터 호핑 + 이웃 확장 스택을 사용했습니다. 작동은 했지만 취약했습니다. 많은 휴리스틱이 서로 겹쳐져 있었고, 각각은 이전 단계의 한계를 우회하기 위한 것이었습니다.
V2는 그 모든 것을 폐기했습니다. 다음은 무엇이 무엇을 대체했는지입니다.
| V1 (원본) | V2 (Astra) | |
|---|---|---|
| 후보 찾기 | CosPlace (ResNet-50, 512-dim) | MegaLoc (DINOv2 ViT-B/14, 8448-dim → PCA 1024) |
| 매칭 확인 | DISK + LightGlue + RANSAC | MASt3R 밀집 3D 매칭 |
| 예외 처리 | LoFTR 대체, 디스크립터 호핑, 이웃 확장, Ultra Mode | 공간적 합의 — 그게 전부입니다 |
| 파이프라인 총 단계 수 | 9+ | 3 |
| 부분 이미지 매칭 | 취약 — 희소 키포인트가 작은 중첩에서 실패 | 강력 — MASt3R가 작은 영역에서도 밀집 대응점 발견 |
| 인덱스 공유 | 불가능 | Hugging Face를 통한 커뮤니티 허브 + 오프라인 .netryx 번들 |
단순화는 미학적인 것만이 아닙니다. 단계가 적을수록 문제가 발생할 곳이 줄어들고, 검색 속도가 빨라지며, 유지 관리가 가능한 코드가 됩니다.
파이프라인은 세 단계로 구성됩니다. 과장이 아닙니다. 진정으로 세 단계뿐입니다.
Query Image
│
▼
┌─────────────┐
│ MegaLoc │ "이 장면은 도시의 어디일까?"
│ Retrieval │
└─────┬───────┘
│ 상위 500개 후보
▼
┌─────────────┐
│ MASt3R │ "이게 실제로 같은 장소일까?"
│ Matching │
└─────┬───────┘
│ 점수가 매겨진 후보
▼
┌─────────────┐
│ Spatial │ "어떤 매치 클러스터가 가장 신뢰할 수 있을까?"
│ Consensus │
└─────┬───────┘
│
▼
📍 GPS Coordinates
질의 이미지는 장면의 시각적 본질을 포착하는 8448차원 벡터인 간결한 디스크립터로 변환됩니다. 이는 PCA를 통해 1024차원으로 축소된 다음, 내적 유사도를 통해 인덱싱된 모든 위치와 비교됩니다.
또한 약간 확대된 중앙 크롭과 질의의 수평 뒤집힌 버전에 대한 디스크립터를 추출한 다음 결과를 병합합니다. 이는 질의가 인덱싱된 뷰와 다른 확대/축소 수준이거나 반대 방향을 향하는 경우를 처리합니다.
출력은 인덱스에서 시각적 유사성 순으로 정렬된 상위 500개 후보 위치입니다.
MegaLoc은 Gabriele Berton 연구실(CosPlace 및 EigenPlaces를 만든 동일 그룹)에서 나왔습니다. 그들의 최신 연구로, SF-XL, GSV-Cities, MSLS 및 랜드마크 검색 데이터를 동시에 학습했습니다. 실내, 실외, 도시, 시골, 낮, 밤 등 모든 벤치마크에서 일관되게 다른 검색 모델을 능가하는 모델은 없습니다.
500개 후보 각각에 대해 해당 거리 뷰 파노라마를 다운로드하고, 인덱싱된 방위각에서 자른 다음, MASt3R를 실행하여 질의와 크롭 사이의 밀집 픽셀 대응점을 찾습니다.
이 단계가 어려운 질의에 대한 마법이 일어나는 곳입니다. SuperPoint + LightGlue와 같은 전통적인 매칭기는 약 500-2000개의 희소 키포인트를 추출하여 매칭을 시도합니다. 질의 이미지가 데이터베이스 이미지와 20%만 중첩된다면, 공동으로 보이는 키포인트가 50개뿐일 수 있습니다. 이는 신뢰할 수 있는 매칭에 충분하지 않습니다.
MASt3R는 완전히 다르게 작동합니다. 매칭을 3D 재구성 문제로 취급하여 모든 픽셀에 대한 밀집 점 맵과 지역 특징 디스크립터를 예측합니다. 작은 중첩 영역에서도 수백 개의 신뢰할 수 있는 대응점을 생성합니다. 이는 2D 픽셀 패턴이 아닌 장면의 3D 구조를 이해하기 때문입니다.
Map-free localization 벤치마크(단일 참조 이미지, 시점 변화 최대 180°)에서 MASt3R는 이전 방법보다 30% 더 뛰어납니다. 이는 점진적인 개선이 아니라 세대적 도약입니다.
가장 높은 매치 점수를 가진 후보를 선택하는 문제는 오탐지가 존재한다는 것입니다. 5km 떨어진 두 개의 동일한 체인 레스토랑은 모두 높은 MASt3R 점수를 생성합니다. 소련 시대 아파트 블록 열은 모두 똑같아 보입니다.
공간적 합의가 이를 해결합니다. 검색 영역을 약 50미터 그리드 셀로 나누고 모든 좋은 매치를 지리적으로 클러스터링합니다. 각 셀은 해당 셀 및 이웃 셀의 모든 매치로부터 결합된 증거를 기반으로 점수를 얻습니다.
잘못된 위치에 200개의 인라이어가 있는 단일 이상값보다 올바른 위치에 각각 80-150개의 인라이어가 있는 5개 매치 클러스터가 더 높은 점수를 받습니다. 승리 클러스터의 최상의 매치가 최종 답변이 됩니다.
이것이 더 많은 유사 위치가 있는 더 큰 검색 반경에서도 정확도가 유지되는 이유입니다.
이 사진에서 볼 수 있듯이, 전혀 단서가 없습니다. 단지 작은 잘린 부분일 뿐입니다. 일반적인 OSINT는 여기서 절대 실패할 것입니다. 그러나 Netryx Astra는 메타데이터나 사전 단서 없이 완전히 로컬에서 실행하여 정확한 좌표까지 위치를 추정했습니다.
건물의 작은 잘린 사진, 모스크바에서 1km 반경 내 위치를 찾는 데 그것만으로 충분했습니다.
이것이 우리가 가장 기대하는 부분입니다.
도시를 인덱싱하는 데는 수시간의 계산 시간이 필요합니다. 모든 사용자가 같은 도시를 독립적으로 인덱싱하는 것은 낭비입니다. 그래서 공유 시스템을 구축했습니다. 한 사람이 모스크바를 인덱싱하고 결과를 업로드하면, 다른 모든 사람이 몇 분 안에 다운로드할 수 있습니다.
가장 빠른 방법입니다. 다른 사람이 이미 인덱싱 작업을 완료했습니다. 당신은 사전 구축된 인덱스를 다운로드하기만 하면 됩니다.
모드를 검색으로 설정하고, Run Search를 클릭한 후 질의 이미지를 선택하세요. 지도 좌표와 검색 반경은 인덱스 메타데이터에서 자동으로 채워집니다. 이 기능은 커뮤니티가 기여하고 서로 지원할 때만 작동합니다. 지역을 인덱싱했다면 업로드해주시면 모두에게 큰 도움이 됩니다.
중요 참고: PCA 피팅 중 응용 프로그램 메모리 부족으로 인해 응용 프로그램이 멈추는 경우, 터미널에서 이 명령어를 사용하세요! python3 -c "from test_super import build_compact_index; build_compact_index()"
아직 아무도 하지 않은 도시나 지역을 인덱싱하고 싶으신가요? 앱이 파노라마 다운로드, 디스크립터 추출, 검색 인덱스 구축 등 모든 것을 처리합니다.
python test_super.py
내부적으로 일어나는 일: 앱이 반경 내 점들의 그리드를 생성하고, 사용 가능한 모든 파노라마 위치를 찾고, 각 파노라마를 타일로 다운로드하여 이어붙이고, 각 파노라마를 여러 방위각으로 자르고, 각 크롭에 대해 MegaLoc 디스크립터를 추출하고, 모든 디스크립터에 PCA를 피팅하고, 간결한 검색 인덱스를 구축합니다.
친구, Discord 서버 또는 다운로드 링크에서 .netryx 파일을 받았나요? 앱에서 📥 Import Index를 클릭하고 파일을 선택하면 검색할 준비가 완료됩니다. 계정이 필요 없고, 인터넷도 필요 없습니다. 완전히 오프라인 워크플로입니다.
인덱스는 Hugging Face Hub에 공개 데이터셋으로 호스팅됩니다. 누구나 계정 없이 다운로드할 수 있습니다. 기여(업로드)하려면 무료 Hugging Face 계정이 필요합니다.
GUI에서: 🌐 Community Hub 버튼을 클릭하여 사용 가능한 인덱스를 탐색, 검색 및 다운로드하세요. ⬆ Upload Current Index를 클릭하여 자신의 인덱스를 공유하세요.
인덱스 번들은 .netryx 형식을 사용합니다. ZIP 아카이브로 다음을 포함합니다:
내보낼 때 지리적 필터링이 자동으로 수행됩니다. 인덱스에 모스크바 + 파리 + 도쿄가 포함되어 있지만 "모스크바 1km"를 내보내면 모스크바 항목만 포함됩니다. 수동 작업 없이 더 큰 인덱스에서 특정 영역을 잘라낼 수 있습니다.
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