Предисловие: SpaceNet LLC является некоммерческой организацией, занимающейся ускорением прикладных исследований с открытым исходным кодом, прикладного искусственного интеллекта для геопространственных приложений, в частности, основополагающего картирования (т. е. определения зоны охвата и обнаружения дорожной сети). SpaceNet работает в сотрудничестве с CosmiQ Works , Максар Технологии , Intel AI , Amazon Web Services (AWS) , Капелла Космос , а также TopCoder ,
Есть еще много времени, чтобы принять участие в SpaceNet 5 Challenge это стремится определить время прохождения маршрута вдоль дорог непосредственно из спутниковых снимков. В поддержку этой довольно сложной задачи этот пост знакомит читателей с этапами, необходимыми для подготовки данных для первого шага в нашем базовая линия: создание обучающих масок для модели сегментации глубокого обучения. Код для воспроизведения процессов, описанных ниже, доступен в нашем CRESI GitHub хранилище,
Доступ к данным 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
Извлечение дорог в масштабе города из спутниковых снимков (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
Форматы данных 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
geojson_roads_speedпапка в каждой области интереса (AOI) содержит метки осевой линии дороги вместе с оценками безопасной скорости движения для каждой дороги (см. Вот для дальнейших деталей). Мы будем использовать эти метки средней линии и оценки скорости для создания тренировочных масок. Мы предполагаем, что буфер маски составляет 2 метра, что означает, что каждой дороге назначается общая ширина 4 метра. Помните, что целью нашего этапа сегментации является обнаружение осевых линий дороги, поэтому, хотя это не точная ширина дороги, буфер 2 метра является подходящей шириной для нашей модели сегментации. Мы рассмотрим два варианта, непрерывные маски и многоканальные маски.
Одним из вариантов обучения модели сегментации является создание тренировочных масок, в которых значение маски пропорционально скорости дорожного полотна. Это может быть достигнуто путем запуска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
Второй вариант обучения модели сегментации - создание многоканальных обучающих масок, где каждый канал соответствует диапазону скоростей. В приведенном ниже сценарии мы с интервалом в 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
В этом посте мы продемонстрировали, как подготовить тренировочные маски для задачи SpaceNet 5. Вывод скриптов, на которые есть ссылки в этом посте (доступен в этом блокнот), может быть введен непосредственно в модель сегментации глубокого обучения. Следите за новостями о предстоящем посте сегментации и не стесняйтесь получить призовой фонд в размере $ 50 000 для постоянный вызов,