Project Shackleton: маршрутизация в реальном времени с использованием спутниковых изображений

Когда стандартные методы навигации (например, карты Google) не работают, а время имеет решающее значение, как можно эвакуироваться (или найти помощь) из опасного места? В этом посте мы рассмотрим один вариант, который мы называем Project Shackleton. Как мы уже отмечали ранее, в случае стихийного бедствия (будь то землетрясение или вторжение), когда связь ненадежна, изображения с высоты часто дают первое представление о том, что происходит на земле. Соответственно, Project Shackleton сочетает в себе спутниковые/воздушные изображения с передовым компьютерным зрением и аналитикой теории графов. Эти прогнозы и аналитика включены в интерактивную информационную панель для расчета ряда сценариев эвакуации и маршрутизации. В этом посте мы исследуем эти сценарии и подробно расскажем о кодовой базе, которую мы с гордостью выпустили в открытый доступ на прошлой неделе на конференции FOSS4G.

Также доступно пояснительное видео (ниже) для тех, кто хотел бы увидеть код в действии.

1. Мотивация

Наш предыдущий пост, посвященный кодовой базе Diet Hadrade, подробно рассказал о мотивации этого проекта. Поскольку Шеклтон расширяет диету Хадраде, большая часть мотивации остается прежней. Те читатели, которые знакомы с блогом Diet Hadrade, могут смело переходить к Разделу 2. В противном случае читайте дальше.

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

Надежный показатель плотности населения имеет решающее значение для эффективного реагирования на стихийные бедствия и гуманитарные кризисы. Автомобили предоставляют такой прокси. Люди, как правило, остаются рядом со своими автомобилями, поэтому информация о том, где находятся автомобили в режиме реального времени, полезна в сценариях реагирования на стихийные бедствия. В этом проекте мы используем кодовую базу YOLTv5 (которая построена поверх YOLOv5) для быстрой идентификации и геолокации транспортных средств на больших территориях. Геолокация всех транспортных средств в районе позволяет спасателям расставлять приоритеты в зонах реагирования.

Тем не менее, обнаружение транспортных средств действительно становится самостоятельным в сочетании с данными дорожной сети. Мы используем структуру CRESI для извлечения дорожных сетей с оценками времени в пути, что позволяет оптимизировать маршрутизацию. Кодовая база CRESI способна извлекать дороги только с изображениями, поэтому затопленные участки или загражденные проезжие части будут разъединять дорожный граф CRESI; это имеет решающее значение для сценариев после бедствий, когда существующие дорожные карты могут быть устаревшими, а маршрут, предложенный навигационными службами, может быть непроходимым или опасным.

Размещение обнаруженных транспортных средств на дорожном графе позволяет использовать множество аналитики теории графов (заторы, эвакуация, центральное положение перекрестка и т. д.). Особо следует отметить, что выбранный ниже тестовый город (Дар-эс-Салам) не представлен ни в каких обучающих данных ни для CRESI, ни для YOLTv5. Подразумевается, что эта методология достаточно надежна и может быть немедленно применена к невидимым географическим регионам всякий раз, когда может возникнуть новая потребность.

2. Данные и глубокое обучение

Мы используем изображение Дар-эс-Салама SpaceNet 5 для наших тестовых снимков. Усовершенствованные алгоритмы компьютерного зрения в идеале будут выполняться на графическом процессоре, и мы используем бесплатно доступную лабораторию Amazon SageMaker StudioLab для вывода на основе глубокого обучения. Настроить среду StudioLab для выполнения как CRESI, так и YOLTv5 довольно просто, и вывод занимает около 3 минут для нашего тестового региона площадью 12 квадратных километров. Точные шаги расписаны в этой тетради.

3. Панель инструментов Шеклтона

Панель управления Shackleton создает сервер боке, который отображает данные и подключается к базовым библиотекам Python (таким как NetworkX, OSMnx и scikit-learn). Мы также запускаем тайловый сервер, любезно предоставленный localtileserver, для визуализации наших спутниковых изображений.

Просто выполните следующую команду, чтобы запустить панель управления:

test_im_dir=shackleton_dir/data/test_imagery
bokeh serve -show src/shackleton/shackleton_dashboard.py \
 -args $test_im_dir/test1_realcog_clip.tif \
 results/test1/yoltv5/geojsons_geo_0p3/test1_cog_clip_3857.geojson \   
 results/test1/cresi/graphs_speed/test1_cog_clip_3857.gpickle

Это вызовет интерактивную панель инструментов, которая будет выглядеть примерно так, как показано на рисунке ниже:

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

  • Состояние дорожной сети в реальном времени
  • Локализация и классификация транспортных средств
  • Оптимизированная массовая эвакуация или вход
  • Оценка перегрузки и перенаправление
  • Критические узлы связи/логистики
  • Предполагаемый риск со стороны враждебных субъектов

Щелчок по любому узлу в сети переместит точку эвакуации/входа в этот узел, что значительно расширит количество сценариев, которые можно исследовать. На рис. 2 показаны несколько вариантов использования.

4. Выводы

В этом блоге мы показали, как объединить машинное обучение с теорией графов, чтобы создать панель инструментов для изучения множества сценариев транспортировки и логистики. Не полагаясь ни на что, кроме изображений с высоты птичьего полета, мы можем оценить заторы, определить массовые маршруты эвакуации / въезда, отметить критические узлы в дорожной сети, а также множество других аналитических данных. Наша кодовая база имеет открытый исходный код, с автономными прогнозами и примерами данных, позволяющими довольно легко разворачивать информационную панель, а наше объяснительное видео иллюстрирует, как использовать Shackleton. В будущих блогах мы рассмотрим еще несколько вариантов использования и продемонстрируем другие функции, встроенные в Shackleton; тем временем мы призываем заинтересованные стороны изучить кодовую базу.