1. 실습 목적과 확인 범위
본 실습에서는 NaGeoAI 1.9.1의 객체탐지 기능을 QGIS 3.44.12에서 실행하고, 탐지 상자의 좌표가 입력 영상과 일치하는지 확인하였다. 자료 확인 → 입력값 설정 → 객체탐지 → 지도 중첩 및 속성 검증의 순서로 진행하였다. 이번 결과는 모델이 반환한 후보를 검토하기 위한 자료이며, 개별 건물의 정확한 경계나 공식 측량 성과를 의미하지 않는다.
버전 안내: 이 글의 실행 환경은 좌표 변환을 수정한 NaGeoAI 1.9.1이다. 수정 버전의 설치 파일은 NaGeoAI-1.9.1.zip 다운로드에서 받을 수 있다. 1.9.1 릴리스 설명에서 변경 내용을 확인한다.
2. 플러그인 설치 방법
QGIS에서 플러그인 → 플러그인 관리 및 설치 → ZIP 파일에서 설치를 열고, NaGeoAI 배포 ZIP을 지정하여 설치한다. 설치 후 플러그인 목록에서 NaGeoAI의 활성화 여부와 버전을 확인한다. 이 절차는 독자를 위한 설치 안내이며, 이번 실습에서 ZIP 재설치 화면을 새로 촬영한 것은 아니다.
실제 과거 설치 과정과 화면은 실습 1편: 설치부터 NAIP 변화탐지 결과 확인까지를 참고한다. 공개 버전은 NaGeoAI GitHub 릴리스에서 확인한다. 1.9.0을 이번 수정 버전으로 간주하여서는 안 된다.
3. 예제 자료 다운로드 및 입력 확인
입력 자료는 Las Vegas 지역의 2019년 NAIP 예제 영상이다. Source Cooperative의 opengeos/geoai 자료 페이지에서 제공하는 las_vegas_naip_2019_a.tif를 다운로드한다. 원본 파일은 별도로 보존하고, QGIS의 래스터 레이어로 추가한다.
NAIP의 일반적인 자료 설명은 NAIP 공식 자료 목록을 참고한다. 예제 가공본의 재배포 조건은 별도로 확인할 필요가 있으므로, 본 글에서는 원본 TIFF를 다시 업로드하지 않고 제공처의 다운로드 주소를 안내한다.
| 항목 | 확인값 |
|---|---|
| 입력 파일 | las_vegas_naip_2019_a.tif |
| 입력 좌표계 | EPSG:26911 |
| 영상 크기 | 2,721 × 1,420픽셀, 4개 밴드 |
| 픽셀 크기 | 0.6m × 0.6m |
| 출력 좌표계 | EPSG:4326 |
실습 시작 원본 QGIS_Play.qgz는 보존하였다. 이번 실행과 결과 저장에는 QGIS_Play_NaGeoAI_20261002_object_detection_fixed.qgz 복사본을 사용하였다. 배경지도만으로 분석하지 않고, 다운로드한 NAIP 래스터를 탐지 입력으로 지정하였다.

그림 1. 처리 후 출력 레이어의 표시를 끈 상태에서 입력 영상과 프로젝트를 확인한 화면이다. 처리 전 화면으로 표시하지 않는다.
4. NaGeoAI 객체탐지 입력값 설정
NaGeoAI의 추가 분석 패널을 열고 기능을 객체탐지로 선택하였다. 입력 영상은 위의 TIFF이며, 탐지 대상에는 building. car., 신뢰도 임계값에는 0.3을 입력하였다. 출력 파일은 objects_gui_v191_blog_20261002.geojson으로 지정하고, 공간 결과를 지도에 추가하는 옵션을 켰다.

그림 2. 새 실행 직전의 객체탐지 설정 화면이다. 지도에 표시된 파란 윤곽선은 앞서 좌표를 확인한 결과이며, 새 실행 결과와 구분한다.
5. 실행 로그와 출력 레이어 확인
실행 버튼을 눌러 처리를 완료하였다. 실제 QGIS 패널에서 후보 2건과 EPSG:26911 → EPSG:4326 변환 메시지를 확인하였으며, 새 GeoJSON 레이어가 지도에 추가되었다. 로그에는 영상 면적의 80% 이상을 차지하는 후보 1건과 영상 경계를 벗어난 상자의 절단 처리 1건에 대한 경고가 기록되었다.

그림 3. 실행 직후의 로그 및 출력 레이어 화면이다. 큰 후보 상자는 자동으로 삭제하지 않았으며, 경고를 확인하고 검토 대상으로 남겼다.
출력 레이어의 심볼을 채움 없이 파란 윤곽선으로 설정하여 NAIP 영상과 중첩하였다. 이 중첩은 좌표 정합을 확인하기 위한 것이며, 건물 경계의 정확도를 입증하는 절차는 아니다.

그림 4. 새 GUI 실행 결과와 이전 좌표 검증 결과를 함께 표시한 중첩 화면이다. 최종 저장 프로젝트에서는 이전 검증 결과를 숨기고 새 실행 결과를 표시하였다.
6. 속성 검증과 해석상 주의사항
| 후보 | label | score | 영상 대비 면적 비율 |
|---|---|---|---|
| 1 | building | 0.345244825 | 0.997488046 |
| 2 | building | 0.302596986 | 0.011897756 |

그림 5. 실제 GUI 출력의 label, score, image_fraction 값을 확인한 화면이다.
두 후보의 label은 모두 building이며, car 후보는 반환되지 않았다. 첫 번째 상자는 영상 면적의 약 99.75%를 차지하여 단일 건물의 경계로 이용하기 어렵다. 두 번째 후보도 현장 자료 또는 정답 경계와 대조하지 않았으므로, 개별 건물이 정확하게 탐지되었다고 단정할 수 없다. score는 모델 출력값이며 정밀도나 전체 정확도와 동일하지 않다. 정답 자료를 이용한 정밀도·재현율·경계 정확도 평가는 수행하지 않았다.
7. 좌표 오류 수정 내용 및 저장
이전 객체탐지 출력에서는 픽셀 좌표에 래스터 지리참조 변환을 적용하지 않은 문제가 확인되었다. 1.9.1에서는 탐지 상자의 각 꼭짓점에 영상의 아핀 변환을 적용한 뒤 EPSG:4326으로 변환하도록 수정하였다. 영상 경계 밖의 후보는 경계 범위로 절단하고, 큰 면적의 후보는 경고로 알리도록 하였다. 좌표 변환 수정과 모델의 탐지 품질 개선은 서로 다른 문제이다.
입력 확인, 실행, 출력 속성 확인 및 실제 화면 캡처를 완료한 후 실습용 프로젝트 복사본을 저장하고 QGIS를 정상 종료하였다. 원본 QGIS_Play.qgz는 덮어쓰지 않았다. 과거 Python 종료 오류의 원인을 이번 결과만으로 단정하지 않으며, 이번 실행에서는 QGIS 창이 정상적으로 닫혔음을 확인하였다.
실제 화면 5장은 2026년 10월 2일 QGIS 데스크톱에서 캡처하였으며, GitHub에 보존한 이미지를 삽입하였다. 각 그림을 클릭하면 원본 크기로 확인할 수 있다.
댓글 없음:
댓글 쓰기