- Mozilla.ai는 OpenStreetMap 데이터와 위성 이미지를 연결해 지도 객체를 찾고, 사람이 검증한 뒤 다시 기여하는 OpenStreetMap AI Helper Blueprint를 공개함
- 이 방식은 LLM/VLM 대신 YOLOv11 객체 탐지와 SAM2 세그멘테이션을 분리해, 위치 식별과 폴리곤 윤곽 생성을 각각 맡김
- 수영장 매핑 예시는
leisure=swimming_pool태그와 Mapbox 타일로 학습 데이터를 만들고, 결과를 Hugging Face Hub에 올리는 흐름을 보여줌 - 추론 과정에서는 관심 지점 주변 타일을 합친 뒤 기존 OpenStreetMap 객체와 비교해 중복 후보를 제외하고, 새 후보만 사람이 확인함
- 완전 수동 작업은 1분에 수영장 2~3개 수준이지만, 이 Blueprint는 최적화되지 않은 UX에서도 10~15개까지 처리해 약 5배 빠름
OpenStreetMap 데이터를 AI 매핑에 쓰는 이유
- Mozilla.ai는 개방 협업 커뮤니티에서 AI가 반복적이고 느린 작업을 줄일 수 있다고 보고 OpenStreetMap AI Helper Blueprint를 공개함
- 목표는 AI가 지도 제작자를 대체하는 것이 아니라, 대상을 찾고 폴리곤을 그리는 시간을 줄이면서 사람 검증을 마지막 단계로 유지하는 것임
- 사람이 계속 맡아야 하는 핵심 작업은 생성된 지도 데이터가 실제로 맞는지 확인하는 과정임
- OpenStreetMap은 도로, 산책로, 카페, 철도역 같은 데이터를 매퍼 커뮤니티가 만들고 유지하는 개방형 편집 지도임
- OpenStreetMap은 가장 완전한 개방형 지도 데이터베이스 중 하나이며, 위성 이미지 같은 다른 소스와 결합하면 AI 모델 학습 데이터로 활용할 수 있음
LLM 대신 경량 컴퓨터 비전 모델을 선택함
- OpenStreetMap의 많은 Map Features는 폴리곤 형태의 영역으로 표현됨
- 사람이 폴리곤을 찾고 직접 그리는 일은 시간이 많이 걸리지만, 충분한 데이터가 있으면 컴퓨터 비전 모델을 이 작업에 맞춰 학습시킬 수 있음
- Blueprint는 최신 비LLM 모델을 두 단계로 나눠 사용함
- YOLOv11과 SAM2는 가볍고 빠르며 로컬 실행에 적합함
- 두 모델의 결합 가중치는 250MB 미만임
- 비교 대상으로 언급된 SmolVLM은 4.5GB임
Blueprint의 3단계 흐름
-
1단계: OpenStreetMap에서 객체 탐지 데이터셋 만들기
- OpenStreetMap 데이터를 가져와 위성 이미지와 결합하고, 학습에 맞는 형식으로 변환함
- 직접 실행 가능한 Create Dataset Colab이 제공됨
- OpenStreetMap 데이터 수집에는 두 API가 쓰임
- Nominatim API: 사용자가 관심 영역을 유연하게 선택하도록 함
- Overpass API: 선택한 영역 안에서 특정 태그에 해당하는 폴리곤을 다운로드함
- 수영장 예시에서는 학습에 Galicia, 검증에 Viana do Castelo를 사용함
- 대상 태그는 leisure=swimming_pool이며, location=indoor가 함께 붙은 대상은 제외함
- 폴리곤 다운로드 뒤 zoom level을 선택하고, 해당 줌 레벨에서 폴리곤이 포함된 타일을 식별함
- Mapbox의 Static Tiles API로 타일을 내려받음
- 위도·경도 좌표의 폴리곤은 각 타일 기준 픽셀 좌표의 바운딩 박스로 변환되고 Ultralytics YOLO format으로 저장됨
- 완성된 데이터셋은 Hugging Face Hub에 업로드되며, 예시 데이터셋은 mozilla-ai/osm-swimming-pools임
-
2단계: 객체 탐지 모델 파인튜닝
- 데이터셋 형식이 준비되면 YOLOv11 또는 Ultralytics가 지원하는 다른 모델을 파인튜닝할 수 있음
- 직접 실행 가능한 Finetune Model Colab이 제공됨
- 사용 가능한 하이퍼파라미터는 Ultralytics의 학습 설정 문서에서 확인 가능함
- 학습된 모델도 Hugging Face Hub에 업로드됨
- 예시 모델은 mozilla-ai/swimming-pool-detector임
-
3단계: OpenStreetMap에 기여하기
- 파인튜닝된 객체 탐지 모델로 여러 타일에 대해 추론을 실행함
- 직접 실행 가능한 Run Inference Colab이 제공됨
- 예시 수영장 탐지기는 HuggingFace Demo에서 사용해볼 수 있음
- 추론 과정에는 몇 가지 사람 상호작용이 필요함
- 먼저 지도에서 관심 지점을 선택함
- 선택된 지점 주변으로
margin인자에 따라 바운딩 박스가 계산됨 - OpenStreetMap에서 기존 관심 객체를 다운로드함
- Mapbox에서 모든 타일을 내려받아 합친 뒤 스택 이미지로 만듦
- 스택 이미지는 겹치는 타일로 다시 나뉨
- 각 타일에는 YOLOv11 객체 탐지 모델이 실행됨
- 수영장 같은 관심 객체가 탐지되면 바운딩 박스를 SAM2에 전달해 세그멘테이션 마스크를 얻음
- 예측된 폴리곤은 OpenStreetMap에서 내려받은 기존 폴리곤과 비교돼 중복 업로드를 피함
- 새 객체로 식별된 후보는 하나씩 표시되고, 사용자가 수동으로 검증·필터링함
- 사용자가 유지하기로 선택한 객체는 하나의 changeset으로 OpenStreetMap에 업로드됨
성능과 실무적 함의
- OpenStreetMap AI Helper Blueprint는 AI가 사람의 지도 기여를 강화하면서도 사람 검증을 중심에 둘 수 있음을 보여줌
- 완전 수동 프로세스에서는 1분에 수영장 2~3개를 매핑할 수 있음
- Blueprint를 사용하면 UX가 최적화되지 않은 상태에서도 같은 시간에 수영장 10~15개를 매핑할 수 있어 약 5배 많음
- 고품질 OpenStreetMap 데이터가 있으면 YOLOv11 같은 모델을 학습시켜 객체 탐지를 수행하게 만들 수 있음
- 모든 문제에 LLM을 적용할 필요는 없으며, 지도 기능 탐지와 폴리곤 생성에는 경량 컴퓨터 비전 조합이 더 직접적인 선택이 될 수 있음
- 다른 지도 기능에 대해 모델을 학습시키거나 저장소에 기여하고 싶다면 OpenStreetMap AI Helper Blueprint를 사용할 수 있음
- 공개된 다른 Blueprint는 Blueprints Hub에서 확인 가능함