Как Яндекс создал глобальный прогноз осадков с использованием радаров и спутников
Не все наверно еще знают, что на Яндекс Карте можно смотреть и погоду. В том числе движение дождевых фронтов и отображение в онлайне гроз (на картинке это желтые кружочки с соответствующим значком). Команда Яндекс.Погоды рассказывает о новой технологии, с помощью которое им удалось добиться прогнозирования осадков с точностью до минут даже там, где данных с радаров просто нет. И помогают им в этом снимки со спутников и нейросети.
Снимки спутника Meteosat-8 из космоса (источник: EUMETSAT)
Про радары и наукаст
Жителям центральной части России несказанно повезло, потому что именно здесь установлены метеорологические радары Росгидромета – современные инструменты, которые позволяют получать карту осадков в радиусе 250 километров от точки установки радара. При этом пространственное разрешение этой карты составляет 2х2 километра на пиксель, а интервал между двумя последовательными снимками – всего 10 минут.
Слева показано, как выглядит метеорадар (источник: ЛЭМЗ)
Что это означает для обычного человека, которому интересна погода? На территориях, покрытых радарным зонтиком, можно сообщать об осадках с точностью до жилого квартала. Такие данные сильно уточняют традиционный прогноз погоды, потому что несут информацию о том, что произошло буквально несколько десятков минут назад. Более подробно про преимущества радаров написано в нашей предыдущей статье. Теперь рассмотрим их недостатки.
Основной из них – плохая масштабируемость, связанная с огромной стоимостью такого средства измерения и сложностью конструкции. Напомним, что сейчас радарами покрыта только часть европейской территории России, а также Барабинск и Владивосток. Кроме того, радарные наблюдения страдают от построек вокруг – например, высокие здания могут загораживать обзор в целых секторах, что сказывается на качестве получаемых полей осадков по радарным снимкам. Пример того, как могут выглядеть усредненные за несколько месяцев наблюдения по каждому из доступных нам радаров указан на иллюстрации ниже.
Усредненные данные по измерениям радаров за несколько месяцев
Как видно, сильно страдает качество у радаров, установленных в Шереметьево и Владивостоке, а в Минеральных водах выпадает целый сектор.
Мы это видим на жалобах от наших пользователей. Также, в случае низких осадков, радар может не видеть на все 250 километров из-за кривизны поверхности Земли, что сказывается на возможности определения осадков ближе к границе видимости. Помимо этого, радары выходят из строя, иногда надолго, из-за чего страдают наши пользователи, которые привыкли к карте осадков и предупреждениям о дожде. Из-за этого, к примеру, возникают неожиданные «взрывы» в поле осадков, как это было недавно в Вологде. Что, конечно же, становится поводом для шквала всевозможных мемов.
Спутники как источник информации
Чтобы не быть привязанными к радарам, мы решили в буквальном смысле сделать космический продукт, о чем намекает заглавная картинка. Кроме радарных измерений существуют похожие подходы по оценке осадков на основе спутниковых снимков. Существует группировка специальных метеорологических спутников (на орбите находятся около 30 аппаратов): как полярно-орбитальных, которые покрывают Землю снимками подобно тому, как нить наматывается на клубок, так и геостационарные – спутники находятся на высоте около 36000 километров от поверхности Земли и вращаются синхронно с вращением Земли над экватором. Особенность орбиты спутников второго типа позволяет постоянно «висеть» над одной и той же точкой и получать такие же снимки, как и в начале статьи. Спутниковая группировка геостационаров позволяет покрыть наблюдениями практически всю Землю, используя для этих целей европейские спутники (Meteosat), американские (GOES) и японские (Himawari). Продукты на их основе имеют пространственное разрешение от 0.5 до 3 километров на пиксель, но есть проблема. Спутники висят над экватором, поэтому наши широты попадают на самый край снимка, из-за чего данные страдают от геометрических искажений.
Прогноз на спутниковых снимках
Идея использовать спутниковые снимки для прогноза погоды не нова – информация с них используется в традиционных глобальных моделях прогноза погоды. Кроме того, из спутниковых снимков извлекают полезную информацию: от мониторинга вулканического пепла и лесных пожаров до поиска фитопланктона. Конечно же, спутниковые снимки используют и для мониторинга осадков и их краткосрочного прогнозирования. Например, есть стандартные алгоритмы по обнаружению областей с осадками – SAFNWC, но они хорошо работают только для случая с конвективными осадками. По нашим строгим метрикам, которые мы используем для радарного наукаста, такие алгоритмы, увы, оказываются в аутсайдерах. Мы же хотели сделать продукт по качеству сравнимый с текущим решением на радарных данных, но при этом еще и масштабируемый глобально. Для этого мы взяли сильные стороны от каждого из подходов и применили магию машинного обучения.
Meteosat как источник информации
После первых экспериментов на стандартных алгоритмах мы решили, что спутниковому наукасту в Погоде быть. Но тут возникла первая проблема: где брать спутниковые снимки? В век цифровых технологий, казалось бы, не должно быть проблем с получением спутниковой информации. В интернете можно найти всё… кроме того, что тебе нужно. Со спутниками ситуация складывается следующим образом: чтобы оперативно получать снимки из космоса, необходимо установить приемную станцию. Стандартный набор включает в себя спутниковую тарелку, DVB-S тюнер и компьютер, на котором снимки сохраняются и обрабатываются. Да, технология полностью аналогична спутниковому телевидению, только тарелка чуть больше человеческого роста, а тюнер чуть-чуть подороже.
Таким образом, в нашем новом ДЦ во Владимире у нас появилась собственная станция приема спутниковой информации. Данные на нее приходят с европейских спутников серии Meteosat второго поколения. Чтобы покрыть западную часть территории России, мы выбрали спутник Meteosat-8, который висит над Индийским океаном на долготе 41.5°. Снимки делаются каждые 15 минут – в течение них проходит полное сканирование видимой области спутника, после чего сканирование начинается заново. Из-за этого снимки отстают на 15 минут от реального времени. Съемка проходит в 12 каналах: 11 каналов в видимом и инфракрасном диапазонах с разрешением 3х3 километра, а также 1 канал в видимом спектре с разрешением 1х1 километр (пример съемки в разных каналах показан справа, источник: EUMETSAT). Полный снимок имеет разрешение 3712х3712 пикселей или примерно 14 мегапикселей, как у камеры современного смартфона.
Снимок разбит на 8 частей (полосами по широтам), что иногда сказывается на качестве данных – потеря одной части может сделать бесполезным весь снимок.
Детекция осадков
Так как наши первые эксперименты показали, что качество продукта при использовании традиционных подходов страдает, мы решили использовать то, что принесло нам успех в случае с обычным наукастом. На помощь пришли нейросети. В качестве входных параметров мы использовали информацию из 11 каналов спутниковой съемки, а обучались на радарных снимках, сведенных в единое поле на сетке 2х2 километра. Мы использовали традиционные подходы, которыми решаются подобные задачи в компьютерном зрении. До последнего момента соревновались две архитектуры, основанные на ResNet-подобных (за авторством irina-rud) и U-Net-подобных (за авторством vlivashkin) моделях.
ResNet используется в задачах классификации изображений и может быть очень глубоким, при этом увеличение количества слоев дает стабильный прирост в качестве. Однако такая архитектура имеет недостатки при использовании – мы вынуждены применять обученную модель в каждой точке нашей географической сетки. В качестве альтернативы была выбрана U-net – архитектура свёрточной нейронной сети, которая обычно используется в задачах сегментации изображений. Первоначально она разработана в биомедицинских целях для быстрой работы с большими изображениями. С такой архитектурой быстрее проверять наши гипотезы, кроме того, мы можем применять обученную модель не поточечно, что заметно сказывается на скорости обработки спутниковых снимков. Ниже представлено сравнение по полученным метрикам для двух архитектур. Так как нам удалось приблизить U-net модель по качеству к ResNet, но при этом U-net позволяет быстрее обрабатывать спутниковые снимки, то её мы и использовали в качестве production решения.
На этом графике показана F1 мера – стандартная метрика в задачах классификации, которая показывает, насколько наши спутниковые осадки отличаются от радарных. При идеальном совпадении она должна равняться единице. Как видно из графика, качество детекции осадков зависит от времени суток, так как снимок в видимом диапазоне является важным источником информации.
Задача осложняется еще и тем, что нужно не только выделить облако на снимке, но и определить, пойдет ли из него дождь. В ходе экспериментов мы выявили, что информации из 11 каналов недостаточно. Чтобы сделать качественный продукт, важно учитывать такие параметры, как угол солнца над горизонтом, высоту рельефа, данные на ближайшие часы из метеорологической модели, например о влагозапасе облаков, влажности в атмосфере на различных уровнях и т.п.
В результате обученная модель позволяет выделять осадки с большой точностью. Так на рисунке показано наложение осадков по спутникам и радарному полю. Здесь фиолетовый цвет – спутники за пределами радаров, малиновый цвет – пересечение радаров и спутников, синий – то, что обнаруживают спутники, но не обнаруживают радары, а красный – то, что обнаружили только радары. На рисунке заметен небольшой систематических сдвиг на север, связанный с тем, что мы детектируем дождь не снизу облаков, как это делают радары, а сверху, из космоса и под углом. Эта проблема будет устранена в ближайшем релизе, что скажется на росте точности.
Спутниковый наукаст
Так как технология достаточно новая, мы решили не отказываться от радаров, а оставить их в тех местах, где наши пользователи уже привыкли пользоваться наукастом. Здесь возникает проблема: как показывать продукты, отличающиеся по методу измерения, в одном интерфейсе. Мы решились на смелый эксперимент – показывать радары и спутники в едином, привычном для пользователя интерфейсе радарного наукаста, расширив область с помощью спутников. Для этого была проделана огромная работа, так как нам надо, во-первых, согласовать спутники и радары по времени, а, во-вторых, правильно склеивать их на границе видимости радаров.
Чтобы привести 15-минутные спутниковые снимки к 10-минутным интервалам, уже привычным нашим пользователям, мы используем Optical Flow для создания промежуточных кадров между последовательными спутниковыми снимками. Optical flow или оптический поток – это технология, которая используется в компьютерном зрении для определения сдвигов между изображениями. Используя два снимка, мы можем построить поле векторов смещения изображения в каждой точке – такое, которое позволяет получить из предыдущего снимка следующий. С помощью векторов переноса мы можем получить и промежуточные кадры, чтобы привести их к единой шкале по времени с 10-минутными интервалами. Этот же алгоритм (стараниями bonext и ruguevara ) пока что используется и для прогноза на 2 часа вперед с 10-минутным разрешением для спутниковых снимков, а радары обсчитываются старым проверенным алгоритмом на основе нейронных сетей, описанным в нашей статье про радарный наукаст. В следующем обновлении мы планируем полностью перейти на перенос всего поля осадков с использованием нейросетевой архитектуры.
При склейке разнородных данных, конечно же, иногда возникают артефакты, например, как на рисунке слева. Здесь заметна стандартная для радаров проблема – на границе видимости они не видят осадки, а в треугольник между ними попадает информация от спутника, который успешно детектирует дождь. Думая о решении задачи склеивания двух областей данных разной природы, мы вспомнили о такой задаче, как inpainting. Nvidia в своей недавней статье Image Inpainting for Irregular Holes Using Partial Convolutions показывает, как нейросети умеют восстанавливать детали картинки по нерегулярным маскам. На Yet Another Conference рассказывалось, как Дмитрий Ульянов с помощью inpainting восстанавливал фреску. Этот же подход мы планируем использовать и в нашем случае, и уже есть успешные наработки, которые совсем скоро поедут в production, что позволит правильно учитывать разнородную информация с различных источников о факте дождя.
А что дальше?
Прямо сейчас на 100% наших пользователей работает наукаст, построенный, как на радарных, так и на спутниковых измерениях (благодаря космической поддержке imalion и работе команд бэкенда и фронта). Надеемся, наши пользователи, которые ждали наукаст у себя в городе, начали им пользоваться и получать своевременную информацию о надвигающихся осадках. На данный момент покрыта зона, ограниченная видимой областью самого спутника на севере и востоке (чуть восточнее реки Обь). На юге мы пока ограничили зону до нижней части Кипра, а на западе – до Швейцарии. Теперь можно смотреть за приближением фронтов еще на подходе к вашему городу и наблюдать за красивыми погодными причудами. А разница в покрытии видна невооруженным глазом.
Таким образом, мы покрыли большую часть России, СНГ и некоторых туристических направлений. Конечно же, мы не забыли и о восточной части нашей страны – уже сейчас мы работаем с японским спутником Himawari, который висит над Австралией и позволит в скором времени порадовать наукастом наши восточные рубежи.
А дальше – глобальная карта осадков на весь мир, избавленная от детских болезней, с повышенной точностью детекции осадков, единым алгоритмом переноса и правильной склейкой всех данных по осадкам.
Как мы отказались от нейросетей, а затем вернули их в прогноз осадков Яндекс.Погоды
Мы уже рассказывали, как Яндекс.Погода делает сверхкраткосрочный прогноз осадков по метеорологическим радарам и спутниковым наблюдениям. Сегодня расскажем, как нам удалось поднять качество такого прогноза за счет внедрения нейросетевых подходов и почему мы уже отказывались от них в прошлом. А ещё вы узнаете, как мы улучшали визуальное восприятие самой карты на границе радарных и спутниковых наблюдений.
И снова про наукастинг
Когда мы говорим о прогнозе погоды, то чаще всего подразумеваем температуру и осадки, например, на завтра или ближайшие выходные. В этом случае хватает традиционных погодных трендов. Но если вы идёте обедать на улицу или на прогулку с ребёнком и при этом не хотите попасть под дождь, то важно знать точный момент начала дождя в течение ближайшего получаса. В таких ситуациях приходит на помощь наша карта осадков aka nowcasting.
Рисунок 1. Карта осадков Яндекс.Погоды
Nowcasting — это сверхкраткосрочный прогноз погоды (до 2–6 часов) с шагом в 5–15 минут, предсказывающий поведение погодных явлений с коротким жизненным циклом. Такой прогноз в той или иной степени сводится к задаче экстраполяции наблюдаемых метеорологических явлений, так как настоящие тяжёлые физические модели для него менее приспособлены и не могут оперативно учитывать быстро меняющие условия.
Раз мы говорим о карте осадков, нам интересен источник данных об областях скопления влаги в воздухе, обладающий относительно высокой частотой обновления. Лучше всего для этого подходят метеорологические радары, предоставляющие такую информацию напрямую в виде изображений, и геостационарные спутники, снимки с которых надо предварительно обработать.
Как решать
Если исходить из того, что наукастинг сводится к задаче экстраполяции (рисунок 2), то формальное определение будет выглядеть так:
p(xt+1...t+k|x1..t)=∏i=1kp(xt+i|x1..t+i−1)
где x — кадр с метеорологического радара и/или спутника, t — количество кадров, на основе которых делается предсказание, k — количество предсказываемых кадров. При этом можно интерпретировать кадр как обычную картинку и свести задачу к работе с видеоизображением.
Рисунок 2. Пример изображений с метеорологического радара. Вверху: пример входных кадров для модели. Внизу: ожидаемые кадры во время предсказания. Здесь t=14, а k=14
Мы предсказываем на два часа вперёд с шагом 10 минут. Это 12 кадров плюс ещё несколько про запас на случай перебоя в поставке данных с радара.
Чаще всего решение такой задачи сводится либо к применению алгоритмов optical flow (1, 2, 3), либо к нейросетевым методам (1, 2, 3, 4, 5, 6). Долгое время в продакшене у нас работал алгоритм на основе optical flow, который мы смогли натюнить таким образом, что он побил по метрикам нашу предыдущую нейросетевую архитектуру. Далее расскажем о том, как мы наконец обошли optical flow и сделали более качественный прогноз с использованием нейросетей.
Архитектура сети
За основу мы взяли архитектуру PredRNN++ [Wang et al.; ICML '18]. Главное нововведение статьи – модификация классической ConvLSTM-ячейки. Авторы добавили вход для пространственной памяти (обозначение M в статье) и расширили output gate, чтобы научиться её учитывать (рисунок 3). Утверждается, что это помогает лучше запоминать пространственные изменения в последовательности кадров видеоряда.
Рисунок 3. Архитектура рекуррентной ячейки Causal LSTM. Красным цветом выделено отличие от ConvLSTM. (Источник)
При решении задачи мы перешли от распространённой регрессии интенсивности осадков в мм/ч для отдельного пикселя к предсказанию областей осадков и их типа (слабые, сильные или очень сильные), что эквивалентно задаче сегментации изображения на три класса. Только для изображений из будущего, которые мы пока не знаем. В качестве функции потерь использовали ставшую классической сумму кросс-энтропии и dice:
L(y,y^)=E[1−2yy^+1y+y^+1−ylogy^−(1−y)log(1−y^)]→min
где y — пример из обучающей выборки, а y^ — предсказанное значение.
Результаты
При сравнении новой модели с предыдущей мы смотрели как на стандартные метрики для задач сегментации и классификации (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. Сравнение карты осадков без нейросетевой склейки (слева) и с ней (справа)
В итоге такой подход позволяет получить согласованное изображение предсказаний на всей области действия наукастинга без резких границ-полукругов.
Заключение
Конечно же, идеальная точность недостижима. Человечество ещё только учится понимать и предсказывать погоду. И описанные в посте улучшения — не потолок для нейросетевых подходов. Мы продолжаем экспериментировать с другими архитектурами и дополнительными данными, чтобы наш прогноз становился достовернее. Будем рады, если описанный опыт поможет и вам.
Комментарии
Отправить комментарий