ИИ-классификация типов земельного покрова по спутниковым снимкам
Актуальная карта земельного покрова — основа для сельскохозяйственного планирования, экологического мониторинга, градостроительного проектирования. Ручное дешифрирование 1 000 км² занимает 2–4 месяца. Нейронная сеть на мультиспектральных снимках делает это за часы с точностью, сравнимой с ручной работой опытного аналитика.
Классы и детализация
Стандартные классы CORINE Land Cover (44 класса) слишком детальны для автоматической классификации по Sentinel-2. Практически достижимые уровни:
| Уровень | Классы | mIoU |
|---|---|---|
| L1 (грубый) | 5 классов: вода, лес, с/х, застройка, прочее | 0.91–0.95 |
| L2 (средний) | 15–20 классов | 0.82–0.88 |
| L3 (детальный) | 35–44 класса | 0.68–0.76 |
Для большинства прикладных задач L2 достаточен. L3 требует снимки высокого разрешения (< 3 м/пиксель) и значительно большего объёма обучающих данных.
Мультиспектральный input и feature engineering
Sentinel-2 с 10/20м каналами: B02 (blue), B03 (green), B04 (red), B08 (NIR), B11/B12 (SWIR). Плюс вычисленные индексы:
import numpy as np
def compute_spectral_indices(bands):
B02, B03, B04, B08, B11, B12 = bands
# Vegetation indices
NDVI = (B08 - B04) / (B08 + B04 + 1e-8)
EVI = 2.5 * (B08 - B04) / (B08 + 6*B04 - 7.5*B02 + 1)
# Water index
NDWI = (B03 - B08) / (B03 + B08 + 1e-8)
# Built-up index
NDBI = (B11 - B08) / (B11 + B08 + 1e-8)
# Bare soil
BSI = ((B11 + B04) - (B08 + B02)) / ((B11 + B04) + (B08 + B02) + 1e-8)
return np.stack([NDVI, EVI, NDWI, NDBI, BSI])
Добавление 5 спектральных индексов к 6 исходным каналам (итого 11 каналов): mIoU вырастает с 0.84 до 0.89 на 20-классовой задаче без изменения архитектуры модели.
Архитектуры для semantic segmentation
SegFormer-B4 на мультиспектральном input: адаптируем первый свёрточный слой с 3 на N каналов (reinitialize weights для новых каналов, сохраняем RGB-pretrained для первых трёх). Fine-tuning на датасете класса DeepGlobe или EuroSAT.
SatMAE — foundation model, предобученная на терабайтах геопространственных данных. Fine-tuning требует в 3–5 раз меньше аннотированных данных по сравнению с ImageNet-pretrained ViT.
U-Net с ResNet-50 backbone: более простой baseline, но работает надёжно и быстро. На L2-классификации: mIoU = 0.85 на 1 000 размеченных тайлов.
Работа с мультивременными данными
Однозначная классификация по одному снимку ненадёжна: заснеженное поле и жилая застройка похожи в зимний период. Мультивременной подход: стек снимков 4–12 месяцев как временной ряд.
SITS-BERT (Satellite Image Time Series BERT) или temporal attention поверх U-Net encoder — обрабатывают серию снимков как последовательность и извлекают фенологические паттерны. Рост класс «пашня» vs «луг» работает только в динамике: пашня имеет характерный NDVI-цикл.
Прирост от мультивременного подхода: mIoU на различении пашня/луг/зарастающие поля — с 0.71 (один снимок) до 0.89 (серия 12 снимков).
Постобработка и экспорт
Результат сегментации нейросети — растровая маска. Для практических применений нужен векторный формат (полигоны):
-
rasteriopolygonize →shapelysimplify (epsilon=5м для удаления зигзагов) - Минимальный фрагмент: отфильтровать полигоны < MMU (Minimum Mapping Unit), обычно 0.5–1 га
- Экспорт: GeoJSON / Shapefile / PostGIS для интеграции с GIS-системами
Сроки
Базовая классификация L1 (5 классов) для конкретного региона: 4–8 недель. L2 (15–20 классов) с мультивременным анализом: 10–16 недель. Стоимость зависит от площади и требований к точности.







