본 실습에서는 NaGeoAI의 SAM3 점·박스 대화형 분할을 실제 QGIS에서 실행하여 건물 마스크를 생성하고 입력과 출력의 픽셀 격자를 비교하였다. 2026년 10월 11일 확보한 실제 화면 5장을 단계별로 제시한다. 모델 학습 또는 분할 정확도 평가를 수행한 실험은 아니다.
1. 설치와 실행 환경
실습 환경은 QGIS 3.44.15, NaGeoAI 1.9.1, NVIDIA RTX 3080 Ti이다. 실행 기록에서 PyTorch 2.14.0+cu126의 CUDA 사용 및 간단한 GPU 텐서 연산을 확인하였다. NaGeoAI GitHub 배포 페이지에서 설치용 ZIP을 확인한 후 QGIS의 플러그인 → 플러그인 관리 및 설치 → ZIP에서 설치에서 해당 파일을 지정한다. 설치 후 플러그인을 활성화하고 최초 환경 설정에서 누락된 의존성과 모델만 준비한다. 이 글에는 새 설치 화면을 포함하지 않으며 설치 과정은 기존 설치 실습을 참조한다.
SAM3 모델은 Meta 공식 모델 페이지의 접근 승인과 이용 조건을 사용자가 검토한 후 로컬에서 준비한다. 인증 토큰과 모델 파일은 공개하지 않는다. 실습 13과 동일하게 준비된 모델을 사용하며 이번 회차에서는 모델을 학습하거나 미세조정하지 않았다.
2. 예제 다운로드와 프로젝트 준비
parking-lot.tif 원본 다운로드를 별도 자료 폴더에 저장한다. 출처는 Open Geospatial Solutions의 Source Cooperative 공개 예제이다. 개별 자료의 재배포 조건은 확인되지 않았으므로 이 글은 사용자가 공개를 승인한 실습 화면만 제공하며 원본 데이터나 모델을 재배포하지 않는다. 이용 조건은 제공처에서 확인한다.
QGIS_Play.qgz를 연 뒤 원본을 보존하기 위해 프로젝트 → 다른 이름으로 저장으로 실습 복사본을 만든다. 본 실습의 파일명은 QGIS_Play_NaGeoAI_20261011_sam14_interactive.qgz이다. 레이어 → 레이어 추가 → 래스터 레이어 추가로 parking-lot.tif를 불러온다. 입력은 RGB 3밴드 uint8, 1659×938픽셀, EPSG:3857, NoData 미지정이다. 프로젝트 표시 CRS를 EPSG:3857로 맞추었으며 원본 영상을 재투영하지 않았다.
입력 파일 크기는 4,674,429바이트이며 SHA-256은 ca8f112fae10a919f4f55c3f658b9bb893f748ff45e3921dd0aa4c50d69d23c5이다. 픽셀 크기는 투영좌표 단위로 X 약 0.14927896, Y 약 0.14932036이며 지상 실측 해상도로 단정하지 않는다.
3. SAM3 모델과 입력 설정
NaGeoAI → 분할(SAM) 패널의 모델 탭에서 SamGeo3 (SAM3), 백엔드 meta, 장치 cuda, 신뢰도 0.50을 지정하고 대화형 모드 사용(점/박스 프롬프트)을 선택한다. 모델 불러오기를 실행하여 Model: SamGeo3 loaded를 확인한다. 입력 레이어 parking-lot을 선택하고 레이어에서 영상 설정을 눌러 영상 연결을 확인한다.

4. 전경점으로 분할
대화형 탭에서 전경점 추가를 누르고 왼쪽 건물 지붕 내부를 클릭한다. 이번 입력은 영상 픽셀 좌표 (269.5, 438.6)이며 지도 좌표와 구분해야 한다. 점으로 분할을 실행하고 메시지와 결과 마스크를 확인한다. 이번 실행에서는 Found 1 object(s).가 표시되었다.


출력 탭에서 Raster (GeoTIFF)를 선택하고 마스크 저장으로 building_point_sam14.tif를 저장하였다. 입력 파일과 다른 경로를 사용하여 원본을 덮어쓰지 않는다.
5. 박스 프롬프트로 분할
박스 그리기로 왼쪽 건물을 둘러싸는 영역을 지정한다. 이번 픽셀 범위는 (66.9, 236.1)부터 (466.3, 646.9)까지이다. 박스로 분할을 실행하고 별도의 building_box_sam14.tif로 출력하였다. 이번 실행에서는 객체 2개가 검출되었다.


6. 출력 좌표와 픽셀 구성 검증
두 출력은 모두 EPSG:3857, 1659×938픽셀, uint8 1밴드, NoData 미지정이며 입력과 affine transform이 정확히 일치하였다. 격자 변환은 [0.14927896323056375, 0, -10622277.6316, 0, -0.14932036247334754, 3462363.3681]이다. 이 비교는 별도 rasterio 검사로 수행하였으며 QGIS GUI 검사와 구분한다. QGIS 박스 출력 속성의 정보 화면에서는 너비·높이·Byte·GeoTIFF와 최소 0/최대 2를 확인했으나 해당 화면은 경로가 포함되어 공개하지 않는다.
| 출력 | 값별 픽셀 수 | 파일 크기 |
|---|---|---|
| 점 마스크 | 0: 1,435,576 / 1: 120,566 | 12,019바이트 |
| 박스 마스크 | 0: 1,333,712 / 1: 92,091 / 2: 130,339 | 14,135바이트 |
점 출력 SHA-256은 500746072f30ffde3e4f828f71248e691c99ce2debd5a034510328065f08452d, 박스 출력 SHA-256은 83e1bda5544e6389432f50da9b408e705b039f6db32b2045d78a2d4596c91d14이다. 픽셀 수는 배열 구성 검증이며 위치 정확도·분할 정확도·면적 정확도를 나타내지 않는다.
7. 실행 한계와 종료 기록
추론과 마스크 저장은 완료되었으나 레이어 속성의 정보 탭에서 QGIS 응답 지연이 발생하였다. 재설치 후에도 재발했으며 원인은 확정하지 못했다. 정상 닫기 시도가 실패하여 사용자의 명시적 승인으로 QGIS를 강제 종료하였다. 정상 종료 또는 이번 재개 세션의 최종 저장 성공으로 표시하지 않는다. 실습 복사본은 기존 저장 파일이 보존되어 있으나 강제 종료 직전의 최종 갱신은 확인되지 않았다. 원본 QGIS_Play.qgz의 SHA-256은 실행 전후 동일하였다.
따라서 본 회차는 실제 점·박스 추론 결과와 보존된 화면을 보고하는 실습 기록이다. QGIS 응답 문제의 해결, 모든 환경에서의 재현 성공, 측량 성과 또는 재난 위험도 평가를 주장하지 않는다. 실무 적용에는 정답 자료를 이용한 별도 정확도 평가가 필요하다.
댓글 없음:
댓글 쓰기