2018 год стал самым смертоносным и разрушительным годом для лесных пожаров в истории Калифорнии. В результате пожара в лагере погибли 85 человек и было сожжено почти 240 квадратных миль, в том числе более 18 000 построек и нанесен ущерб в размере 16 миллиардов долларов. Лучшее понимание лесных пожаров может спасти жизни и помочь направить ресурсы пожаротушения туда, где они могут принести наибольшую пользу.

Моделирование лесных пожаров почти так же старо, как и компьютерные технологии. В настоящее время лучшая модель лесного пожара в мире - FIRETEC, из лабораторий Лос-Аламоса. FIRETEC использует вычислительную гидродинамику для моделирования пожаров в масштабе ландшафта на кубической сетке вокселей размером 1 метр. FIRETEC очень впечатляет, но у него есть два основных ограничения. Во-первых, для работы ему нужны ресурсы крупного суперкомпьютерного центра, такого как Лос-Аламо. Во-вторых, даже если у вас есть суперкомпьютер, FIRETEC работает медленнее, чем в реальном времени, что делает его бесполезным для прогнозирования.

У пожарных есть практические правила поведения при пожаре. Фронты пламени двигаются ветром. Огонь горит быстрее в гору, чем на спуске. Пожары могут направляться по каньонам и переходить от линии хребта к линии хребта на раскаленных углях, пропуская долины внизу. Хотя лесные пожары непредсказуемы, существуют новые закономерности в их поведении.

Машинное обучение умеет различать закономерности, которые ускользают от человеческих способностей, и существует множество исторически доступных данных о лесных пожарах. Обучение моделей машинного обучения происходит медленно, но как только обученная модель доступна, прогнозирование выполняется быстро; порядка миллисекунд. FireMind использует глубокие нейронные сети и исторические данные о лесных пожарах для моделирования распространения лесных пожаров.

Формально мы хотим сделать шаг прогнозирования, как показано ниже. Использовать местоположение фронта пламени сегодня, чтобы предсказать, где будет фронт пламени завтра, с учетом местной топографии и погоды.

Источники данных и подготовка

Лесной пожар описывается треугольником огня: тепло, топливо и кислород. Огонь будет распространяться, пока присутствуют все три элемента, и борьба с огнем осуществляется путем удаления одной или нескольких сторон треугольника. Тепло представлено периметрами лесных пожаров, которые ведутся с помощью программы GeoMAC. Топливо регистрируется в наборе данных Landfire вместе с топографией. А набор данных NREL WIND обеспечивает запись атмосферных условий, включая ветер, температуру и осадки.

Конечно, поскольку эти три набора данных обслуживаются тремя разными федеральными агентствами, они представлены в совершенно разных форматах. GeoMac записывает свои наблюдения в виде шейп-файлов. Периметр пожара представляет собой векторизованную форму с вершинами, обозначенными координатами широта-долгота, а пожар состоит из дневных периметров. К счастью, шейп-файлы прекрасно работают с библиотекой GeoPandas, которая очень похожа на Pandas, но для данных ГИС. NREL WIND использует в качестве единиц измерения километровые кубы, но у него есть питонический API, где легко вводить координаты, время и типы информации, которые вы хотите, и выводить результаты в массив NumPy. Landfire представляет топливную нагрузку и топографию в виде континентального растра размером 30 x 30 м, полученного из спутниковых наблюдений Landsat, дополненного локальными обновлениями и сохраненного в собственном формате ArcGIS.

Я использовал набор растровых данных GeoMAC размером 30 м x 30 м в качестве базового разрешения, так как я планировал использовать массивы NumPy в качестве входных данных для моей модели, и создание каждого квадрата 30 м x 30 м, эквивалентного одной ячейке в массиве, казалось очевидным выбором. Остальные источники данных будут изменены, чтобы соответствовать этому стандарту.

Я преобразовал систему координат фигур Landfire с широты на долготу в EPSG: 5070, систему координат, используемую GeoMAC. Поскольку широта и долгота задают точку на сфере (ну, сфероиде), а бумага и экраны плоские, для правильного перевода координат широты и долготы в то, что можно построить, требуется сперический триггер. Я использовал максимальную протяженность каждого пожара, чтобы создать ограничивающую рамку с размером и разрешением, чтобы каждый пиксель на графике соответствовал квадрату 30 х 30 м, затем построил дневной периметр пожара, а затем прочитал буфер графика, чтобы получить массив, соответствующий периметру пожара (примечание: я знаю о RasterIO и Fiona, но эта задача была достаточно уникальной, чтобы этот метод был быстрее). Эти массивы хранились как маринованные словари вместе с данными о пожаре и углы ограничивающей рамки.

Углы ограничивающих прямоугольников использовались для создания еще двух наборов массивов для каждого пожара. ArcGIS включает встроенный интерпретатор Python, который я использовал для считывания топографических данных, включая уклон, аспект и высоту, и, что наиболее важно, код Стандартная модель поведения при пожаре, модель топлива Скотта и Бургана для расчетной топливной нагрузки в этом регионе.

Машинное обучение

Поскольку для машинного обучения требуются идентично отформатированные данные, а периметры огня варьировались по размеру от нескольких сотен метров до нескольких сотен километров, я позаимствовал сверточные методы из машинного зрения, чтобы пересечь край огня, обнаружив массивы 256 x 256 пикселей в местах распространения огня. но не превысил размер массива.

NREL WIND API преобразовал координаты широты и долготы в свое собственное пространственное разрешение в 1 км, создав набор погодных данных, включая скорость ветра, направление ветра, осадки, влажность и температуру. Они были объединены с описанными выше свертками для получения 71 000 тензоров развития пожара, массивов идентичной формы, описывающих развитие пожара, местную топографию и погоду.

Эти тензоры огня хранились в базе данных NoSQL и передавались в составную нейронную сеть, написанную на Keras. Архитектура нейронной сети объединила три нейронные сети: сверточную нейронную сеть для извлечения высокоуровневых характеристик из статической топографии, сеть с долгосрочной кратковременной памятью (LSTM) для суммирования дневной погоды и, наконец, регуляризованный многослойный персептрон для понимания изменений в огне. периметр.

Эта сеть была обучена в течение 48 часов с использованием инстанса EC2 AWS p3.8xlarge, мощного компьютера для машинного обучения с несколькими графическими процессорами Nvidia V100 с тензорными ядрами. Оборудование p3.8xlarge стоит столько же, сколько спортивный автомобиль, а почасовая оплата сопоставима с арендой. Конечно, это демократизирующая сила облачных вычислений. Хотя у FIRETEC и Лос-Аламоса определенно есть более мощный компьютер, я смог получить машину, которая намного лучше, чем все, что я мог себе позволить на месте, с не более чем кредитной картой и подключением к Интернету - и поскольку Metis предоставляет 1000 долларов в качестве кредита AWS как часть во время буткемпа, я даже не заработал никаких обвинений!

Результаты были впечатляющими. Учитывая тензор огня, FireMind смог предсказать, какие квадраты 30x30 будут воспламенены в следующие 24 часа, с оценкой F1, равной 0,85. С точки зрения машинного обучения это неплохо!

FireMind очень быстр, он действительно предсказывает за миллисекунды. Но лесной пожар сложен; огненные бури создают свою собственную погоду. Wildfire хаотичен; Один дрейфующий тлеющий тлеющий тлеющий тлеющий тлеющий тлеющий тлеющий тлеющий тлеющий тлеющий тлеющий тлеющий угол может превратить в бушующий ад. Занимаясь наукой о данных, мы должны осознавать ограничения наших моделей и последствия ошибки. 0.85 F1 - это неплохо, но недостаточно, когда на карту поставлены дома и жизнь.

Я хотел бы поблагодарить нескольких человек за их помощь в этом проекте. Все на Metis San Francisco Fall 2018, но особенно Адам Уирн; Роберт Тейлор из Службы национальных парков, который задержался, чтобы ответить на все мои вопросы о поведении пожаров и источниках данных о лесных пожарах; и Бет Бурнам и Эрику Кеннеди за то, что они вдохновили меня на этот проект и помогли мне вслух задуматься над ним.