Skip to content

Repository files navigation

Segmentacja pokrycia terenu

Semantyczna segmentacja ortofotomap ze zbioru LandCover.ai - U-Net + ResNet18.

ID Klasa Kolor
0 background czarny
1 building czerwony
2 woodland zielony
3 water niebieski
4 road żółty

Aplikacja webowa

Interaktywny podgląd pełnych ortofoto (GeoTIFF z landcover/images). Zamiast od razu segmentować cały raster (~9k×9k), aplikacja:

  1. ładuje podgląd (przeskalowany, ze stretchowaniem kontrastu tylko do wyświetlenia),
  2. pozwala przybliżać / przesuwać obraz i zaznaczyć prostokąt prawym przyciskiem,
  3. wycina zaznaczony obszar z oryginalnego rastra w natywnej rozdzielczości i uruchamia model (surowe RGB + normalizacja ImageNet jak przy treningu),
  4. pokazuje obok wynik: wycinek, nakładkę maski i udział klas.

Podgląd aplikacji

Backend: FastAPI (backend/) - frontend: React + Vite (frontend/sat/).

# API
cd backend
uvicorn main:app --reload --port 8000

# UI
cd frontend/sat
npm install
npm run dev

Przykładowe predykcje

Zdjęcie - maska klas - overlay:

Woda i zabudowa

Rzeka

Las

Start

uv sync

Trening

Konfiguracja, na której wyszedł najlepszy model (epoka 60, val mIoU ≈ 0.81):

uv run python train.py \
  --epochs 70 \
  --batch-size 8 \
  --val-every 10 \
  --learning-rate 0.0003 \
  --weight-decay 0.0001 \
  --crop-size 256 \
  --num-workers 4 \
  --grad-clip 1.0

Checkpoint: checkpoints/<run>/best_model.pt - wyniki: outputs/<run>/.

Ewaluacja i predykcja

uv run python evaluate.py
uv run python predict.py --image landcover/output/M-33-20-D-c-4-2_0.jpg

About

Segmentation with Unet and resnet18

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages