Scraper Обновлено: 3 October, 2019

Базовая линия SpaceNet 5 - Часть 1. Подготовка изображений и меток

  Перевод   Ссылка на автора

Предисловие: SpaceNet LLC является некоммерческой организацией, занимающейся ускорением прикладных исследований с открытым исходным кодом, прикладного искусственного интеллекта для геопространственных приложений, в частности, основополагающего картирования (т. е. определения зоны охвата и обнаружения дорожной сети). SpaceNet работает в сотрудничестве с CosmiQ Works , Максар Технологии , Intel AI , Amazon Web Services (AWS) , Капелла Космос , а также TopCoder ,

Есть еще много времени, чтобы принять участие в SpaceNet 5 Challenge это стремится определить время прохождения маршрута вдоль дорог непосредственно из спутниковых снимков. В поддержку этой довольно сложной задачи этот пост знакомит читателей с этапами, необходимыми для подготовки данных для первого шага в нашем базовая линия: создание обучающих масок для модели сегментации глубокого обучения. Код для воспроизведения процессов, описанных ниже, доступен в нашем CRESI GitHub хранилище,

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

Доступ к данным SpaceNet бесплатный и требует только создания учетной записи AWS. Для начала мы загрузим данные для SpaceNet 3 и SpaceNet 5. Пример команды загрузки показан ниже (см. spacenet.ai для дальнейших инструкций).

aws s3 cp s3://spacenet-dataset/spacenet/SN5_roads/tarballs/SN5_roads_train_AOI_7_Moscow.tar.gz  /path/to/data

2. Установка CRESI

Извлечение дорог в масштабе города из спутниковых снимков (CRESI) была разработана для извлечения оценок дорог и скорости в больших масштабах, но одинаково хорошо работает на меньших чипах изображений SpaceNet 5 Challenge. Для запуска CRESI вам понадобится докер (в идеале докер-NVIDIA версия) установлена ​​на компьютере с графическим процессором. Все команды CRESI должны выполняться в этом контейнере Docker.

А. Скачать:

cd /path/to/cresi/
git clone https://github.com/avanetten/cresi.git

B. Построить образ докера:

cd /path/to/cresi/docker
nvidia-docker build — no-cache -t cresi_image .

C. Создать Docker-контейнер:

nvidia-docker run -it — rm -ti — ipc=host — name cresi_container cresi_image

D. Присоедините док-контейнер:

docker attach cresi_container

3. Подготовьте образы

Форматы данных SpaceNet 3 и SpaceNet 5 немного отличаются из-за дополнительной постобработки, выполняемой с изображениями SpaceNet 5. Трехполосное панорамирование RGB-изображений (PS-RGB) для SpaceNet 3 было распространено в собственном 16-битном формате данных. В SpaceNet 5 в трехполосных панхроматических изображениях RGB использовался продукт Maxar DRA (Dynamic Range Adjusted), который стремится выровнять цветовые шкалы и дает 8-битное изображение. Обостренные 8-полосные мультиспектральные изображения (PS-MS) подготовлены одинаково для обеих задач, поэтому мы будем использовать эти данные для обучения и тестирования.

Хотя мы теряем значительный объем информации, используя только подмножество мультиспектральных полос, для удобства исследования мы извлекаем 8-битные изображения RGB из 16-битных мультиспектральных изображений, где RGB соответствует полосам 5, 3, 2 соответственно , Это достигается черезcreate_8bit_images.pyскрипт. В этом примере мы изменяем масштаб изображения до 2-го и 98-го процентиля значений пикселей при преобразовании в 8-разрядный. Сценарий, приведенный ниже, должен быть запущен для всех 6 областей обучения, представляющих интерес (AOI): AOI_2_Vegas, AOI_3_Paris, AOI_4_Shanghai, AOI_5_Khartoum, AOI_7_Moscow, AOI_8_Mumbai.

# SN3
python /path/to/cresi/cresi/data_prep/create_8bit_images.py \
— indir=/path/to/data/SN3_roads/AOI_4_Shanghai/PS-MS \
— outdir=/path/to/data/cresi_data/8bit/PS-RGB
— rescale_type=perc \
— percentiles=2,98 \
— band_order=5,3,2# SN5
python /path/to/cresi/cresi/data_prep/create_8bit_images.py \
— indir=/path/to/data/SN5_roads/AOI_7_Moscow/PS-MS \
— outdir=/path/to/data/cresi_data/8bit/PS-RGB \
— rescale_type=perc \
— percentiles=2,98 \
— band_order=5,3,2
Рисунок 1. Обучающие образы для нашей базовой линии. Слева: образец изображения над Лас-Вегасом (SpaceNet 3). Справа: образец изображения над Москвой (SpaceNet 5).

4. Учебные маски

geojson_roads_speedпапка в каждой области интереса (AOI) содержит метки осевой линии дороги вместе с оценками безопасной скорости движения для каждой дороги (см. Вот для дальнейших деталей). Мы будем использовать эти метки средней линии и оценки скорости для создания тренировочных масок. Мы предполагаем, что буфер маски составляет 2 метра, что означает, что каждой дороге назначается общая ширина 4 метра. Помните, что целью нашего этапа сегментации является обнаружение осевых линий дороги, поэтому, хотя это не точная ширина дороги, буфер 2 метра является подходящей шириной для нашей модели сегментации. Мы рассмотрим два варианта, непрерывные маски и многоканальные маски.

Рисунок 2. Пример метки GeoJSON с полушириной маски 2 метра.

4.1 Непрерывные маски

Одним из вариантов обучения модели сегментации является создание тренировочных масок, в которых значение маски пропорционально скорости дорожного полотна. Это может быть достигнуто путем запускаspeed_masks.pyскрипт. В следующем примере мы предполагаем, что данные были загружены в/данныекаталог. Выходы показаны на рисунке 3.

# SN3
python /path/to/cresi/cresi/data_prep/speed_masks.py \
-geojson_dir=/data/SN3_roads/AOI_2_Vegas/geojson_roads_speed \
-image_dir=/data/SN3_roads/AOI_2_Vegas/PS-MS \
-output_conversion_csv= /data/cresi_data/cresi_train/SN3_roads_train_speed_conversion_continuous.csv \
-output_mask_dir= /data/cresi_data/cresi_train/train_mask_continuous \
-buffer_distance_meters=2# SN5
python /path/to/cresi/cresi/data_prep/speed_masks.py \
-geojson_dir=/data/SN5_roads/AOI_7_Moscow/geojson_roads_speed \
-image_dir=/data/SN5_roads/AOI_7_Moscow/PS-MS \
-output_conversion_csv= /data/cresi_data/cresi_train/SN5_roads_train_speed_conversion_continuous.csv \
-output_mask_dir= /data/cresi_data/cresi_train/train_mask_continuous \
-buffer_distance_meters=2
Рисунок 3. Слева: пример тренировочного образа в Москве. Середина: типичная бинарная тренировочная маска. Справа: непрерывная маска, где значение маски пропорционально значению интереса (в данном случае ограничение скорости).

4.2 Многоканальные маски

Второй вариант обучения модели сегментации - создание многоканальных обучающих масок, где каждый канал соответствует диапазону скоростей. В приведенном ниже сценарии мы с интервалом в 10 миль / ч получаем 7 контейнеров. Мы также добавляем общую двоичную маску (как мы увидим позже, это помогает в первоначальном извлечении дороги), в общей сложности 8 корзин.

# SN5 — binned
python /path/to/cresi/cresi/data_prep/speed_masks.py \
-geojson_dir=/data/SN5_roads/AOI_8_Mumbai/geojson_roads_speed \
-image_dir=/data/SN5_roads/AOI_8_Mumbai/PS-MS \
-output_conversion_csv= /data/cresi_data/cresi_train/SN5_roads_train_speed_conversion_binned.csv \
-output_mask_dir=/data/cresi_data/cresi_train/train_mask_binned
-output_mask_multidim_dir= /data/cresi_data/cresi_train/train_mask_binned_mc
-buffer_distance_meters=2
Рисунок 3. Слева: пример тренировочного образа в Мумбаи Середина: типичная бинарная тренировочная маска. Справа: многоканальная тренировочная маска, где красный цвет соответствует 21–30 миль в час, зеленый - 31–40 миль в час, а синий - 41–50 миль в час.

5. Выводы

В этом посте мы продемонстрировали, как подготовить тренировочные маски для задачи SpaceNet 5. Вывод скриптов, на которые есть ссылки в этом посте (доступен в этом блокнот), может быть введен непосредственно в модель сегментации глубокого обучения. Следите за новостями о предстоящем посте сегментации и не стесняйтесь получить призовой фонд в размере $ 50 000 для постоянный вызов,