GIS

QGIS GeoAI 플러그인 - (4) DeepForest (수관 탐지) 기능 소개

유병혁 2026. 2. 25. 11:11

안녕하세요! 지난 글에서 Segment Anything Model 3 (SAM 3) 기능을 살펴보았는데요, 이번에는 GeoAI 플러그인이 제공하는 또 다른 강력한 도구인 DeepForest를 활용해 항공 사진이나 위성 영상에서 수관(Tree Crown)을 자동으로 탐지하는 방법을 소개해 드리겠습니다.

 

DeepForest는 딥러닝 기술을 활용해 수만 그루의 나무를 단 몇 번의 클릭만으로 찾아낼 수 있게 해주는 패키지입니다. 이전 SAM 3가 범용적인 객체 분할에 강점이 있다면, DeepForest는 산림 분석과 수목 탐지에 특화된 모델이라 할 수 있습니다.

 

QGIS Plugin - GeoAI

QGIS Plugin for GeoAI A QGIS plugin that brings the geoai models into dockable panels (Moondream VLM, segmentation training/inference, SamGeo, DeepForest) so you can keep QGIS as your main workspace while experimenting with GeoAI. Quick Start Create a Pixi

opengeoai.org

0. 시작하기 전에: DeepForest란?

DeepForest는 파이토치(PyTorch) 기반의 오픈소스 라이브러리로, 사전 학습된 모델을 통해 원격 탐사 영상에서 개별 나무의 위치를 박스 형태로 검출해 줍니다. 특히 수백 헥타르에 달하는 넓은 지역의 수목 분포를 파악하거나, 수량 조사를 자동화할 때 매우 효율적입니다.

1. DeepForest 설치하기 (주의사항)

DeepForest는 GeoAI 패키지에 기본 포함되어 있지 않아 별도의 설치 과정이 필요합니다. 특히 라이브러리 간의 버전 충돌이 발생할 수 있으니 아래 명령어를 순서대로 실행하는 것이 좋습니다.

  • 설치 명령어: pixi 환경의 터미널에서 다음을 입력합니다.
pixi run pip install deepforest

 

설치 명령어를 실행하다 보면 아래 이미지와 같이 터미널에 빨간색 에러 메시지(ERROR: pip's dependency resolver...)가 여러 줄 나타날 수 있습니다.

 

이는 DeepForest가 요구하는 특정 버전의 라이브러리(numpy, transformers 등)를 설치하는 과정에서 기존에 설치된 다른 패키지들과 의존성 충돌이 발생했다는 안내입니다. 하지만 플러그인의 핵심 기능을 실행하는 데는 지장이 없으므로, 이 메시지들은 무시하고 진행하셔도 됩니다.

 

버전 충돌 해결: 설치 과정에서 numpy 버전이 낮아질 경우, 다른 모델(SAM 등)과 충돌이 날 수 있습니다. 이럴 때는 다시 버전을 맞춰주는 작업이 필요합니다.

pixi run pip install -U numpy transformers

 

본격적인 분석에 앞서, DeepForest 패키지에 기본으로 포함된 샘플 데이터를 활용해 보겠습니다. 별도의 데이터를 준비할 필요 없이 설치된 경로에서 바로 가져올 수 있어 편리합니다.

  • 데이터 파일명: OSBS_029.tif
  • 데이터 경로: C:\Users\사용자이름\Documents\geo\.pixi\envs\default\Lib\site-packages\deepforest\data

2. 기능 실행 및 모델 로드

설치가 완료되었다면 QGIS의 GeoAI 툴바에서 나무 모양의 아이콘을 클릭하여 DeepForest 패널을 활성화합니다.

  • Model 탭 설정: 드롭다운 메뉴에서 weecology/deepforest-tree을 선택한 후 'Load Model' 버튼을 누릅니다. 모델 파일(약 150~200MB)이 다운로드되며 GPU 또는 CPU에 로드됩니다.

 

지원되는 사전 학습 모델(Pretrained Models)

DeepForest 패널의 Model 탭에서는 수관 탐지뿐만 아니라 다양한 목적에 특화된 모델들을 선택할 수 있습니다. 현재 플러그인에서 지원하는 주요 모델은 다음과 같습니다.

모델명 (Model) 허깅페이스 ID (Hugging Face ID)
설명 (Description)
수관 탐지 weecology/deepforest-tree
RGB 영상에서 개별 나무의 수관을 탐지합니다.
조류 탐지 weecology/deepforest-bird
항공 및 위성 영상에서 새를 탐지합니다.
가축 탐지 weecology/deepforest-livestock
항공 영상에서 가축을 탐지합니다.
둥지 탐지 weecology/everglades-nest-detection
에버글레이즈(Everglades) 지역 영상에서 새 둥지를 탐지합니다.
고사목 탐지 weecology/cropmodel-deadtrees
산림 영상에서 죽은 나무(고사목)를 탐지합니다.

3. 수관 탐지(Prediction) 수행하기

모델 로드가 완료되었다면, 이제 분석할 래스터 레이어를 선택하고 예측을 시작합니다.

  • Predict 탭 활용:
    • Single Image: 크기가 작은 이미지 전체를 한 번에 분석할 때 사용합니다.
    • Large Tile: 대용량 위성 영상을 격자(Patch) 단위로 나누어 분석할 때 유리합니다. 격자 크기(Patch Size)와 겹침(Overlap) 정도를 조절해 정확도를 높일 수 있습니다.
  • Score Threshold: 탐지 결과의 신뢰도 임계값입니다. (기본값 0.3) 결과가 너무 적으면 수치를 낮추고, 오탐지가 많으면 수치를 높여보세요.

4. 결과 저장 및 학습 데이터 내보내기

분석 결과는 벡터(GeoPackage, Shapefile) 또는 래스터(GeoTIFF) 형식으로 저장할 수 있습니다.

  • 결과 확인: 벡터로 저장하면 속성 테이블에서 각 나무별 탐지 점수(Score)를 확인할 수 있어, 신뢰도가 낮은 객체를 필터링하기에 용이합니다.

  • 학습 데이터 내보내기 (Fine-tuning): 만약 사전 학습된 모델의 결과가 만족스럽지 않다면, 현재의 결과물을 COCO, PASCAL_VOC, YOLO 형식의 학습 데이터로 바로 내보낼 수 있습니다. 이를 통해 나만의 고유한 수관 탐지 모델을 만드는 기초 자료로 활용할 수 있습니다.

참고로, 대형 타일(Large Tile) 모드에서는 다음 항목들을 설정합니다:

  • 패치 크기(Patch Size): 각 예측 창(Window)의 크기입니다. (기본값 400px이며, 0.1m 해상도 데이터의 경우 400~800px 사이로 시도해 보시기 바랍니다.)
  • 패치 중첩(Patch Overlap): 인접한 패치 간에 서로 겹치는 비율입니다. (기본값 0.25)
  • IoU 임계값(IoU Threshold): 중복 탐지된 결과를 제거(억제)하기 위한 중첩 임계값입니다. (기본값 0.15)
  • 데이터로더 전략(Dataloader Strategy): 메모리 관리 전략입니다. (single, batch, 또는 window 방식 중 선택)

마치며

GeoAI 플러그인의 DeepForest 기능을 활용하면 광범위한 산림 데이터를 처리하는 속도를 획기적으로 높일 수 있습니다. 특히 SAM 3와 연계하여 DeepForest가 찾은 바운딩 박스를 마스크로 활용하면 더욱 정교한 수관 경계 추출도 가능해집니다.