Оптимизированные по времени сценарии эвакуации с помощью спутниковых снимков

Недавние исследования по извлечению дорожных сетей (1, 2, 3) позволили отказаться от все время сложной задачи идентификации маршрутизируемых сетей по изображениям, полученным сверху. Недавний SpaceNet 5 Challenge расширил границы возможного, извлекая не только маршрутизируемые сети, но и оценки времени в пути для каждой обнаруженной дороги. Неудивительно, что все последние достижения (включая SpaceNet 5) используют сети глубокого обучения различными способами, что требует использования графических процессоров (GPU) для обучения этих сетей в разумные сроки.

Это вызывает важный вопрос: всегда ли необходимо использовать выделенное оборудование для извлечения высококачественных дорожных сетей из изображений дистанционного зондирования, или эта задача возможна только с ноутбуком и некоторым открытым исходным кодом? В этом блоге мы показываем, что скромного оборудования (т.е.. MacBook Pro) действительно достаточно для запуска высокопроизводительной модели. В следующих разделах мы проведем читателя через недавнее автономное учебное пособие с открытым исходным кодом, которое демонстрирует, как построить временной график дорог и проанализировать сценарии эвакуации в ранее невиданном городе.

1. Введение

В предыдущих сообщениях (например 4, 5, 6) мы подробно обсуждали проблемы извлечения дорожной сети из изображений дистанционного зондирования. Соответственно, мы пропускаем длительный анализ причин и осложнений и упоминаем лишь несколько моментов:

  1. Оптимизированная по времени маршрутизация (а не простая геометрическая маршрутизация) имеет решающее значение для большинства сценариев (см. Рисунок 1).
  2. Коммерческие продукты (например, Google Maps, Apple Maps) часто полагаются на сигналы GPS сотового телефона и нечасто обновляемые изображения для определения маршрутов в реальном времени; в динамическом сценарии (например, стихийное бедствие) существующие дорожные сети могут устареть, а вышки сотовой связи могут выйти из строя. Кроме того, лежащие в основе данные являются собственностью, что еще больше усложняет их использование практикующими специалистами.
  3. Предложения с открытым исходным кодом, такие как OpenStreetMap (OSM), являются отличным ресурсом, хотя и имеют ограничения. Краудсорсинговый характер OSM означает, что обновление карт может занять значительное время. Например, гуманитарной команде OpenStreetMap (HOT) потребовалось более двух месяцев, чтобы полностью нанести на карту Пуэрто-Рико после урагана Мария в 2017 году, даже с тысячами добровольцев. Кроме того, метаданные дороги OSM, которые можно использовать для оптимизации маршрутизации, часто отсутствуют, а качество маркировки осевой линии дороги нестабильно (см. Рисунок 2).

2. Алгоритмический подход.

Алгоритм извлечения дорог в масштабе города из спутниковых изображений (CRESI) служил алгоритмической базой для SpaceNet 5 Challenge. Хотя участникам испытания удалось улучшить производительность базовой линии CRESI примерно на 5%, мы будем использовать исходную модель CRESI для этого упражнения, поскольку она имеет самое быстрое время выполнения и предназначена для масштабирования до произвольно больших изображений.

Изображения SpaceNet и обученные веса моделей являются частью Реестра открытых данных на AWS и могут быть загружены бесплатно. Поэтому все, что вам нужно для запуска этого руководства, - это учетная запись AWS и установка Docker на вашем локальном компьютере. Мы отсылаем читателей к Части 1 руководства, чтобы быстро настроить среду CRESI.

3. Данные испытаний

В этом упражнении мы исследуем подмножество области интересов SpaceNet № 10: Дар-эс-Салам. Этот город не использовался для тестирования в SpaceNet 5, а это означает, что предварительно обученная модель вообще не проходила обучение в этом городе. Хотя CRESI легко масштабируется до областей произвольного размера, мы несколько обрезаем изображение, чтобы облегчить визуализацию вывода. Рассматриваемая здесь область тестирования по-прежнему составляет 11,7 квадратных километров и более 130 миллионов пикселей.

4. Прогнозирование дорожной сети

Вывод может быть вызван простым вызовом одной команды, которая будет последовательно выполнять многоэтапный процесс CRESI:

./test.sh configs/dar_tutorial_cpu.json

В этом блоге мы кратко опишем каждый шаг, пожалуйста, обратитесь к руководству для получения более подробной информации.

4.А. Вывод модели глубокого обучения и сшивание маски

Для начала применим обученную модель глубокого обучения к нашим тестовым изображениям. Во-первых, мы разбиваем изображение на управляемые размеры (~ 400 x 400 метров или 1300 x 1300 пикселей), поскольку полное изображение в 130 миллионов пикселей будет намного превышать доступную память на не суперкомпьютерах. Эти плитки маски впоследствии сшиваются вместе (см. Рисунок 4). Многие алгоритмы извлечения дорог заканчиваются на этом после создания пиксельной маски дороги. Однако нам еще предстоит сделать еще несколько шагов.

4.B. Скелетизация и создание графов

Затем мы уточняем и очищаем совокупную маску вывода, затем вычисляем скелет изображения, извлекаем граф из этого скелета и вычисляем географические координаты из метаданных изображения. Эти шаги дают дорожный график, как на рисунке 5.

4.C. Оценки скорости

Последний шаг - использовать информацию, закодированную в масках многоканального прогнозирования, в сочетании с графиком, созданным на предыдущих шагах, для определения скорости дороги и времени в пути (рисунок 6).

Вывод выполняется быстро, все шаги занимают ‹20 минут даже без графического процессора. Результатом является графическая структура NetworkX, содержащая информацию о скорости / времени в пути для каждой дороги, которую мы проиллюстрировали на рисунках 7 и 8.

5. Маршрутизация

Мы можем использовать окончательную дорожную сеть, чтобы быстро вычислить оптимальные маршруты между интересующими узлами. Кроме того, у нас есть гибкость в том, как мы определяем «оптимальный» - возможно либо пройденное расстояние, либо общее время в пути.

Предположим, что у нас есть известная позиция актива («источник»), и мы хотим эвакуироваться на северо-восток («цель»). Расчет оптимальных маршрутов в этом сценарии можно выполнить с помощью команд, подобных следующим:

import networkx as nx
dl, path_0 = nx.single_source_dijkstra(G, source, target,   
                                       weight=’length’)
dt, path_1 = nx.single_source_dijkstra(G, source, target, 
                                       weight=’time’)

Построение двух различных оптимальных маршрутов, вычисленных нами с помощью приведенной выше команды, дает рисунок 9.

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

6. Выводы

В этом блоге показано, как извлечь график дорожной сети с оценками скорости / времени в пути непосредственно из спутниковых снимков, используя только данные и код из открытых источников. Вывод происходит относительно быстро, со скоростью 0,7 квадратных километра в минуту даже на центральном процессоре. Время вывода графического процессора будет как минимум в 20 раз быстрее. Даже для города, невидимого во время обучения (Дар-эс-Салам), алгоритму CRESI удается вернуть сеть дорог, которая является достаточно полной, чтобы ее можно было маршрутизировать. Мы показали, как вычислять оптимальные маршруты, и продемонстрировали важность маршрутизации с использованием скорости по сравнению с геометрическим расстоянием. Мы призываем заинтересованные стороны исследовать новые регионы тестирования, вычислять новые маршруты и глубже погружаться в тонкости извлечения и маршрутизации дорожной сети, изучая учебник, на котором основан этот блог.