AI Land Cover Classification from Satellite Data

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
AI Land Cover Classification from Satellite Data
Medium
~2-4 weeks
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1212
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    852
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    822

ИИ-классификация типов земельного покрова по спутниковым снимкам

Актуальная карта земельного покрова — основа для сельскохозяйственного планирования, экологического мониторинга, градостроительного проектирования. Ручное дешифрирование 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 снимков).

Постобработка и экспорт

Результат сегментации нейросети — растровая маска. Для практических применений нужен векторный формат (полигоны):

  • rasterio polygonize → shapely simplify (epsilon=5м для удаления зигзагов)
  • Минимальный фрагмент: отфильтровать полигоны < MMU (Minimum Mapping Unit), обычно 0.5–1 га
  • Экспорт: GeoJSON / Shapefile / PostGIS для интеграции с GIS-системами

Сроки

Базовая классификация L1 (5 классов) для конкретного региона: 4–8 недель. L2 (15–20 классов) с мультивременным анализом: 10–16 недель. Стоимость зависит от площади и требований к точности.