Netryx: 거리 사진 한 장으로 정확한 GPS 좌표를 추정하는 오픈소스 위치 추정 엔진

Netryx 프로젝트 소개

Netryx거리 수준의 사진 한 장을 입력하면 해당 위치의 정확한 GPS 좌표를 추정해주는 오픈소스 위치 추정(Geolocation) 엔진입니다. 기존의 역방향 이미지 검색(Reverse Image Search)이 인터넷에 업로드된 이미지를 매칭하는 방식이라면, Netryx는 체계적으로 수집된 거리 뷰(Street View) 파노라마와 매칭하여 인터넷에 노출된 적 없는 무작위 거리 사진도 50m 이내의 정확도로 위치를 추정할 수 있습니다. CosPlace, ALIKED, DISK, LightGlue, LoFTR 등 최신 컴퓨터 비전 모델 5종을 3단계 파이프라인으로 결합한 구조를 채택하고 있으며, 모든 처리가 사용자의 로컬 하드웨어에서 이루어지므로 외부 서버로 데이터가 전송되지 않습니다. AI 연구자이자 PrismX 개발자인 Sairaj Balaji가 제작하였으며, 조사 보도, 인권 모니터링, 재난 대응, 학술 연구 등 합법적인 OSINT 목적으로 설계되었습니다.

기존에 이러한 수준의 위치 추정 기능은 고가의 상용 SaaS 플랫폼에서만 사용할 수 있었습니다. Netryx는 동일한 핵심 파이프라인을 오픈소스로 구현하여 누구나 자신의 GPU에서 실행할 수 있도록 만들었습니다. NVIDIA GPU(CUDA), Apple Silicon(MPS), 그리고 CPU 환경 모두를 지원하며, Python 3.9 이상이면 설치가 가능합니다. 어려운 이미지(야간, 블러, 저화질)를 위한 Ultra Mode도 제공하여, LoFTR 기반의 밀집 매칭(Dense Matching)과 디스크립터 호핑(Descriptor Hopping) 기법으로 일반 모드에서 놓치는 매칭도 잡아낼 수 있습니다. 호스팅 버전인 netryx.live도 제공되지만, 컴퓨팅 제약으로 인해 오픈소스 버전 대비 약 30% 낮은 정확도를 보입니다.

Netryx 사용 데모 영상

|Missile strike geolocation — Qatar (Feb 2026)

Conflict monitoring — Paris protests

Blind geolocation from a random photo — Paris

Technical deep-dive: how the pipeline works

Netryx의 3단계 파이프라인

Netryx는 수백만 개의 후보에서 단일 정밀 매칭까지 점진적으로 범위를 좁히는 3단계 파이프라인을 사용합니다.

1단계: 전역 검색 (CosPlace)

업로드된 사진에서 시각적 장소 인식(Visual Place Recognition) 모델인 CosPlace를 사용하여 512차원의 "지문(Fingerprint)"을 추출합니다. 수평 반전된 이미지에서도 별도의 디스크립터를 추출하여 역방향 시점도 처리합니다. 두 디스크립터를 인덱스 내 모든 항목과 코사인 유사도(Cosine Similarity)로 비교하고, 하버사인 거리(Haversine Distance)를 사용한 반경 필터로 검색 영역을 한정합니다. 인덱스 크기와 무관하게 1초 이내에 상위 500~1,000개의 시각적으로 유사한 후보를 반환합니다. 이 과정은 단일 행렬 곱셈으로 처리되기 때문에 인덱스가 커져도 속도가 일정합니다.

2단계: 지역 기하 검증 (ALIKED/DISK + LightGlue)

1단계에서 "비슷해 보이는" 장소를 찾았다면, 2단계에서는 "같은 장소"임을 기하학적으로 증명합니다. 각 후보의 원본 파노라마를 다운로드한 뒤 70도, 90도, 110도 세 가지 화각(FOV)으로 직선 투영(Rectilinear) 크롭을 생성합니다. CUDA 환경에서는 ALIKED(1024 키포인트), MPS/CPU 환경에서는 DISK(768 키포인트)로 지역 특징점(Local Keypoint)을 추출하고, LightGlue로 깊은 특징 매칭(Deep Feature Matching)을 수행합니다. RANSAC 알고리즘으로 기하학적으로 일관된 대응점만 필터링하여 거짓 매칭을 제거하며, 가장 많은 검증된 인라이어(Inlier)를 가진 후보가 최적의 매칭이 됩니다. 이 과정은 하드웨어에 따라 300~500개 후보를 2~5분 내에 처리합니다.

3단계: 정밀화

초기 매칭의 정확도를 더욱 높이는 단계입니다. 상위 15개 후보에 대해 ±45도 범위에서 15도 간격으로 방향(Heading)을 보정하고, 50m 격자 셀 기반의 공간 합의(Spatial Consensus) 클러스터링을 적용합니다. 여러 후보가 한 지역에 모이면 단일 고득점 이상치(Outlier)보다 해당 클러스터를 우선하여 오탐률을 낮춥니다. 최종적으로 상위 매칭의 지리적 클러스터링과 고유성 비율(Uniqueness Ratio)을 평가하여 신뢰도 점수를 산출합니다.

Netryx의 Ultra Mode (선택)

야간, 블러, 저화질 등 어려운 이미지를 위한 고급 모드입니다. LoFTR는 키포인트 검출 없이 밀집 대응점을 찾는 검출기 무관(Detector-free) 매처로, ALIKED나 DISK가 어려워하는 저대비 장면에서도 효과적입니다. 디스크립터 호핑(Descriptor Hopping)은 초기 매칭이 약할 때(50 인라이어 미만) 매칭된 파노라마에서 새로운 CosPlace 디스크립터를 추출하여 인덱스를 재검색합니다. 이웃 탐색(Neighborhood Expansion)은 최적 매칭 주변 100m 내의 모든 파노라마를 추가 검색하여 정확도를 높입니다.

Netryx에서 사용 중인 모델

모델 목적 논문
CosPlace 시각적 장소 인식 (전역 디스크립터) CVPR 2022
ALIKED 지역 특징 추출 (CUDA 전용) IEEE TIP 2023
DISK 지역 특징 추출 (MPS/CPU) NeurIPS 2020
LightGlue 깊은 특징 매칭 ICCV 2023
LoFTR 검출기 무관 밀집 매칭 (Ultra Mode) CVPR 2021

Netryx 사용을 위한 하드웨어 요구사항

항목 최소 권장
OS macOS / Linux / Windows macOS (M1 이상) 또는 Linux + NVIDIA GPU
GPU VRAM 4GB 8GB 이상
RAM 8GB 16GB 이상
저장공간 10GB 50GB 이상 (인덱싱 영역 크기에 따라)
Python 3.9 이상 3.10 이상
백엔드 장치 비고
CUDA NVIDIA GPU 가장 빠름
MPS Apple Silicon WhisperX 정렬은 CPU 폴백
CPU 모든 장치 가장 느리지만 항상 동작

Netryx 설치 및 사용법

다음과 같이 GitHub 저장소를 복제(Clone)하여 설치할 수 있습니다:

# 저장소 복제
git clone https://github.com/sparkyniner/Netryx-OpenSource-Next-Gen-Street-Level-Geolocation.git
cd Netryx-OpenSource-Next-Gen-Street-Level-Geolocation

# 가상환경 생성 및 적용
python3 -m venv venv
source venv/bin/activate

# 의존성 설치
pip install -r requirements.txt
pip install git+https://github.com/cvg/LightGlue.git

# Ultra Mode 사용 시 (선택)
pip install kornia


설치 후에는, 다음과 같은 테스트 스크립트를 실행하여 사용해볼 수 있습니다:

python test_super.py

GUI가 실행되면 먼저 인덱스를 생성합니다. 관심 지역의 중심 좌표와 반경을 지정하면 Street View 파노라마를 수집하여 CosPlace 지문을 추출합니다. 인덱스 생성 후 거리 사진을 업로드하면 실시간 스캐닝 시각화와 함께 최종 GPS 좌표와 신뢰도 점수를 확인할 수 있습니다.

Apple의 M2 Max 맥북 기준으로 인덱싱에 걸리는 시간은 대략 다음과 같습니다:

반경 예상 파노라마 수 소요 시간 인덱스 크기
0.5 km ~500 30분 ~60 MB
1 km ~2,000 1~2시간 ~250 MB
5 km ~30,000 8~12시간 ~3 GB
10 km ~100,000 24~48시간 ~7 GB

라이선스

Netryx 프로젝트는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:house: Netryx 공식 홈페이지

https://netryx.live

:github: Netryx 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: