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 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.
Netryx 공식 홈페이지
Netryx 프로젝트 GitHub 저장소
더 읽어보기
-
Crucix: 전세계의 주요 데이터를 실시간으로 수집하고 분석하는 개인용 공개정보 인텔리전스 터미널(Personal Intelligence Terminal)
-
Meta Segment Anything Model 3 (SAM 3): 프롬프트 기반의 개방형 어휘(Open-Vocabulary) 기반 개념적 분할 모델
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()
