Об обнаружении облаков с разновременными данными

Опыт двух специалистов по обработке данных, плывущих в облаках

Авторы: Jernej Puc и Lojze ust

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

s2cloudless

В Sinergise мы широко используем s2cloudless, наш односценовый (моновременной) детектор облаков. Публично доступный с января 2018 года, он был разработан как алгоритм быстрого машинного обучения, который может обнаруживать облака почти в реальном времени и давать самые современные результаты среди конкурентов. Действительно, он хорошо показал себя при проверке размеченных вручную данных, предоставленных Hollstein et al., как показано в исходном сообщении блога, в котором описывается процесс разработки s2cloudless.

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

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

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

Современное состояние

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

MAJA (MACCS ATCOR Joint Algorithm) на самом деле выполняет больше, чем просто обнаружение облаков: он обнаруживает облака и их тени, оценивает оптическую толщину аэрозоля и содержание водяного пара и корректирует атмосферные эффекты. Это полноценный процессор атмосферной коррекции, который применялся на нескольких спутниках. Однако, по общему признанию, он сложен и не прост в использовании.

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

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

Построение разновременного алгоритма

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

Описание временной отражательной способности

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

Описание относительной отражательной способности

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

Корреляция пиксельных окрестностей

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

Определение корреляции, данное MAJA, связано с ковариацией и похоже на выборочный коэффициент корреляции (Пирсона):

Внутри компании мы уже экспериментировали с коэффициентом Пирсона раньше, хотя и с менее обнадеживающими результатами, и начали сомневаться, подходит ли он вообще для нашего варианта использования. Хотя его можно использовать в качестве показателя, который «описывает, насколько хорошо два изображения X и Y коррелируют в области N по N пикселей », наблюдаемая корреляция является линейной.

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

Практически списав это, тщетно пытаясь обойти эти проблемы, мы случайно наткнулись на так называемый индекс структурного сходства (SSIM):

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

Важность функций

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

После некоторых экспериментов мы определились с окончательным выбором функций и провели обучение с теми же 10 спектральными полосами Sentinel-2, которые использует s2cloudless, как показано на графике ниже:

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

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

Проверка

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

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

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

Тем не менее, мы были уверены, что наши результаты могут быть значительно улучшены.

Улучшение алгоритма

Качество набора обучающих данных играет очень важную роль в определении производительности классификатора. Возможно, нам удалось избежать недостаточного количества выборок и нерегулярного представления различных географических областей, но использование машинно-аннотированных данных имеет свои недостатки. Неизбежный шум в данных, возможно, можно отбросить, однако определенные смещения исходного алгоритма (MAJA), которые часто приводят к неправильной маркировке выборок, обязательно повлияют на обучение и проявятся в наших результатах.

Разделение облаков и снега

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

Подтвердив приведенные выше результаты проверки, мы решили обратить внимание на плохое разделение облаков и снега. Мы были знакомы с определенным регионом, состоящим из горных хребтов, который был проблематичным в этом отношении, для которого нам затем пришлось найти достаточно подходящих примеров - изображений, которые были полностью безоблачными, вне всяких разумных сомнений - и включить их в наш набор данных. . Это может занять много времени даже с помощью такого мощного инструмента, как eo-browser, который оказался полезным в этой задаче.

Дополнительные примеры заметно изменили поведение алгоритма:

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

Пересечение предсказаний

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

Более тщательный осмотр показал, что s2cloudless способен правильно обнаруживать большинство реальных облаков, как толстых, так и тонких, и что его недостатки в основном связаны с относительно частыми ложными срабатываниями (неправильная классификация необлаков). Это означало, что мы могли использовать простое пересечение прогнозов: практически все допустимые облака, обнаруженные многовременным классификатором, также должны быть обнаружены s2cloudless, в то время как ложные срабатывания могут быть отклонены из-за любого из классификаторов.

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

Также показательно взглянуть на пространство ROC, где показано соотношение истинно положительных результатов (TPR) и ложноположительных результатов (FPR). Можно заметить, что, объединив прогнозы и правильно настроив их пороговые значения, мы смогли улучшить TPR расширенного классификатора на основе SSIM, достигнув при этом еще более низкого FPR.

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

Практические результаты

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

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

Выводы и дорога вперед

С помощью InterSSIM нам удалось предоставить альтернативу с разновременной передачей данных, которая, судя по доступным метрикам, работает лучше, чем наш существующий облачный детектор s2cloudless. На момент написания он был интегрирован в eo-learn и, таким образом, стал общедоступным.

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

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

У вас есть собственное представление? Если вас интересует наша работа или наблюдение Земли в целом, вы можете присоединиться к нам и внести свой вклад в наши исследования.

использованная литература

[1]: Hollstein, A .; Segl, K .; Guanter, L .; Brell, M .; Энеско М. Готовые методы обнаружения облаков, перистых облаков, снега, тени, воды и ясного неба на изображениях MSI Sentinel-2. Remote Sens. 2016, 8, 666.

[2]: Оливье Хаголь, Мирей Юк, Камиль Дежарден, Стефан Ауэр и Рудольф Рихтер. (2017, 7 декабря). Теоретический базовый документ по алгоритму MAJA (версия 1.0). Zenodo. Http://doi.org/10.5281/zenodo.1209633

[3]: Гуолинь Кэ, Ци Мэн, Томас Финли, Тайфэн Ван, Вэй Чен, Вэйдун Ма, Цивэй Е, Те-Янь Лю. LightGBM: высокоэффективное дерево решений для повышения градиента. Достижения в системах обработки нейронной информации 30 (NIPS 2017), стр. 3149–3157.

[4]: Ляпустин, А., Ван, Ю., и Фрей, Р. (2008). Автоматический алгоритм маски облачности, основанный на временных рядах измерений MODIS. Journal of Geophysical Research, 113, D16207.

[5]: Чжоу Ван, член, Алан Конрад Бовик, Хамид Рахим Шейх, Ээро П. Симончелли. Оценка качества изображения: от видимости ошибок к структурному сходству. IEEE Transactions on Image Processing, vol. 13, вып. 4 апреля 2004 г.