ИИ-детекция изменений на спутниковых снимках
Сравнение снимков одной территории с разницей в 6 месяцев вручную — задача, требующая часов работы аналитика на квадратный километр. При мониторинге 1 000 км² это нереально. Change detection модель делает это за минуты и находит изменения площадью от 100 м².
Типы изменений и методы детекции
Бинарная детекция (изменилось/не изменилось) — самая простая и надёжная. Задача: классифицировать каждый пиксель как changed/unchanged. Models: BIT (Binary change detection with Transformers), ChangeFormer, SNUNet.
Семантическая детекция изменений — что именно изменилось: лес → вырубка, поле → застройка, водоём → суша. Требует семантической разметки «до» и «после». Models: Semantic Change Detection (SCD) с siamese encoder + segmentation decoder.
Детекция объектов (появился/исчез конкретный объект) — новое здание, появившийся/пропавший корабль в порту, новая техника на площадке. Instance-level change detection.
Architecture siamese networks
Стандартная архитектура: два идентичных encoder'а (siamese), обрабатывают снимки T1 и T2. Фичи конкатенируются или вычитаются, decoder предсказывает change map.
import torch
import torch.nn as nn
class SiameseChangeDetector(nn.Module):
def __init__(self, encoder, decoder):
super().__init__()
self.encoder = encoder # Общие веса для T1 и T2
def forward(self, img_t1, img_t2):
f1 = self.encoder(img_t1) # (B, C, H/8, W/8)
f2 = self.encoder(img_t2)
diff = torch.abs(f1 - f2) # или torch.cat([f1, f2], dim=1)
change_map = self.decoder(diff) # (B, 1, H, W)
return change_map
ChangeFormer (transformer-based): F1 = 0.916 на LEVIR-CD датасете (высокоразрешающий, 0.5 м/пиксель). SNUNet (densely connected UNet): F1 = 0.908 при меньшем времени инференса.
Главная проблема: pseudo-changes
Pseudo-changes — изменения, которых нет в реальности, но они видны на снимках из-за:
- Разного времени суток (тени от строений разные)
- Разного времени года (листва есть / нет)
- Разных атмосферных условий (дымка, влажность)
- Разных углов съёмки у разных спутников
На практике pseudo-changes дают FP rate 30–60% без preprocessing. Решения:
- Radiometric normalization — привести оба снимка к единой photometric baseline через histogram matching или pseudo-invariant feature normalization
- Seasonal alignment — сравнивать только снимки одного сезона (апрель с апрелем)
- Change probability calibration — калиброванные вероятности вместо бинарного решения, порог подбирается под конкретную задачу
Мультитемпоральный анализ
Для непрерывного мониторинга: не два снимка, а временной ряд. Задача: алерт при значимом изменении относительно baseline (медианный composite за год).
LSTM или temporal transformer поверх embeddings серии снимков — предсказывает аномалию в текущей точке временного ряда. Преимущество: учитывает сезонные паттерны, не фиксирует их как «изменения».
Кейс: мониторинг незаконных вырубок
Территория: 500 000 га тайги. Снимки: Sentinel-2, раз в 10 дней. Задача: детектировать свежие вырубки (≥ 1 га) в течение 30 дней после события.
Pipeline: S2 cloud-free composite → ChangeFormer (14-канальный input: RGB+NIR+SWIR x2 даты) → полигонизация масок → фильтрация по площади (≥ 100 px = 1 га при 10м/px) → проверка против легальных лесорубочных билетов (векторные данные Рослесхоза) → алерт для лесной охраны.
Recall вырубок ≥ 1 га: 0.93. FP rate после сравнения с легальными вырубками: 8%. Среднее время от события до алерта: 12 дней.
Сроки
Базовая система бинарного change detection для одного региона: 6–10 недель. Семантическая детекция + мультитемпоральный мониторинг: 12–18 недель. Стоимость зависит от территории и периодичности мониторинга.







