DrishtiPath: 주변 시야를 통한 오프라인 AI 내비게이션
요약
DrishtiPath는 GPS 신호가 불안정한 대규모 야외 행사장에서 주변 시야를 활용하여 위치를 파악하는 AI 내비게이션 시스템입니다. 사용자가 랜드마크 사진을 찍으면, 오픈 웨이트 AI 모델(Gemma)이 이를 분석해 현재 위치를 식별하고 의료 캠프나 정보 센터 같은 유용한 주변 시설 정보를 제공합니다.
핵심 포인트
- GPS가 불안정한 대규모 야외 환경에 최적화된 내비게이션 솔루션입니다.
- 사용자가 사진 촬영을 통해 랜드마크를 인식시켜 위치를 파악하는 방식입니다.
- 오픈 웨이트 모델인 Gemma를 활용하여 로컬에서 이미지 분석 및 위치 식별이 가능합니다.
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
DrishtiPath: 주변 시야를 통한 오프라인 AI 내비게이션
GPS는 훌륭하지만, 사람이 붐비는 행사장에서 임시 도로, 변경되는 출입구, 수천 명의 인파, 그리고 불안정한 연결 상태에 놓이면 그렇지 않습니다.
이것은 저에게 다른 방식의 내비게이션에 대해 생각하게 했습니다:
주변을 둘러보는 것만으로 휴대폰이 현재 위치를 파악할 수 있다면 어떨까?
그 아이디어가 DrishtiPath가 되었습니다.
사용자가 지도만 쳐다보게 하는 대신, DrishtiPath는 짧은 상호작용을 중심으로 설계되었습니다:
보기 → 촬영 → 식별 → 방향 받기 → 계속 걷기.
제가 구축한 것
DrishtiPath는 쿰브 멜라(Kumbh Mela)와 같은 대규모 야외 모임에 사용되는 AI 기반 시각 내비게이션 시스템입니다.
사용자는 주변의 랜드마크, 게이트, 가트(ghat), 도움 부스, 사원 지역 또는 다른 식별 가능한 장소의 사진을 찍을 수 있습니다.
오픈 웨이트(open-weight) AI 모델이 이미지를 분석하여 위치를 파악하려고 시도합니다.
랜드마크가 인식되면, DrishtiPath는 다음과 같은 유용한 주변 장소를 보여줄 수 있습니다:
- 의료 캠프 (Medical camps)
- 경찰 도움 부스 (Police help booths)
- 급수대 (Water points)
- 정보 센터 (Information centres)
- 주차장 (Parking areas)
- 중요 게이트 (Important gates)
- 가트 및 사원 지역 (Ghats and temple areas)
몇 분 동안 지도만 쳐다보는 대신, 이 상호작용은 단 몇 초 만에 완료되도록 의도되었습니다.
기본적인 흐름
See landmark
↓
Take photo
...
프로토타입을 위해 저는 **나시크-트림바케슈와르 쿰브(Nashik–Trimbakeshwar Kumbh)**에 초점을 맞추고 다음과 같은 장소를 포함하는 소규모 랜드마크 데이터셋을 만들었습니다:
- Ramkund Ghat
- Panchavati Entry Gate
- Tapovan
- Kalaram Mandir area
- Sadhugram Entry
- Trimbakeshwar Temple area
- Information Centre
- Medical camps
- Police help booths
- Parking areas
- Water points
또한 이 인터페이스는 사용자가 다음 사이를 전환할 수 있도록 합니다:
- Prayagraj Kumbh
- Haridwar Kumbh
- Ujjain Simhastha
- Nashik–Trimbakeshwar Kumbh
현재 프로젝트는 MVP(Minimum Viable Product)이지만, 이 아이디어는 GPS 좌표만으로는 전체 이야기를 전달하지 못할 수 있는 환경에서 사람들의 이동을 돕는 실제 문제에 기반하여 설계되었습니다.
데모 (Demo)
데모 작동 방식
- 쿰브(Kumbh) 위치를 선택합니다.
- 주변의 랜드마크 이미지를 업로드하거나 촬영합니다.
- DrishtiPath가 로컬에서 실행되는 Gemma 모델로 이미지를 전송합니다.
- Gemma가 시각적 장면을 분석합니다.
- 응답이 알려진 랜드마크와 대조됩니다.
- DrishtiPath가 감지된 위치를 표시합니다.
- 주변의 유용한 시설들이 계산됩니다.
- 사용자는 간단한 내비게이션 정보를 얻습니다.
예시:
감지된 랜드마크:
Ramkund Ghat
...
목표는 사용자가 파란 점을 계속 따라가도록 만드는 것이 아닙니다.
궁극적인 목표는 다음 질문에 답하는 것입니다:
"내가 어디에 있고, 다음에 어디로 가야 하는가?"
…그리고 나서 그들이 휴대폰을 주머니에 다시 넣게 하는 것입니다.
데모
실시간 데모 (Live Demo):
https://drishtipath.onrender.com/
코드 (Code)
이 프로젝트는 GitHub에서 오픈 소스로 공개되었습니다:
https://github.com/dev-yashpawar/DrishtiPath
저장소에는 프로토타입에 사용된 웹 애플리케이션, 백엔드 통합, 랜드마크 데이터 및 로컬 AI 통합 기능이 포함되어 있습니다.
구축 과정 (How I Built It)
DrishtiPath의 핵심은 클라우드 AI API가 아닙니다.
이는 Ollama를 사용하여 로컬에서 실행되는 오픈 가중치(open-weight) Gemma 모델을 사용합니다.
제 로컬 개발 환경 설정에서는 다음을 사용했습니다:
OLLAMA_URL=http://127.0.0.1:11434
OLLAMA_MODEL=gemma4:e2b
아키텍처 (Architecture)
┌──────────────────┐
│ 사용자 │
│ 카메라 / 업로드 │
...
시각적 내비게이션이 필요한 이유?
전통적인 내비게이션은 보통 좌표로 시작합니다.
DrishtiPath는 또 다른 신호, 즉:
사용자가 실제로 무엇을 볼 수 있는가?
만약 누군가가 알아볼 수 있는 문, 사원, 가트(ghat), 부스, 또는 입구 근처에 서 있다면, 그 시각적 정보가 위치를 좁히는 데 도움을 줄 수 있습니다.
장기적으로 저는 다음을 결합하고 싶습니다:
GPS
+
시각적 랜드마크 인식
...
이것은 도로, 바리케이드, 구역 및 출입구가 변경될 수 있는 임시 이벤트 환경에 특히 흥미롭습니다.
Ollama를 사용한 로컬 AI
Ollama 덕분에 모델을 제 개발 머신에서 직접 실행할 수 있었습니다.
이전에는 다음과 같은 과정을 거쳤습니다:
Image
↓
Internet
...
DrishtiPath는 다음과 같이 사용할 수 있습니다:
Image
↓
Local Ollama server
...
이것은 단순히 아키텍처만 바꾸는 것이 아닙니다.
어떤 종류의 제품을 만들 수 있는지까지 바꿉니다.
랜드마크 매칭
저는 AI 모델이 임의의 장소 이름을 지어내기를 원하지 않습니다.
따라서 모델의 결과는 통제된 내비게이션 파이프라인의 일부로 사용됩니다.
개념적으로:
const detectedLandmark = await analyzeImage(image);
const landmark = landmarks.find(
...
알려진 위치에는 다음과 같은 정보가 포함되어 있습니다:
{
"name": "Ramkund Ghat",
"type": "ghat",
...
이를 통해 애플리케이션은 두 가지 작업을 분리할 수 있습니다:
AI
이미지를 이해합니다.
애플리케이션 로직
어떤 알려진 랜드마크와 시설을 보여줄지 결정합니다.
이러한 분리는 AI 모델이 비상 내비게이션의 진실 데이터베이스로 신뢰되어서는 안 되기 때문에 중요합니다.
지도 및 주변 시설
랜드마크를 식별한 후, 애플리케이션은 좌표를 사용하여 주변 시설을 계산할 수 있습니다.
두 지점의 경우:
Current landmark
↓
Calculate distance
...
이는 AI가 단순히 사진을 설명하는 문단을 생성하는 것 이상으로 유용하게 만듭니다.
결과는 실제 행동이 됩니다:
의료 지원은 그 방향으로 120미터입니다.
오늘날의 오프라인이란 무엇인가?
저는 **오프라인(offline)**이라는 단어에 신중하고 싶었습니다.
AI 추론(inference)은 모든 이미지를 독점 클라우드 AI 서비스로 전송하지 않고 Ollama를 통해 로컬에서 실행될 수 있습니다.
현재의 MVP는 개발 데이터 및 지도 리소스와 같은 것을 위해 여전히 웹 기술과 일부 온라인 인프라를 사용합니다.
완전히 오프라인인 프로덕션 버전은 추가적으로 다음이 필요할 것입니다:
- 다운로드 가능한 오프라인 지도 패키지
- 로컬에 저장된 랜드마크 데이터베이스
- 캐시된 시설 정보
- 온디바이스 또는 로컬 네트워크 추론(inference)
- 연결이 복구될 때 동기화(Sync)
따라서 현재 프로젝트는 가장 중요한 부분, 즉 로컬 AI 랜드마크 이해를 먼저 보여줍니다.
이 아키텍처는 이후 나머지 네트워크 의존성을 점진적으로 제거할 수 있습니다.
Open Innovation은 왜 중요할까요?
이것이 저에게 있어 프로젝트에서 가장 흥미로운 부분이었습니다.
저는 DrishtiPath를 폐쇄형 비전 API에 연결할 수도 있었습니다.
기술적으로는 아마 더 쉬웠을 것입니다.
하지만 이는 이 프로젝트가 설계된 정확한 시나리오 자체를 약화시킬 것입니다.
1. AI 작동 여부가 연결성에 좌우되어서는 안 됩니다
대규모 모임은 이동통신망에 엄청난 부담을 줄 수 있습니다.
모든 이미지를 클라우드 모델로 전송하는 것에 완전히 의존하는 내비게이션 비서가 가장 신뢰하기 어려워지는 순간이 바로 환경이 가장 어려운 순간일 때입니다.
오픈 가중치(open-weight) 모델을 사용하면 추론을 사용자에게 훨씬 더 가까운 곳에서 수행할 수 있습니다.
2. 이미지가 사용자 환경을 벗어날 필요는 없습니다
내비게이션 사진에는 다음이 포함될 수 있습니다:
- 얼굴(Faces)
- 가족(Families)
- 차량(Vehicles)
- 주변 환경(Surroundings)
- 위치 단서(Location clues)
많은 AI 애플리케이션에서 이러한 데이터를 다른 회사의 서버에 업로드하는 것은 정상으로 받아들여집니다.
그럴 필요가 없습니다.
로컬 추론은 개발자에게 또 다른 아키텍처 옵션을 제공합니다.
3. 모델을 교체할 수 있습니다
DrishtiPath는 특정 공급업체에 영구적으로 의존하도록 설계되지 않았습니다.
AI 레이어는 결국 다음과 같이 변경될 수 있습니다:
Gemma
에서:
Fine-tuned Gemma
또는 다른 역량 있는 오픈 가중치 비전 모델로.
나머지 내비게이션 시스템은 처음부터 다시 구축할 필요가 없습니다.
이러한 유연성은 오픈 프로젝트에 중요합니다.
4. 전문화된 모델 구현이 가능해집니다
범용 AI 모델은 세상에 대해 알고 있습니다.
하지만 Kumbh 내비게이션 모델은 세상의 모든 것을 알 필요는 없습니다.
그것은 다음과 같은 것들을 인식하는 데 예외적으로 뛰어나야 합니다:
Ghats
입구 게이트
임시 구역
...
오픈 모델을 사용하면, 미래 버전은 이 환경에 맞춰 최적화되거나 미세 조정(fine-tuned)될 수 있습니다.
모델이 완전히 폐쇄된 블랙박스인 경우에는 훨씬 더 어렵습니다.
5. AI는 경험 속에 사라져야 한다
제가 의도적으로 만들지 않은 한 가지는 또 다른 챗봇이었습니다.
사용자가 의료 캠프를 찾는 동안 AI와 열 건의 대화를 나눌 필요가 없습니다.
그들은 다음을 할 수 있어야 합니다:
Point
Tap
Understand
...
AI는 인터페이스가 아닙니다.
AI는 경험 아래에 깔린 인프라입니다.
이것이 아마 DrishtiPath의 제가 가장 좋아하는 부분일 것입니다.
겪었던 어려움들
멀티모달 모델을 로컬에서 실행하는 과정은 클라우드 AI가 왜 인기 있게 되었는지 다시금 생각하게 했습니다.
로컬 AI에는 실제 제약 사항들이 있습니다.
제가 직면했던 문제들은 다음과 같습니다:
- 모델 크기 (Model size)
- RAM 제한 (RAM limitations)
- 취약한 하드웨어에서의 느린 추론(inference)
- Ollama 설정
- 백엔드와 Ollama 연결성 (Backend-to-Ollama connectivity)
- 예측 가능한 구조화된 모델 응답 얻기
- 시각적으로 유사한 위치 구분하기
예를 들어, 모델에게 다음과 같이 질문하는 것은 충분하지 않습니다:
여기가 어디인가요?
훨씬 더 좋은 접근 방식은 컨텍스트를 제공하고 작업을 제한하는 것입니다:
당신은 나식-트림바케슈와르(Nashik-Trimbakeshwar) 쿰브(Kumbh) 순례 내비게이션 시스템 내부의 랜드마크를 식별하고 있습니다.
...
이것은 통제되지 않은 출력 양을 줄였고, 애플리케이션이 응답을 처리하기 더 쉽게 만들었습니다.
또한 저에게 중요한 것을 가르쳐 주었습니다:
AI 모델을 사용하는 것은 쉽습니다. AI 모델 주변에 신뢰할 수 있는 시스템을 구축하는 것이 어려운 부분입니다.
다음에 만들고 싶은 것들
DrishtiPath는 여전히 프로토타입입니다.
다음 버전에서는 다음 사항들에 초점을 맞출 것입니다:
GPS + 시각 융합 (visual fusion)
비전 모델에 질문하기 전에 GPS를 사용하여 후보군을 좁힙니다.
500개의 랜드마크를 확인하는 대신:
GPS 반경: 500 미터
가능한 랜드마크:
...
이것은 시각적 인식을 상당히 더 신뢰할 수 있게 만들 것입니다.
완전 오프라인 지도 (Fully offline maps)
방문하기 전에 이벤트 지역의 지도를 다운로드합니다.
음성 내비게이션 (Voice navigation)
읽는 대신 다음과 같이 들을 수 있습니다:
경찰 도움 부스가 북동쪽으로 180미터에 있습니다.
다국어 내비게이션 (Multilingual navigation)
Kumbh 배포를 위해서는 다음 순서로 우선순위를 설정하겠습니다:
- 마라티어 (Marathi)
- 힌디어 (Hindi)
- 영어 (English)
비상 모드 (Emergency mode)
한 번의 탭으로 다음 항목들을 우선순위화할 수 있습니다:
- 경찰 (Police)
- 의료 지원 (Medical assistance)
- 실종자 센터 (Lost-person centres)
- 비상구 (Emergency exits)
자원봉사자 모드 (Volunteer mode)
행사 자원봉사자는 일반 방문객 모드에서는 얻을 수 없는 추가적인 운영 정보(operational information)를 받을 수 있습니다.
실시간 관리자 업데이트 (Real-time admin updates)
대규모 행사 중에는 임시 도로와 시설이 빠르게 변경될 수 있습니다.
관리 시스템(admin system)은 이러한 위치들을 업데이트할 수 있으며, 기기들은 연결성이 확보되는 즉시 동기화됩니다.
"Touch Grass"가 이 프로젝트에 의미하는 바
많은 소프트웨어는 화면 사용 시간을 늘리도록 설계되었습니다.
DrishtiPath는 그 반대를 시도합니다.
이상적인 성공 세션은 아마 10초 미만일 것입니다:
DrishtiPath 열기
사진 찍기
...
걷는 동안 DrishtiPath를 계속 응시해야 한다면, 저는 경험을 올바르게 구축하지 못한 것입니다.
화면은 여정에서 가장 짧은 부분이어야 합니다.
진짜 제품은 화면이 꺼진 후에 일어나는 모든 것입니다.
수상 부문 (Prize Categories)
저는 DrishtiPath를 다음 부문에 출품합니다:
Gemma 4의 최고의 활용 사례 (Best Use of Gemma 4)
Gemma는 애플리케이션 위에 추가된 선택적 채팅봇이 아닙니다. 로컬 시각 이해(Local visual understanding) 기능은 DrishtiPath가 가능하게 만드는 핵심 메커니즘 중 하나입니다.
최고의 오픈 소스 AI 프로젝트 (Best Open-Source AI Project)
이 프로젝트는 개방형 가중치(open-weight) AI가 실제 내비게이션을 위한 로컬적이고, 사적이며, 적응 가능한 지능을 가능하게 한다는 아이디어를 중심으로 구축되었습니다.
최종 생각 (Final Thoughts)
Hacktoberfest는 보통 저에게 코딩에 대해 생각하게 만듭니다.
이번 도전은 제가 코드가 어디에서 실행되는지와 사용자가 화면을 닫았을 때 무슨 일이 일어나는지에 대해 더 많이 생각하게 했습니다.
DrishtiPath는 간단한 질문에서 시작되었습니다:
AI 내비게이션이 단순히 좌표를 아는 것을 넘어, 내가 보는 것을 이해할 수 있을까?
프로토타입은 GPS의 대체재가 아닙니다.
그리고 AI 비전이 모든 랜드마크를 완벽하게 인식할 것이라고 주장하지도 않습니다.
흥미로운 기회는 여러 개의 불완전한 신호들을 결합하는 것입니다:
Visual understanding
+
GPS
...
이를 통해 개별적으로 사용되는 어떤 것보다 더 유용한 무언가를 만들어낼 수 있습니다.
그리고 이 지능이 오픈 웨이트 모델(open-weight model)을 사용하여 실행될 수 있기 때문에, 그 시스템은 눈앞의 세상을 이해하기 위해 반드시 멀리 떨어진 서버에 의존할 필요가 없습니다.
제가 계속 탐구하고 싶은 방향이 바로 이것입니다.
화면보다 주변 환경을 더 많이.
그것이 DrishtiPath입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기