И снова про наукастинг
Когда мы говорим о прогнозе погоды, то чаще всего подразумеваем температуру и осадки, например, на завтра или ближайшие выходные. В этом случае хватает традиционных погодных трендов. Но если вы идёте обедать на улицу или на прогулку с ребёнком и при этом не хотите попасть под дождь, то важно знать точный момент начала дождя в течение ближайшего получаса. В таких ситуациях приходит на помощь наша карта осадков aka nowcasting.
Рисунок 1. Карта осадков Яндекс.Погоды
Nowcasting — это сверхкраткосрочный прогноз погоды (до 2–6 часов) с шагом в 5–15 минут, предсказывающий поведение погодных явлений с коротким жизненным циклом. Такой прогноз в той или иной степени сводится к задаче экстраполяции наблюдаемых метеорологических явлений, так как настоящие тяжёлые физические модели для него менее приспособлены и не могут оперативно учитывать быстро меняющие условия.
Раз мы говорим о карте осадков, нам интересен источник данных об областях скопления влаги в воздухе, обладающий относительно высокой частотой обновления. Лучше всего для этого подходят метеорологические радары, предоставляющие такую информацию напрямую в виде изображений, и геостационарные спутники, снимки с которых надо предварительно обработать.
Как решать
Если исходить из того, что наукастинг сводится к задаче экстраполяции (рисунок 2), то формальное определение будет выглядеть так:
где — кадр с метеорологического радара и/или спутника, — количество кадров, на основе которых делается предсказание, — количество предсказываемых кадров. При этом можно интерпретировать кадр как обычную картинку и свести задачу к работе с видеоизображением.
Рисунок 2. Пример изображений с метеорологического радара. Вверху: пример входных кадров для модели. Внизу: ожидаемые кадры во время предсказания. Здесь , а
Мы предсказываем на два часа вперёд с шагом 10 минут. Это 12 кадров плюс ещё несколько про запас на случай перебоя в поставке данных с радара.
Чаще всего решение такой задачи сводится либо к применению алгоритмов optical flow (1, 2, 3), либо к нейросетевым методам (1, 2, 3, 4, 5, 6). Долгое время в продакшене у нас работал алгоритм на основе optical flow, который мы смогли натюнить таким образом, что он побил по метрикам нашу предыдущую нейросетевую архитектуру. Далее расскажем о том, как мы наконец обошли optical flow и сделали более качественный прогноз с использованием нейросетей.
Архитектура сети
За основу мы взяли архитектуру PredRNN++ [Wang et al.; ICML '18]. Главное нововведение статьи – модификация классической ConvLSTM-ячейки. Авторы добавили вход для пространственной памяти (обозначение в статье) и расширили output gate, чтобы научиться её учитывать (рисунок 3). Утверждается, что это помогает лучше запоминать пространственные изменения в последовательности кадров видеоряда.
Рисунок 3. Архитектура рекуррентной ячейки Causal LSTM. Красным цветом выделено отличие от ConvLSTM. (Источник)
При решении задачи мы перешли от распространённой регрессии интенсивности осадков в мм/ч для отдельного пикселя к предсказанию областей осадков и их типа (слабые, сильные или очень сильные), что эквивалентно задаче сегментации изображения на три класса. Только для изображений из будущего, которые мы пока не знаем. В качестве функции потерь использовали ставшую классической сумму кросс-энтропии и dice:
где — пример из обучающей выборки, а — предсказанное значение.
Результаты
При сравнении новой модели с предыдущей мы смотрели как на стандартные метрики для задач сегментации и классификации (F1, IoU), так и специально построили метрики, которые отражают пользовательское ощущение прогноза (например, доля идеальных прогнозов). Это помогло улучшить в том числе и то, что видят в прогнозе наши пользователи, и как они получают информацию из него. Ниже приведена таблица с изменениями по сравнению с решением на базе optical flow:
Метрика | Изменение, % |
---|---|
F1, среднее за 2 часа | +7,6 |
IoU, первый. шаг | +3,5 |
IoU, второй шаг | +6,1 |
Доля идеальных прогнозов | +2,2 |
Доля точно предсказанных случаев начала дождя | +6,0 |
Если F1 и IoU — широко известные метрики, то на двух последних стоит задержаться, так как именно они характеризуют пользовательское восприятие прогноза. Доля точно предсказанных случаев начала дождя — это отношение количества правильно предсказанных случаев начала первого дождя на рассматриваемом окне в два часа ко всем случаям начала первого дождя на двухчасовых окнах. А доля идеальных прогнозов показывает, какая часть двухчасовых последовательностей предсказана без ошибки на каком-либо шаге. Таким образом, эти метрики позволяют нам оценить пользовательский опыт использования наукастинга.
Также посмотрим на зависимость метрик от дальности прогноза:
Рисунок 4. График среднего IoU от дальности предсказанного кадра по времени
Для расчёта optical flow мы использовали Dense Inverse Search с константным вектором переноса (на графике показан лучший из полученных вариантов), который лучше всего себя показал среди других optical flow алгоритмов для задачи наукастинга и в наших экспериментах, и в экспериментах коллег. Эксперименты с PredRNN++ различаются между собой применением медианного фильтра на входных данных (так как радары иногда шумят) и метрикой, по которой подбирался порог бинаризации (F1 или F1.5). Из графика видно, что optical flow лучше нейросеток только на первой десятиминутке. Потом его предсказания начинают сильно деградировать, и на втором часе он проигрывает всем вариантам.
Помимо этого, возвращение нейросетевой архитектуры даёт возможность и дальше улучшать качество прогноза осадков, так как позволяет дополнительно учитывать фичи, которые потенциально помогают прогнозировать внезапное возникновение или исчезновение зон с осадками, тогда как подход, основанный на optical flow, позволяет только передвигать их по вектору переноса.
Склейка радарных и спутниковых снимков
В прошлый раз мы рассказали, как расширили зону наукастинга за пределы мест установки метеорологических радаров за счёт использования спутниковых снимков. Напомним, что мы использовали нейронные сети для восстановления радарных полей по спутниковым снимкам. В этом случае наша модель по качеству была близка к самим радарам, но так как спутники и радары по факту различаются по способу измерения осадков, то возможно неполное совпадение областей дождя между ними. Поэтому нередко нам справедливо указывали на резкие границы между зоной радарного и спутникового наукаста. Мы использовали нейросети для решения и этой задачи — аккуратного перехода из одной зоны в другую, чтобы карта осадков выглядела более реалистично, а границы были менее заметны для пользователей.
Перед тем как показывать прогнозы на единой карте, необходимо согласовать изображения с метеорологических радаров и геостационарных спутников. Это необходимо, чтобы избежать границ вокруг зоны действия радаров и резких изменений областей осадков на стыках радаров и спутника.
Наша идея заключается в том, что мы делаем хитрую нейросетевую склейку на стыках изображений. За основу мы взяли нейросетевой инпейнтинг от NVIDIA, основанный на Unet-подобной архитектуре.
Рисунок 5. Пример работы алгоритма из оригинальной статьи «Image Inpainting for Irregular Holes Using Partial Convolutions»
Наглядный пример работы алгоритма, который дорисовывает недостающие части, можно посмотреть на рисунке выше, а также на этом видео. Только вместо дорисовывания изображения на закрашенной области мы создаём маску на границе радар — спутник, где пробуем восстановить переход осадков между соседними зонами.
Решение этой задачи состоит из двух шагов:
- Выполняется альфа-смешивание радарных и спутниковых изображений — получается постепенный переход от спутника к радару.
- Переход перерисовывается с помощью инпейнтинга, при этом к центру перехода сетка получает всё меньше данных из входного изображения.
Рисунок 6. Сравнение карты осадков без нейросетевой склейки (слева) и с ней (справа)
В итоге такой подход позволяет получить согласованное изображение предсказаний на всей области действия наукастинга без резких границ-полукругов.
Заключение
Конечно же, идеальная точность недостижима. Человечество ещё только учится понимать и предсказывать погоду. И описанные в посте улучшения — не потолок для нейросетевых подходов. Мы продолжаем экспериментировать с другими архитектурами и дополнительными данными, чтобы наш прогноз становился достовернее. Будем рады, если описанный опыт поможет и вам.
kAIST
Скажу про свой город (Казань). Раньше аэродром в одном месте публиковал снимки с погодного радара, обновлялись они раз в 5 минут. И так как было видно направление и скорость ветра, можно было на глаз определить когда начнется дождь или когда он закончится.
Пару лет назад они прекратили это делать, но теперь это делает Яндекс. И он перестал попадать даже в текущую ситуацию. "Дождь будет через 2 часа", а по факту он уже идёт и так далее. Про краткосрочный прогноз я вообще молчу. Листаешь время вперёд и видишь что то неадекватное, типа того что тучи внезапно куда то изчезают или появляются из ниоткуда.
BDI
Это не тучи, это наличие и интенсивность осадков — поэтому небо может быть затянуто полностью, но на карте будет чисто :).
Но да, в последнее время возникают расхождения с прогнозом на карте, вроде ливня когда «в ближайшие два часа осадков не ожидается», и наоборот(причём эта ситуация не сильно далеко от крупного московского аэропорта). Раньше было точнее, что было очень полезно при строительных работах на даче — чтобы успеть убрать электроинструмент под крышу, или вообще не приступать к работам на улице.
avgan
Для Казани у нас есть измерения с радара ДМРЛ-С, которые проводятся каждые 10 минут. Возможем вариант, когда осадки возникли во время проведения измерения, тогда да, к сожалению мы покажем их с 10 минутной задержкой. Сейчас есть идея, как сделать лучше, как раз для этого мы и вернули нейросеть, чтобы учитывать информацию не только у земли, но и в самом облаке. Постараемся вас порадовать выпуском улучшенной версии и поменьше ошибаться :)
Если же расхождения прям все время возникают — пожалуйста, сообщайте про это через опрос на карте осадков, по ним мы учитываем отклонение прогноза и обращаем внимание на проблемные зоны. Чем больше репортов, тем сильнее для нас сигнал.
nerudo
А нельзя просто результаты с радаров (где они есть) на карте отображать? Толку куда больше будет.
avgan
Мы отображаем результаты с радаров там, где они есть, только они находится в прошлом от «сейчас»
kAIST
В том то и дело, что на глаз по этой картинке с радара, получалось гораздо точнее чем сейчас. Меня тогда считали некоторые каким то шаманом, который знал секрет как предсказать погоду на ближайшие пол часа.
Поддержу вопрос выше. Достаточно ли посмотреть ситуацию что было 10 минут, чтоб увидеть фактическую обстановку, не испорченную нейросетями?
osanwe Автор
До момента «сейчас» мы показываем снимки с радаров. После этого начинаются предсказания. Таким образом, на моменте «сейчас» чаще всего показывается первый шаг предсказания. Это связано с тем, что имеются накладные расходы на доставку и обработку свежих снимков
pokryshkin
Расскажите, пожалуйста, как вы получаете данные с ДМРЛ?
Несколько лет назад госгидромед запретил выкладывать данные в реальном времени, именно из-за них можно найти данные только суточной давности.
habr.com/ru/post/266303
www.change.org/p/росгидрометцентру-вернуть-открытый-доступ-снимков-дмрл-радары?source_location=petitions_share_skip
osanwe Автор
Получаем на коммерческой основе
kAIST
На днях через знакомых работающих в аэропорту, сравнили картинку с радара и то что показывает яндекс, пусть даже с поправкой на «10 минут назад» — разница очень и очень большая.
osanwe Автор
Спасибо, проверим, но так у нас данные те же самые.