GeoAI 소개
GeoAI는 인공지능(AI), 특히 딥러닝(Deep Learning) 기술을 지리공간(Geospatial) 데이터 분석에 손쉽게 적용할 수 있도록 돕는 Python 라이브러리입니다. 이 프로젝트는 PyTorch와 같은 강력한 딥러닝 프레임워크를 기반으로 구축되었으나, 복잡한 신경망 코드를 직접 작성하지 않고도 위성 이미지나 항공 사진에서 객체를 추출하거나 변화를 탐지하는 작업을 수행할 수 있게 해줍니다. 데이터의 전처리부터 모델 학습, 그리고 결과 예측까지의 전체 워크플로우를 자동화하는 것이 핵심 목표입니다.
일반적인 이미지(JPG, PNG)와 달리, 위성 이미지나 드론 사진과 같은 지리공간 데이터(Raster)는 지구상의 실제 위치 정보를 담고 있습니다. 이 데이터는 보통 수 기가바이트(GB)에 달하는 거대한 크기를 가지며, 단순한 색상 정보(RGB) 외에도 적외선 등 다양한 파장 정보를 포함합니다. 따라서 일반적인 컴퓨터 비전 기술을 바로 적용하기 어렵습니다.
예를 들어, 거대한 위성 이미지를 GPU 메모리에 올리기 위해 작은 조각(Tile)으로 자르고, 분석 후 다시 원래의 좌표계(CRS, Coordinate Reference System)에 맞춰 합치는 과정은 매우 번거롭고 수학적인 지식을 요구합니다. GeoAI는 이러한 복잡한 '공간 데이터 엔지니어링' 과정을 추상화하여 개발자가 AI 모델링 자체에 집중할 수 있게 합니다.
최근 AI 트렌드는 데이터를 처음부터 학습시키는 감독 학습(Supervised Learning)에서, 이미 방대한 데이터를 학습한 거대 모델을 가져와 사용하는 파운데이션 모델(Foundation Model)로 이동하고 있습니다. GeoAI는 이 흐름을 반영하여 Meta의 SAM 2(Segment Anything Model 2) 와 같은 최근 모델을 GIS 데이터에 즉시 적용(Zero-shot)할 수 있는 기능을 제공합니다.
따라서 개발자는 복잡한 신경망을 설계할 필요 없이, (1) 텍스트나 클릭만으로 위성 이미지에서 객체를 추출하거나, (2) 필요한 경우에만 자신의 데이터로 모델을 미세 조정(Fine-tuning)하는 유연한 워크플로우를 가질 수 있습니다.
설치 시 주의사항 GeoAI와 같은 지리공간 라이브러리는 GDAL 등 C++ 기반 라이브러리와의 의존성 때문에 pip보다는 conda (또는 mamba) 등을 사용하여 가상 환경에서 설치하는 것을 추천합니다.
지리공간 AI(Geospatial AI)를 위한 용어 정리
다음은 지리공간 데이터 처리 분야에서 다루는 몇 가지 용어들입니다:
-
래스터(Raster) 데이터: 픽셀(화소)로 구성된 이미지 데이터입니다. 위성 사진, 드론 영상, 항공 사진 등이 이에 해당하며, 각 픽셀은 색상 값뿐만 아니라 고도, 온도 등의 정보를 가질 수 있습니다. GeoAI의 주 입력 데이터입니다.
-
벡터(Vector) 데이터: 점(Point), 선(Line), 면(Polygon)과 같은 기하학적 형태로 표현된 데이터입니다. 건물의 경계선, 도로망, 행정 구역 등이 이에 해당합니다. AI 분석의 최종 결과물은 보통 이 형태로 변환되어야 활용도가 높습니다.
-
좌표계(CRS, Coordinate Reference System): 둥근 지구를 평면 지도에 표현하기 위한 수학적 규칙입니다. GeoAI는 이미지 처리를 수행할 때 이 좌표 정보를 유지하거나 변환하여, 분석 결과가 실제 지도상의 위치와 정확히 일치하도록 보장합니다.
-
GeoTIFF: 위치 정보(좌표계, 투영법)가 메타데이터로 포함된 이미지 파일 형식입니다. 일반 JPG와 달리 지구상의 정확한 위치를 알 수 있어 GIS 분석의 표준으로 사용됩니다.
GeoAI의 주요 기능
GeoAI는 지리공간 데이터 분석을 위한 End-to-End 파이프라인을 제공합니다. 이는 크게 데이터 준비, 모델 학습, 그리고 예측 및 결과 변환의 세 단계로 나눌 수 있습니다.
차세대 파운데이션 모델 통합 (SAM 2 & Grounding DINO)
GeoAI는 별도의 데이터 라벨링 없이도 이미지를 분할할 수 있는 Zero-shot Learning을 지원하는 segment-geospatial (패키지명: samgeo) 라이브러리를 포함하고 있습니다. 즉, GeoAI는 Meta의 최신 모델인 SAM2 (Segment Anything Model 2)를 지원하여, 이미지뿐만 아니라 드론 영상(Video)에서도 객체를 연속적으로 추적하고 분할할 수 있습니다. 이는 기존 SAM보다 더 빠르고 정확하며, 움직이는 객체(예: 도로 위의 차량) 분석에 탁월합니다.
또한, Grounding DINO 모델과의 통합을 통해 텍스트 프롬프트 기반의 탐지 또한 가능합니다. 예를 들어, "모든 수영장을 찾아줘(Find all swimming pools)"와 같은 자연어 명령을 입력하면, Grounding DINO 모델이 객체의 위치(Bounding Box)를 찾고, SAM이 정밀한 경계선(Mask)을 그리는 협업 프로세스를 자동화합니다.
다음은 samgeo 패키지를 활용한, 텍스트로 객체를 찾는 예시 코드입니다:
from geoai.sam import SamGeo
# SAM 모델 초기화 (SAM 2 등 최신 모델 지정 가능)
sam = SamGeo(model_type="sam2_hiera_large", device="cuda")
# 텍스트 프롬프트로 마스크 생성 및 결과 저장
sam.generate_masks(
source="satellite_image.tif",
output="pools.tif",
text_prompt="swimming pool",
box_threshold=0.3,
text_threshold=0.25
)
더 상세한 예시 및 시각화 등의 예시는 공식 문서에서 제공하는 Semantic Segmentation with SAM and GeoAI 문서를 참고해주세요:

지리공간 데이터 전처리 자동화 (Data Preparation)
딥러닝 모델을 학습시키기 위해서는 거대한 위성 이미지를 학습 가능한 크기로 잘라내는 타일링(Tiling) 과정이 필수적입니다. GeoAI는 원본 이미지(Raster)와 정답지(Label/Mask)를 입력받아, 지정된 크기(예: 512x512 픽셀)로 이미지를 자동 분할합니다. 즉, GeoAI는 대용량 위성 이미지를 AI가 처리할 수 있는 형태로 만드는 과정(Engineering)을 완벽하게 지원합니다. 단순히 이미지를 자르는 것을 넘어, 객체가 잘리지 않도록 겹침(Overlap) 영역을 설정하고, 분석 후 다시 원래 좌표계로 병합(Merge)하는 지능형 타일링(Intelligent Tiling) 기능을 제공합니다. 이 과정에서 데이터가 없는 빈 영역을 자동으로 건너뛰거나, 데이터 증강(Augmentation)을 적용하여 학습 데이터셋을 효율적으로 생성합니다.
또한, 픽셀(Raster)로 추출된 결과를 GIS 소프트웨어(QGIS, ArcGIS)에서 바로 쓸 수 있는 벡터(Shapefile, GeoJSON)로 변환할 때, 경계선을 단순화(Simplify)하여 파일 용량을 줄이고 품질을 높이는 Raster-to-Vector 변환 기능을 함께 제공합니다.
간소화된 딥러닝 모델 학습 (Model Training)
GeoAI는 특정한 희귀 작물을 분류하는 것과 같이 파운데이션 모델이 해결하지 못하는 특수한 작업을 위해 PyTorch Lightning 기반의 학습 모듈을 제공합니다. 이러한 PyTorch Lightning 기반의 학습 모듈을 사용하면 복잡한 학습 루프(Training Loop)를 작성할 필요 없이 단 몇 줄의 코드로 모델을 학습시킬 수 있습니다.
U-Net이나 DeepLabV3+, FPN, LinkNet 등과 같은 검증된 세그멘테이션(Segmentation) 특화 모델을 쉽게 교체하며 실험할 수 있도록 지원하며, ImageNet 등의 사전 학습된(Pre-trained) 모델을 불러와 사용자의 데이터에 맞게 미세 조정(Fine-tuning)하는 전이 학습(Transfer Learning)도 쉽게 구현할 수 있습니다.
다음은 이러한 모델 학습 파이프라인 예시입니다:
from geoai.train import TrainModel
# 학습 파라미터 설정 및 모델 초기화
trainer = TrainModel(
data_dir='data/training_tiles', # 타일링된 데이터 경로
batch_size=8,
max_epochs=50,
lr=1e-4,
segmentation_model='unet', # 사용할 모델 아키텍처 (예: U-Net)
encoder_name='resnet34' # 백본(Backbone) 네트워크
)
# 모델 학습 시작
trainer.train_model()
다음은 태양관 패널(Solar Panel)을 찾도록 모델을 학습하는 Train a Model for Detecting Solar Panels 예시 문서입니다:
예측 및 벡터 데이터 변환 (Inference & Vectorization)
학습된 모델을 사용하여 새로운 위성 이미지에서 건물이나 도로 등을 탐지한 후, 그 결과를 다시 GIS(지리정보시스템) 소프트웨어에서 사용할 수 있는 형태로 변환합니다. AI 모델의 출력은 픽셀 단위의 이미지(Raster Mask)이지만, 실제 지도 제작이나 분석을 위해서는 점, 선, 면으로 이루어진 Shapefile, GeoJSON 벡터(Vector) 데이터(예:)가 필요합니다. GeoAI는 예측된 픽셀 덩어리를 벡터 폴리곤으로 자동 변환하고, 원래의 지리 좌표계에 정확히 매핑하여 저장해줍니다.
또한, 이러한 분석 결과를 정적인 파일로만 보는 것이 아니라, Leafmap 및 MapLibre와 연동하여 Jupyter Notebook 상에서 바로 지도로 시각화할 수 있습니다.
GeoAI 사용을 위한 영상 튜토리얼
GeoAI Made Easy: Learn the Python Package Step-by-Step (Beginner Friendly)
GeoAI Workshop: Unlocking the Power of GeoAI with Python
GeoAI Tutorials Playlist
라이선스
GeoAI 프로젝트는 MIT License 하에 배포되고 있습니다. 상업적 이용, 수정 및 배포가 자유로운 오픈 소스 소프트웨어입니다.
GeoAI 공식 홈페이지
GeoAI 프로젝트 GitHub 저장소
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()

