Практические руководства

Обнаружение участков снега и облаков на спутниковых снимках

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

В конце сентября 2020 года мы приняли участие в Copernicus Hackathon Sweden 2020. На хакатоне, организованном Arctic Business и Innovatum Startup, все участвующие команды использовали спутниковые снимки в рамках европейского проекта Copernicus для решения различных проблем, связанных с изменением климата, жизнью на суше и COVID-19.

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

Проблема обнаружения снега и облаков

На хакатоне были поставлены задачи по решению самых разных проблем, от нехватки воды до автоматического разграничения полей и COVID-19. Мы выбрали задачу Обнаружение снега и облаков. Задача заключалась в создании моделей, способных обнаруживать на изображениях участки снега и облака. Из-за схожих спектральных характеристик этих двух изображений проблема различения снега и облаков в данных спутникового изображения довольно сложна.

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

Спутниковые данные

Для нашей задачи нам потребовалось использовать данные спутникового изображения Швеции со спутника Sentinel-2. Данные были доступны через платформу Open Data Cube. По данным мы могли получить доступ к различным типам диапазонов Sentinel-2. У нас, естественно, были красные, зеленые и синие (RGB) полосы, а также такие вещи, как инфракрасные, карты водяного пара и многое другое. Используя полосы RGB, мы можем показать несколько изображений на севере Швеции в разное время.

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

К-средство кластеризации

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

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

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

Сегментация изображения

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

Аннотации

Аннотированные маски изображений (принадлежность к классам по пикселям) не были доступны напрямую. К счастью, данные Sentinel-2 предоставили две полосы, которые оказались полезными, а именно полосы вероятности выпадения снега и вероятности облачности. Как следует из их названий, эти полосы состоят из вероятностей для каждого пикселя изображения, содержащего снег соответствующих облаков, созданных их собственными моделями.

Комбинируя значения этих полос с порогами для двух вероятностей (а также некоторые уловки сглаживания), мы смогли сгенерировать наши собственные маски аннотаций, которые будут использоваться в обучении с учителем. Мы можем увидеть несколько примеров ниже. Фиолетовые области - это снег, зеленые - облака, а желтые - все остальное.

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

Модель

Для решения большинства задач анализа изображений лучше всего подходит глубокое обучение. Наш подход к этой проблеме сегментации изображений ничем не отличался. В частности, в нашей модели мы использовали структуру глубокой нейронной сети U-Net. Модель U-Net обычно используется для задач сегментации изображений и фактически была разработана для сегментации биомедицинских изображений.

Сетевая архитектура U-Net состоит из двух основных частей - субдискретизатора и повышающего дискретизации, представленных левой соответствующей правой частью на рисунке ниже. Стек понижающей дискретизации будет постепенно понижать дискретизацию изображений как:

128x128 → 64x64 → 32x32 → 16x16 → 8x8 → 4x4

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

Часть модели U-Net с повышающим дискретизацией затем снова повысит дискретизацию изображений как:

4x4 → 8x8 → 16x16 → 32x32 → 64x64

перед окончательным сверточным слоем изображения возвращаются к размеру 128x128.

А как насчет тех зеленых стрелок на рисунке выше? Они символизируют так называемые пропущенные соединения, что означает, что модель, например, отправляет представления 16x16 из субдискретизатора непосредственно в слой повышающего дискретизации 16x16 → 32x32 вместе с выходными данными из предыдущего слоя 8x8 → 16x16. Пропускные соединения уменьшают влияние исчезающих градиентов во время обучения и тем самым ускоряют и упрощают обучение модели.

Результаты

Имея набор данных и модель, у нас осталось только обучение и оценка модели. После разделения полного набора данных на наборы для обучения, проверки и тестирования мы обучили модель за 20 эпох на обучающем наборе и получили следующие кривые обучения:

Не считая «заострений» на кривых из-за довольно небольшого набора данных, все кривые выглядят так, как мы хотим, и мы можем достичь хороших показателей точности. Окончательный прогноз на тестовом наборе показывает точность 91%, то есть наша модель предсказывает правильную принадлежность к классу (снег, облака или другой) для 91% всех пикселей на всех изображениях в тестовом наборе, учитывая маски аннотаций, которые мы создали ранее. .

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

Помимо отличной оценки точности 91%, мы также видим, что модель работает действительно хорошо! В отличие от кластеризации, которую мы сделали выше, наша модель сегментации изображений также способна обнаруживать и различать снег и облака. Также интересно увидеть, по крайней мере в этих двух примерах, что предсказанные маски кажутся немного лучше, чем аннотированные. Возможно, нам удалось улучшить существующие модели Sentinel-2 для обнаружения снега и облаков.

Вывод

Подводя итоги, мы решили задачу обнаружения участков снега и облаков на спутниковых снимках со спутника Sentinel-2 в рамках проекта Copernicus. Поняв, что метод неконтролируемой кластеризации недостаточен для решения этой проблемы сегментации изображений, мы аннотировали и обучили нашу собственную модель нейронной сети U-Net и достигли действительно хороших результатов.

Для дальнейшего улучшения результатов мы могли:

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

В целом, это был успешный и интересный проект!

дальнейшее чтение

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