Skip to content

Repository files navigation

위성영상 기반 불법 증축 의심 건축물 탐지

SAR 위성영상과 건물 공간정보를 이용해 건물의 면적·높이 변화를 추정하고, 불법 증축 의심 대상을 지도에서 확인하는 해커톤 프로젝트의 최종 코드와 시각화 자료입니다.

이 저장소의 판정은 행정·법률상 확정 판정이 아닌 AI 기반 선별 결과입니다. 현장 확인과 공적 장부 검토가 필요합니다.

분석 흐름

  1. 2022·2025 건물 벡터를 공간 조인해 분석 대상을 정리합니다.
  2. SAR 영상을 80m 단위 칩으로 만들고 학습 데이터를 구성합니다.
  3. Module A의 U-Net(ResNet34)이 건물 면적 마스크를 예측합니다.
  4. Module B의 2채널 ResNet34가 건물 높이를 회귀합니다.
  5. 허가 정보와 AI 예측값의 차이를 임계값과 비교해 정상·수평·수직·복합 의심으로 분류합니다.
  6. 최종 GeoJSON을 Streamlit/Folium 대시보드에 표시합니다.

최종 결과 요약

final_analysis_complete.geojson에서 집계한 결과입니다.

판정 건수
전체 분석 건물 157,383
정상 117,185
수평 증축 의심(면적) 40,054
수직 증축 의심(높이) 73
복합 불법 증축 의심 71
전체 의심 판정 40,198

통합 추론 코드에는 Module A 평균 IoU 0.59, Module B RMSE 1.98m, 최소 층고 2.29m를 판정 기준값으로 사용했습니다. 이 값들은 현재 코드에 고정된 해커톤 실험 설정이며, 운영 적용 전 별도 검증과 보정이 필요합니다.

Module B 높이 예측 시각화

실제 높이와 AI 예측 높이 산점도

산점도는 최대 10,000개 표본의 실제 높이와 예측 높이를 비교합니다. 현재 결과에는 높은 건물에서의 과소추정 경향이 보여, 추가 학습·이상치 처리·높이 구간별 보정이 필요합니다. 이미지의 한글 글꼴이 없는 실행 환경에서는 일부 글자가 네모로 표시될 수 있습니다.

파일 구성

파일 역할
filter_buildings_spatial.py 연도별 건물 벡터 공간 조인
raster.py 건물 벡터를 학습용 마스크로 래스터화
tiling.py Module A용 SAR·마스크 칩 생성
prepare_B.py Module B용 SAR·마스크 칩과 높이 라벨 생성
dataset.py Module A 데이터셋
dataset_B.py Module B 데이터셋
train_unet.py 면적 세그멘테이션 모델 학습
train_B.py 높이 회귀 모델 학습
test.py 두 모델의 통합 추론과 최종 GeoJSON 생성
plotscatter.py 높이 예측 산점도 생성
app.py 불법 증축 의심 건물 지도 대시보드

실행 환경

Python 3.11 이상과 GDAL을 포함한 지리공간 라이브러리 설치 환경을 권장합니다.

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

NVIDIA GPU를 사용할 경우 CUDA 환경에 맞는 PyTorch 설치가 별도로 필요할 수 있습니다.

필요한 로컬 파일

원천데이터, 생성된 칩, 모델 가중치, 최종 GeoJSON은 용량과 데이터 배포 조건 때문에 저장소에 포함하지 않았습니다. 실행하려면 다음 구조로 별도 준비해야 합니다.

data/
├── SF_2025_Filtered_by_2022.shp (+ .dbf/.shx/.prj/.cpg)
├── module_area.tif
├── training_data/
│   ├── K5_Stack.tif
│   ├── SF_Footprint.shp (+ sidecar files)
│   └── SF_Footprints_2025_with_height.shp (+ sidecar files)
├── training_dataset_A/
│   ├── module_A_input/
│   └── masks/
└── training_dataset_B/
    ├── module_B_input/
    ├── module_B_mask/
    └── Y_labels.csv

pth_folder/
├── best_model_unet.pth
└── best_model_height.pth

final_analysis_complete.geojson

경로 또는 컬럼명이 다른 데이터는 각 스크립트 상단의 설정값을 수정해야 합니다.

실행 순서

이미 학습된 가중치가 있다면 통합 추론부터 실행할 수 있습니다.

python test.py
streamlit run app.py

처음부터 재학습하려면 다음 순서로 실행합니다.

python filter_buildings_spatial.py
python raster.py
python tiling.py
python prepare_B.py
python train_unet.py
python train_B.py
python test.py
python plotscatter.py
streamlit run app.py

대용량 데이터는 Git LFS에 무조건 올리기보다, 원 배포처 링크·체크섬·다운로드 안내를 별도로 제공하는 방식을 권장합니다.

About

SAR satellite imagery pipeline for detecting suspected unauthorized building extensions

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages