The comparison of cloud and shadow segmentation algorithms on satellite images
- Authors: Sokolkov O.I.1
-
Affiliations:
- Ugra Research Institute of Information Technologies
- Issue: Vol 20, No 1 (2024)
- Pages: 22-28
- Section: MATHEMATICAL MODELING AND INFORMATION TECHNOLOGIES
- URL: https://vestnikugrasu.org/byusu/article/view/630388
- DOI: https://doi.org/10.18822/byusu20240122-28
- ID: 630388
Cite item
Full Text
Abstract
Subject of research: the segmentation algorithms of satellite images.
Purpose of research: to compare cloud and cloud shadow segmentation algorithms.
Methods and objects of research: the calculation and comparison of efficiency metrics, labeled space images (CloudSEN12), Fmask, Kappamask, Sen2cloudless, Ukis-csmask, Mobile-Unet algorithms, Sentinel mission cloud segmentation, Sen2cor scene classification, FC-CNN.
Main results of research: the Precision, Recall, Accuracy, F1 metrics have been calculated for the algorithms under consideration. The best result was demonstrated by Mobile-Unet with a score of 0.888 on the F1 metric. The novelty of the obtained results lies in expanding the context of comparative analysis of previous similar studies: we add another algorithm to it (Ukis-csmask).
Keywords
Full Text
ВВЕДЕНИЕ
Ввиду существенного негативного влияния облаков и их теней на анализ данных есть смысл организовать этап определения таких областей с целью учитывать их в дальнейшем. Такой предобработкой мы сможем абстрагироваться от отвлекающих факторов, и при решении задачи сегментации дать возможность алгоритмам просматривать значимые для него области кадров.
Приведем конкретный пример: разработка автоматизированной системы сегментации лесных рубок. В процессе апробации реализованного решения обнаруживаем, что некоторые фрагменты облаков и их теней по ошибке распознаются системой как рубки. С целью предотвращения ложных срабатываний приходим к следующему решению: применяем алгоритм сегментации облаков и их теней, удаляем выявленные пиксели изображения из рассмотрения. На таком изображении не будет облаков и, следовательно, количество ложноположительных срабатываний будет значительно ниже. Тем самым получаем выигрыш в качестве распознавания – в этом и заключается актуальность проведения такого рода сегментации. Конечно, в теории можно разработать такую систему распознавания, которая изначально работает с облачными снимками без проблем, не путая наземные объекты с облаками. Тогда отпадает необходимость в перечисленных выше преобразованиях. Но далеко не всегда это возможно на практике ввиду трудности с точки зрения реализации.
Рассмотрим причину рассмотрения теней от облаков для задачи сегментации изображения. Облака не пропускают весь свет через себя, как следствие – на земной поверхности образуется тень, и чем облако плотнее, тем эта тень более темная. Такие области на снимке также могут привести к проблемам анализа земной поверхности.
РЕЗУЛЬТАТЫ И ОБСУЖДЕНИЕ
Проблемы алгоритмов рассматриваемого типа
Для общего понимания предметной области требуется сформировать представления о трудностях, возникающих в процессе сегментации облаков и их теней. Бывают слишком «осторожные» и слишком «неосторожные» алгоритмы. В первом случае имеем ситуацию, когда алгоритм не путает облако с чем-либо другим: если он разметил облако на снимке – значит, может быть уверен, что это в самом деле оно. Но есть проблема: он сегментирует облака не до конца, пропуская большое их количество. Во втором случае алгоритм выделяет все облака, однако вдобавок он распознает в качестве облака или тени еще и то, что к таковым не относится. Возникают другие случаи, которые однозначно не относятся к первым двум: когда сегментация была произведена неадекватно в принципе. Причиной таких проблем может являться то, что ситуация на снимке оказалась слишком нестандартной, и рассматриваемый алгоритм не был к ней приспособлен.
Неопределенности добавляет и следующее: можем ли мы идентифицировать полупрозрачные облака низкой плотности в качестве таковых? Условно можно сказать: то или иное облако имеет некий процент прозрачности. Есть возможность задать некоторый порог и задать правило такого вида: если конкретное облако имеет на снимке процент прозрачности больше порога, то тогда считаем его облаком. Иначе – считаем, что это нечто иное. Определение порога прозрачности требует использования экспериментальных данных, и формализация этой задачи может быть предметом отдельного исследования.
Отдельно отметим проблему, характерную для регионов планеты с холодным климатом: бывает трудно различить облака на фоне заснеженной поверхности. Они могут на снимке слиться воедино: как следствие, облака можно по ошибке распознать как снег и наоборот. Существуют алгоритмы, которые справляются с такой задачей достаточно качественно (в качестве примера можно привести Fmask 4.0 [1]), однако могут быть и те, которые не приспособлены для ее решения, либо приспособлены недостаточно хорошо.
Обзор аналогичных исследований
Обширная работа по рассматриваемой тематике отражена в [2]. В данной статье приводится сравнительный анализ большого количества алгоритмов сегментации облаков и их теней, апробация которых производится на множестве наборов данных. Среди работ данного типа следует отметить также [3]. Здесь производят собственный набор данных (с указанием процесса его построения) и проводят по нему эксперименты: его используют для вычисления метрик эффективности алгоритмов рассматриваемого нами типа. Приводится достаточно большое количество таких алгоритмов. Отметим статью [4]. Отличительной особенностью этой работы по отношению к остальным – здесь приводится сравнительный анализ конкретно на снимках Sentinel-2. Здесь рассматривается пять алгоритмов, апробация которых выполняется на спутниковых снимках Африки и Западной Европы.
Следует отметить: в представленных выше работах [2] и [3] приведенный список метрик можно расширить (например, добавить F-меру). В этих же работах список алгоритмов, подлежащих оценке и сравнению, также не является исчерпывающим: целесообразно ввести в рассмотрение и другие. В работе [4] рассматривается лишь часть планеты, северные широты – вне рассмотрения. Для большей полноты картины есть смысл опробовать алгоритмы и на северных широтах.
Постановка задачи
Конкретизируем цель, преследуемую нами в рамках выполнения данной работы, посредством разделения на следующие задачи:
- дать характеристику набору данных, на основе которого в дальнейшем будем считать метрики;
- дать характеристику рассматриваемым алгоритмам сегментации облаков и их теней; привести метрики эффективности для каждого включенного в рассмотрение алгоритма (используемые метрики определены в соответствующем разделе данной работы);
- подвести итоги на основании полученных метрик.
Набор данных
В нашем исследовании мы используем набор данных CloudSEN12 [3]. В нем собраны фрагменты снимков размером 509 на 509 пикселей, произведенных спутником Sentinel-2 [5], с размеченными облаками и их тенями. Для большей наглядности представим размеченный фрагмент с идентификатором «20181219T133221_20181219T133216_T23MMR» (рисунок 1). Здесь отображен непосредственно сам снимок (а) и разметка (б) – облака обозначены серым цветом, тени – белым.
Рисунок 1. Фрагмент снимка Sentinel-2 (слева) и файл разметки (справа).
Каждый такой фрагмент относится к той или иной области земного шара. Всего в наборе данных имеется 9880 таких областей, среди которых:
- 2000 областей с разметкой высокого качества (в них содержится в общей совокупности 10 000 фрагментов);
- 2000 областей c разметкой низкого качества (10 000 фрагментов);
- 5880 областей без разметки (29 400 фрагментов).
Оставим вне рассмотрения те фрагменты, которые имеют разметку низкого качества: посчитать метрики должным образом по ним не удастся. Также отбросим и неразмеченные, исходя из тех же принципов. Итого далее в нашем рассмотрении остается 10 000 изображений. Среди них имеются 2001 безоблачных фрагментов (идентификатор такой группы в рамках набора данных: cloud-free), 1999 – практически безоблачных (almost-clear), 2000 – с низкой облачностью (low-cloudy), 2000 – со средней облачностью (mid-cloudy) и 2000 – облачных (cloudy). Можем констатировать: набор данных практически идеально сбалансирован по данным категориям.
Помимо характеристик облачности, следует также принять во внимание и географические характеристики рассматриваемых фрагментов (рисунок 2). Красными точками на карте отображены области съемки. Наблюдаем, что они распределены по земной поверхности более-менее равномерно (за исключением Гренландии, Южной Африки и Антарктиды): в наборе данных представлено множество регионов планеты. Так что с точки зрения географического распределения набор данных также вполне сбалансирован. Здесь присутствуют как южные и средние широты, так и северные.
Рисунок 2. Распределение областей с фрагментами, имеющими разметку высокого качества (CloudSEN12).
Рассматриваемые алгоритмы
В этом же наборе данных, помимо размеченных фрагментов, поставляются в комплекте также и результаты выполнения некоторых алгоритмов: мы намереваемся ими воспользоваться для вычисления метрик в нашей работе.
Здесь представлен алгоритм сегментации облаков миссии Sentinel (в рассматриваемом датасете эта маска содержится в файле «qa60.tif») [6]. Посредством данного алгоритма осуществляется сегментация перистых (cirrus) и плотных облаков (opaque clouds), однако тени им не обнаруживаются. Для вычисления используются: синий диапазон (B1 или B2), диапазон B10 и коротковолновый инфракрасный диапазон (B11 или B12). Сгенерированная данным алгоритмом маска лежит в файлах снимка Sentinel-2.
В наличии также алгоритм сегментации облаков s2cloudless для снимков со спутника Sentinel-2, разработанный исследовательской командой Sentinel Hub. Базируется на градиентном бустинге (gradient boosting) – методе машинного обучения. Программная реализация вместе с описательной характеристикой представлена в [7]. Вычисление выполняется на основе диапазонов B01, B02, B04, B05, B08, B8A, B09, B10, B11, B12. В файле «s2cloudless.tif» имеем маску следующего содержания: в каждом ее пикселе содержится вероятность того, относится ли он к облаку или нет. Непосредственно ее использовать для вычисления метрик нецелесообразно – алгоритм имеет опцию преобразовать карту вероятностей в карту классов (имеются два – «облако» и «не-облако»): ее мы применим в нашей работе.
Также есть в наличии результаты выполнения алгоритма Fmask 4.0 [1]. Посредством него осуществляется сегментация облаков и их теней для снимков спутников Landsats 4-8 и Sentinel-2. Вдобавок он также проводит сегментацию водной и снежной поверхностей. Реализация осуществляется посредством методов машинного обучения. Во внимание берутся правила и статистические данные, полученные на основе физических характеристик облаков и их теней.
Программное обеспечение sen2cor [8] предназначено для атмосферной коррекции, которая в данной работе не рассматривается: нас здесь интересует другой момент. Чтобы осуществить атмосферную коррекцию, алгоритм предварительно осуществляет сегментацию снимка по следующим классам: растительность (Vegetation), почва (Bare Soils), вода (Water), снег (Snow), облако со средней вероятностью (Cloud medium probability), облако с высокой вероятностью (Cloud high probability), тонкое перистое облако (Thin cirrus) и облачная тень (Cloud shadows). Эти результаты сохраняются в виде отдельного файла-маски, которая в наличии у рассматриваемого нами набора данных.
Kappamask является алгоритмом, основанным на искусственном интеллекте [9]. Модель основана на полносвязной сверточной нейронной сети (CNN-based model) с использованием методологии активного обучения (active learning). Сегментация выполняется по классам: «clear», «cloud shadow» (тень от облака), «semi-transparent cloud» (полупрозрачное облако), «cloud» (облако) и «missing» (дефектные пиксели или те, которые не содержали данных). В датасете представлены два варианта отработки алгоритма: результаты по снимку уровня Level-1C (представлен в файле «kappamask_L1C.tif») и отдельно – по Level-2A («kappamask_L2A.tif»).
Представлены и другие алгоритмы, построенные на основе сверточной полносвязной нейронной сети, результаты которых содержатся в файлах «CD-FCNN-RGBI.tif» и «CD-FCNN-RGBISWIR.tif». Здесь используется архитектура U-net [10]. На выходе имеем маску вероятностей облачности (вместо однозначного отношения к классу). Значения этой маски распределены от 1 до 10000. Поиск теней от облаков здесь не осуществлен.
Рассматриваемые задачи также были решены посредством применения сверточной нейронной сети Mobile-Unet [11]. Отмечается: ее преимущество заключается в скорости, что дает возможность решать задачи в реальном времени. Результаты сегментации напрямую в датасете в виде готовых масок не содержатся, однако с датасетом поставляется программная библиотека, в которой содержится уже обученная модель Mobile-Unet, готовая для использования [12]: мы ее применим в нашей работе для вычисления метрик.
Дополним выше представленный список посредством введения в рассмотрение алгоритма ukis-csmask [13], также основанного на U-net. На вход подаются следующие диапазоны: «Blue», «Green», «Red», «NIR», «SWIR1», «SWIR2». Сегментируются как облака (без разделения на непрозрачные или полупрозрачные), так и их тени. Будем использовать программную реализацию, представленную в [14].
Методология проведения оценок
Будем использовать Precision, Recall, Accuracy, F1 c макро-усреднением (Macro-Averaging). Общая его идея заключается в том, что эти метрики считаются как для одного, так и для обратного класса (в качестве примера можно привести класс «облако» и обратные ему класс «не-облако») с последующим усреднением. Далее определим проведение оценок по облачности. Формула для вычисления F1 имеет вид:
, (1)
где F1cloud – метрика F1, вычисленная для класса «облако»,
F1non-cloud – метрика F1, вычисленная для класса «не-облако»,
existscloud = 1, если в данной паре масок «ожидаемое» – «предсказанное» имеется как минимум один пиксель, относящийся к классу «облако», иначе – данное значение нулевое.
existsnon-cloud = 1, если в данной паре масок «ожидаемое» – «предсказанное» имеется как минимум один пиксель, относящийся к классу «не-облако», иначе – данное значение нулевое.
Формулы для метрик Precision, Recall, Accuracy строим по аналогичному принципу. Требуется задать следующее:
Precisioncloud и Precisionnon-cloud,
Recallcloud и Recallnon-cloud,
Accuracycloud и Accuracynon-cloud.
Дадим для выше представленных значений определения
, (2)
, (3)
, (4)
, (5)
где a – класс, для которого строится соответствующее значение.
Аналогично вычисляем метрики по теням. Имеем те же самые формулы за исключением следующего: меняем «cloud» на «shadow», «non-cloud» – на «non-shadow».
Если тот или иной алгоритм сегментирует на несколько классов облачности («полупрозрачное облако», «перистое облако», «непрозрачное облако»), – все объединяем и считаем это одним классом «облако» для удобства вычисления метрик. В самой разметке («manual_hq.tif») выделяются также непрозрачные и полупрозрачные облака, – с ней производим аналогичные действия.
Алгоритмы FC-CNN-RGBI и FC-CNN-SWIR в своем роде кардинально отличаются от остальных: у них нет разметки по классам, маска заполнена значениями от 1 до 10000. Таким образом, здесь по факту представлено 10 000 классов: нет возможности адекватно посчитать метрики непосредственно по этим данным. Стоит задача отображения данного диапазона в диапазон двух значений: 0 («не-облако») и 1 («облако»). Для этого следует подобрать некоторый порог. Подбор порога – задача, требующая отдельного исследования. Возьмем для наших последующих вычислений значение порог в 5000.
Для алгоритмов FC-CNN-RGBI, FC-CNN-RGBISWIR, Fmask, qa60, sen2cloudless, Mobile-Unet, sen2cor было принято решение добавить постобработку следующего вида: если алгоритм обнаружил на снимке облака площадью менее 1 % от площади всего снимка, то игнорируем этот результат. Считаем, что алгоритм не нашел здесь облаков: установлено экспериментально, что данная мера немного увеличивает значения метрик (например, по Mobile-Unet поднялась метрика F1 на 0,9 % по облачности, а на 2,3 % – поднялась та же оценка по теням. Аналогичным образом поступаем с сегментацией теней.
Результаты оценки моделей
Результаты вычисления метрик по облакам представлены в таблице 1. Для каждого алгоритма было получено (или найдено – если маски с результатами уже имелись в наборе данных) 10 000 масок по соответствующим 10 000 снимкам. Для каждой такой маски были подсчитаны Precision, Recall, Accuracy, F1. По маскам было проведено среднее арифметическое, которое и отражено в таблице.
Таблица 1. Метрики по сегментации облаков.
Алгоритм | Precision | Recall | Accuracy | F1 |
qa60 | 0.680 | 0.675 | 0.782 | 0.631 |
Fmask | 0.824 | 0.796 | 0.865 | 0.774 |
Kappamask_L1C | 0.804 | 0.761 | 0.854 | 0.744 |
Kappamask_L2A | 0.738 | 0.691 | 0.786 | 0.656 |
sen2cor | 0.777 | 0.731 | 0.828 | 0.703 |
sen2cloudless | 0.817 | 0.773 | 0.863 | 0.756 |
FC-CNN-RGBI | 0.771 | 0.736 | 0.806 | 0.696 |
FC-CNN- RGBISWIR | 0.786 | 0.749 | 0.817 | 0.709 |
Mobile-Unet | 0.917 | 0.890 | 0.940 | 0.888 |
ukis-csmask | 0.803 | 0.785 | 0.838 | 0.753 |
Результаты по теням представлены в таблице 2, вычисления производились аналогичным образом. Здесь представлено меньше алгоритмов ввиду того, что не каждый из раннее перечисленных нацелен на сегментацию теней.
Таблица 2. Метрики по сегментации облачных теней.
Алгоритм | Precision | Recall | Accuracy | F1 |
Fmask | 0,764 | 0,747 | 0,913 | 0,743 |
Kappamask_L1C | 0.732 | 0.694 | 0.928 | 0.688 |
Kappamask_L2A | 0.767 | 0.687 | 0.921 | 0.687 |
sen2cor | 0.723 | 0.693 | 0.922 | 0.686 |
Mobile-Unet | 0.889 | 0.870 | 0.963 | 0.871 |
ukis-csmask | 0.740 | 0.687 | 0.923 | 0.685 |
Можем констатировать: по всем метрикам и по всем двум задачам (сегментации облаков и облачных теней) оказался лучшим алгоритм Mobile-Unet с заметным отрывом от остальных. В качестве второго по эффективности можно выделить Fmask. Если говорить конкретно про облака: наименьшие метрики имеет алгоритм qa60. Если про сегментацию облачных теней: в этой задаче наименее эффективные результаты продемонстрировал алгоритм ukis-csmask.
ЗАКЛЮЧЕНИЕ И ВЫВОДЫ
В рамках данной работы было осуществлено сравнение алгоритмов сегментации областей на космическом снимке, которые покрыты облаками, либо их тенями. Оценка производилась отдельно по облакам, и отдельно – по теням. Была проведена характеристика и осуществлен анализ используемого набора данных CloudSEN12. Была проведена описательная характеристика рассматриваемых алгоритмов сегментации. Представлено среднее арифметическое метрик по их отработке: Precision, Recall, Accuracy, F1. Исследование показало: лучшие результаты по всем метрикам (как по теням, так и по облакам) имеет алгоритм, основанный на нейронной сети Mobile-Unet.
About the authors
Oleg I. Sokolkov
Ugra Research Institute of Information Technologies
Author for correspondence.
Email: sokol.oleg2012@yandex.ru
Russian Federation, Khanty-Mansiysk
References
- Shi Qiu, Zhe Zhu, Binbin He. Fmask 4.0: Improved cloud and cloud shadow detection in Landsats 4-8 and Sentinel-2 imagery // Remote Sensing of Environment. – 2019, No. 231. – 67 p.
- Sergii V. Skakun, Jan Wevers, Carsten Brockmann, Georgia Doxani, et al. Cloud Mask Intercomparison eXercise (CMIX): An evaluation of cloud masking algorithms for Landsat 8 and Sentinel-2 // Remote Sensing of Environment. – 2022, Vol. 274, No. 1. – 22 p.
- Cesar Aybar, Luis Ysuhuaylas, Jhomira Loja, Karen Gonzales, et al. CloudSEN12, a global dataset for semantic understanding of cloud and cloud shadow in Sentinel-2 // Scientific Data. – 2022. – Vol 9, No. 1. – 17 p.
- Katelyn Tarrio, Xiaojing Tang, Jeffrey G Masek, Martin Claverie, et al. Comparison of cloud detection algorithms for Sentinel-2 imagery // Sci Remote Sens. – 2020. – URL: https://www.sciencedirect.com/science/article/pii/S2666017220300092
- Sentinel-2. ESA’s Optical High-Resolution Mission for GMES Operational Services, URL: https://sentinel.esa.int/documents/247904/349490/S2_SP-1322_2.pdf
- Level-1C Algorithms and Products / Cloud Masks. URL: https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-2-msi/level-1c/cloud-masks
- Sentinel Hub’s cloud detector for Sentinel-2 imagery. URL: https://github.com/sentinel-hub/sentinel2-cloud-detector?ysclid=lil7s21ueq330887295 – Загл. с экрана.
- Magdalena Main-Knorn, Bringfried Pflug, Jerome Louis, Debaecker, Jerome Louis, et al. Sen2Cor for sentinel-2. In Image and Signal Processing for Remote Sensing // International Society for Optics and Photonics. – 2017. – Vol. 10427. – p. 1042704. –
- URL: https://www.researchgate.net/publication/320231869_Sen2Cor_for_Sentinel-2
- Marharyta Domnich, Indrek Sünter. KappaMask: AI-Based Cloudmask Processor for Sentinel-2 // Remote Sensing. – 2021. – Vol. 13, No. 20. – 22 p.
- Zongwei Zhou, Md Mahfuzur Rahman Siddiquee, Nima Tajbakhsh, Jianming Liang. UNet++: A Nested U-Net Architecture for Medical Image Segmentation // 4th Deep Learning in Medical Image Analysis (DLMIA) Workshop. – 2018. – 11 p.
- Junfeng Jing, Zhen Wang, Matthias Rätsch, Huanhuan Zhang. Mobile-Unet: An efficient convolutional neural network for fabric defect detection // Textile Research Journal. – 2020. – Vol. 92, No 12. – 17 p.
- CloudSEN12: A global dataset for cloud and cloud shadow semantic understanding. URL: https://github.com/cloudsen12/examples?ysclid=lj2iwsvofs700104227 – Загл. с экрана.
- M. Wieland, Yu Li, S. Martinis. Multi-sensor cloud and cloud shadow segmentation with a convolutional neural network // Remote Sensing of Environment. – 2019. – No. 230. – 22 p.
- Ukis-csmask. URL: https://github.com/dlr-eoc/ukis-csmask?ysclid=lj2iaa2xsz492603360 – Загл. с экрана.