Алгоритмическая базовая линия задачи развития городов SpaceNet 7 с разным временным интервалом

Предисловие: SpaceNet LLC - это некоммерческая организация, деятельность которой направлена ​​на ускорение прикладных исследований с открытым исходным кодом и искусственного интеллекта для геопространственных приложений, в частности, фундаментального картографирования (т. е. обнаружения следов зданий и дорожных сетей). SpaceNet управляется в сотрудничестве соучредителем и управляющим партнером CosmiQ Works, соучредителем и сопредседателем Maxar Technologies и нашими партнерами, включая Amazon Web Services (AWS), Capella Space, Topcoder. , IEEE GRSS, Национальное агентство геопространственной разведки и Планета.

SpaceNet 7 Challenge ставит перед собой амбициозную цель: определять и отслеживать местоположения зданий и их изменения (т. Е. Строительство) на уровне идентификаторов отдельных зданий, и все это на основе глубокого временного стека спутниковых изображений среднего разрешения. Как уже говорилось в нашем Блоге объявлений о SN7, эта задача очень актуальна для множества сценариев гуманитарного, городского планирования и реагирования на стихийные бедствия. В этом посте мы открываем исходный код алгоритмической основы для SpaceNet 7 Challenge, как средство демонстрации того, что предлагаемая задача действительно выполнима, и как отправная точка, которая значительно снижает входной барьер для участников предстоящего соревнования. .

1. Солярис

Solaris - это конвейер машинного обучения с открытым исходным кодом для получения изображений над головой, разработанный CosmiQ Works. Этот пакет позволяет неспециалистам в геопространственной сфере создавать, обучать, тестировать и оценивать модели машинного обучения с помощью простого и хорошо документированного рабочего процесса. Кроме того, значительные усилия, вложенные в предварительную обработку данных, значительно сокращают проблемы, связанные с использованием геопространственных данных; например, часто раздражающая задача преобразования меток GeoJSON произвольной системы координат (CRS) в пиксельные координаты или пиксельную маску является тривиальной в Solaris. Соответственно, что неудивительно, мы используем Solaris в качестве базового алгоритма.

2. Доступ к данным

Как всегда в SpaceNet, данные находятся в свободном доступе в Реестре открытых данных на AWS. Все, что вам нужно, это учетная запись AWS и установленный и настроенный AWS CLI. Как только вы это сделаете, просто выполните команду ниже, чтобы загрузить набор данных для обучения в свой рабочий каталог:

cd /working_directory/
aws s3 cp s3://spacenet-dataset/spacenet/SN7_buildings/tarballs/SN7_buildings_train.tar.gz .
aws s3 cp s3://spacenet-dataset/spacenet/SN7_buildings/tarballs/SN7_buildings_test_public.tar.gz .

3. Подготовка данных

Метки на контурах зданий SpaceNet 7 имеют формат GeoJSON. Мы будем использовать папку labels_match, которая содержит как геометрию, так и уникальный идентификатор для каждого здания (см. Рисунок 1).

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

make_geojsons_and_masks(name_root, image_path, json_path,   
                        output_path_mask, output_path_mask_fbc=None)

Что сделает что-то похожее на:

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

4. Обучение

Обучение просто запустить. После загрузки базового алгоритма с GitHub и создания файла докеров просто запустите:

python sn7_baseline_public_train.py

Эта модель основана на представлении XD_XD для решения SpaceNet 4 и имеет архитектуру VGG16 + U-Net. Обучение для полных 300 эпох базовой модели должно занять 20 часов (~ 60 долларов США) на инстансе AWS p3.2xlarge. В качестве альтернативы вместо обучения можно использовать предварительно обученные веса, включенные в базовый репозиторий.

5. Заключение - маска сегментации

После завершения обучения (или выбора предварительно обученных весов) вывод может быть инициирован с помощью:

python sn7_baseline_public_infer.py

Для набора данных SpaceNet 7 test_public сценарий будет выполняться за ~ 2,5 минуты на экземпляре AWS p3.2xlarge (что соответствует скорости вывода ~ 60 квадратных километров в секунду). Результатом модели сегментации является маска прогнозирования следов здания (см. Рисунки 3, 4), и производительность на удивление хороша с учетом умеренного разрешения изображений.

6. Извлечение следов

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

geoms = sol.vector.mask.mask_to_poly_geojson(mask_image,      
                   min_area=min_area, output_path=output_path_pred,  
                   output_type=’geojson’, bg_threshold=bg_threshold)

7. Отслеживание идентификатора здания

Связывание идентификаторов зданий между временными шагами - самый сложный этап базового алгоритма. Включение неиспользуемых масок данных (UDM) в метки SpaceNet 7 важно с точки зрения полноты набора данных, но усложняет отслеживание идентификаторов при построении. Это связано с тем, что надписи на зданиях иногда ведут себя как субатомные частицы, появляясь и исчезая, казалось бы, случайным образом в зависимости от облачности. Это показано на рисунке 6.

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

track_footprint_identifiers(json_dir, out_dir, min_iou=min_iou, 
                               iou_field=’iou_score’, id_field=’Id’)

Хотя этот модуль согласования посадочных мест, конечно, несовершенен, во многих случаях он работает достаточно хорошо (см. Рисунок 7).

8. Подсчет очков

Оценка с использованием устаревшей метрики SpaceNet для F1 на основе долговых расписок дает совокупную оценку F1 = 0,42. Предыдущие SpaceNets имели гораздо более высокие баллы (например, F1> 0,8 в надире в SpaceNet 4) и использовали более высокий порог долгового обязательства 0,5 (против 0,25 для SpaceNet 7 из-за очень малых размеров здания в пикселях), но изображения также были ~ На 10✕ резче. В целом, базовый показатель F1 все еще выше, чем мы ожидали.

Тем не менее, эта оценка F1 не отражает динамическую природу набора данных SpaceNet 7, и поэтому метрика SCOT является гораздо более информативной. Более подробная информация об этой метрике доступна в предыдущем блоге, но вкратце: метрика SpaceNet Change and Object Tracking (SCOT) объединяет термин отслеживания и изменения объекта в единую оценку. Для SpaceNet 7 мы считаем, что срок изменения (средний балл 0,06) намного сложнее, чем термин отслеживания (средний балл 0,39). В совокупности оценка каждой из 20 областей интереса в наборе данных SpaceNet test_public дает общий балл SCOT = 0,158 (из возможных 1,0).

9. Выводы.

Хотя задача SpaceNet 7 - очень сложная, и мы довольны этой оценкой в ​​качестве исходной точки, безусловно, есть много возможностей для улучшения. См. Репозиторий GitHub CosmiQ_SN7_Baseline для получения дополнительных сведений об алгоритмической базовой линии и о том, как пройти через весь алгоритм от начала до конца.

Возможность локализовать и отслеживать изменения в следах зданий с течением времени имеет фундаментальное значение для множества приложений, от обеспечения готовности к стихийным бедствиям и реагирования на городское планирование. Базовая модель SpaceNet 7, обсуждаемая в этом блоге, должна стать хорошей отправной точкой для дальнейших исследований этой сложной задачи. В связи с предстоящим запуском SpaceNet 7 (теперь он намечен на 8 сентября 2020 г.) мы с нетерпением ждем возможности увидеть, какие улучшения могут быть внесены в этот базовый уровень.

* Благодарим Ника Вейра и Дэниела Хогана за помощь в разработке алгоритмической базы.

* 2020 г. - 28 августа - Обновление: в этот блог добавлены дополнительные сведения о подсчете очков.