Обнаружение изменений структур на панхроматических изображениях

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

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

Для этого рабочего процесса мы будем использовать некоторые из мощных новых инструментов глубокого обучения, представленных в экосистеме ArcGIS (в частности, в ArcGIS Pro 2.6+), которые помогут нам выполнять быстрый вывод, маркировку и обучение для глубокого обучения. Благодаря этим инструментам это руководство может использоваться как специалистами по данным, так и специалистами в области ГИС.

Ниже приведены области, которые мы рассмотрим:

Оглавление:

  • Панхроматические изображения
  • Предварительная обработка данных - резкость против репликации
  • Настройка тестовой зоны
  • Тестирование предварительно обученной модели следа строения
  • Точная настройка нашей модели с новыми данными
  • Оценка результатов и постобработка
  • Расчет изменения
  • Заключение

Панхроматические изображения

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

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

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

Предварительная обработка данных: резкость против репликации

Модель глубокого обучения, которую мы будем точно настраивать, была обучена на трехканальных изображениях RGB с тем же разрешением (0,5 м), к сожалению, наши панхроматические изображения представляют собой только одну полосу. У нас есть два основных пути, которые не требуют изменения архитектуры модели:

  1. Используйте панорамирование с некоторыми сопутствующими мультиспектральными данными, чтобы добавить дополнительные спектральные полосы к панхроматическим изображениям.
  2. Воспроизведите панхроматическую полосу 3 раза

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

Перенеся оба набора данных в ArcGIS Pro (импортировав содержащую их папку и добавив их на текущую карту), мы можем сначала использовать инструмент мерцания, чтобы визуально увидеть разницу в разрешении:

Ясно, что мультиспектральный снимок имеет слишком низкое разрешение, чтобы можно было точно различить следы здания. Однако мы все еще можем изучить его использование для панорамирования резкости. Для этого нам понадобятся два отдельных инструмента геообработки. Первый, Compute Pansharpen Weights, вернет оптимальную схему взвешивания для каждой спектральной полосы, которая нам понадобится для процесса панорамирования.

После запуска инструмента (что займет всего несколько секунд) оптимальные веса распечатываются в окне вывода. Их нужно где-то записать для использования со вторым инструментом.

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

После запуска этого инструмента у нас должно получиться изображение с панхроматической резкостью с разрешением 0,5 м (такое же, как у панхроматического). Вот как это выглядит:

Это дает нам достаточное спектральное разрешение (3) и достаточное пространственное разрешение (0,5 м) для запуска нашей предварительно обученной модели контура здания. Мы отложим это в сторону и также рассчитаем реплицированные панхроматические изображения, чтобы мы могли провести сравнительный тест эффективности обнаружения. Это легко сделать с помощью растровой функции Composite Bands.

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

Последнее, что мы собираемся проверить перед тем, как перейти к тестированию, - это битовая глубина изображений. Это можно проверить в свойствах изображения. Если изображение 16-битное, мы можем использовать инструмент «Копировать растр» и установить для свойства «Тип пикселя» значение 8-битный без знака (не забудьте установить флажок «Масштабировать значения пикселей»). .

Теперь у нас есть два отдельных 3-канальных растра с пространственным разрешением 0,5 м (с 8-битными беззнаковыми типами данных), готовые для тестирования предварительно обученной модели контуров здания.

Настройка тестовой зоны

Прежде чем мы загрузим и запустим модель следа здания, нам нужно быть хорошими учеными и подумать о дизайне нашего исследования. Как правило, мы хотим, чтобы модель, которую мы обучаем и тестируем наши данные, была пространственно (а иногда и временно) отличной, и мы хотели бы выбрать тестовую область, где у нас есть достоверная информация, чтобы мы могли вычислять метрики. Тестирование моделей глубокого обучения сводится к двум фундаментальным свойствам: точность (в отношении важной метрики значения) и обобщение (для распространения на все соответствующие варианты использования, на которых будет работать модель). Поскольку основная ценность для бизнеса от этой модели будет заключаться в точном подсчете зданий, мы будем использовать простую точность обнаружения в качестве метрики. Однако большая часть использования этой модели будет связана с извлечением хороших следов здания, и в этом случае нам потребуется вычислить IoU. С точки зрения обобщения, в нынешнем виде модель была обучена на изображениях, совершенно отличных от того, что у нас есть (Esri World Imagery), поэтому любые изображения, с которыми она работает, будут проверкой способности к обобщению. Последнее, что нам нужно сделать, это (1) Назначить зону тестирования (2) Сгенерировать наземные метки для зоны тестирования.

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

Теперь, когда у нас есть выделенная область исследования для тестирования, давайте загрузим модель и запустим ее!

Тестирование предварительно обученной модели следа строения

Esri предоставляет замечательную предварительно обученную модель для обнаружения следов зданий как часть Living Atlas. Данная модель была обучена на 3-х полосных изображениях с пространственным разрешением 0,5 м с использованием архитектуры модели Mask-RCNN.

Его обучили противостоять строительным следам в США. В отличие от других архитектур моделей (например, YoLo), которые выводят ограничивающие прямоугольники, Mask-RCNN может научиться напрямую создавать многоугольники, очерчивающие границы для интересующих объектов. В нашем случае он будет выводить слой полигональных объектов с уникальными полигонами для каждого обнаруженного контура здания. Давайте проверим его готовность к работе на наших двух трехканальных растрах, которые мы создали.

Сначала мы загружаем модель и добавляем папку, содержащую ее, в качестве подключения к папке в нашем проекте. Затем мы переходим к инструменту Обнаружение объектов с помощью инструмента глубокого обучения (доступного в Pro 2.5+), где мы можем напрямую подключить файл .dlpk из загруженной модели. Как только мы это сделаем (и нет проблем со средой) - должны появиться следующие варианты заполнения, batch_size, threshold, return_bboxes:

Эти параметры могут сбивать с толку, если вы не знакомы с терминологией глубокого обучения. Вот что они означают на простом английском:

Заполнение: поскольку модель запускается для чипов изображения предварительно определенного размера, это контролирует, сколько дополнительного контекста создается вокруг каждого чипа (в пикселях). Увеличение этого параметра может помочь избавиться от артефактов обнаружения краев (например, полос) или отсоединенных / сегментированных обнаружений.

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

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

Return_bboxes: следует ли возвращать связанную минимальную ограничивающую рамку вокруг каждого обнаружения. Это либо True, либо False.

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

Значения по умолчанию хороши, однако мы немного понижаем порог до 0,5, что позволит нам регистрировать больше обнаружений с низкой достоверностью, чтобы помочь нам больше узнать о производительности модели. Сначала мы выбираем наш расширенный растр для тестирования, назовем соответствующий выходной слой соответствующим образом, и они перемещаются на вкладку «Environment» и устанавливают нашу степень обработки на тестовый AOI, который мы создали выше. После его запуска получаем следующие детекции:

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

Вытягивание таблицы атрибутов показывает, что 6/46 наземных точек пересекаются полигонами обнаружения. Однако мы видим, что две основные точки истинности пересекаются одним и тем же многоугольником. Чтобы решить эту проблему, мы также можем сделать выбор на полигонах обнаружения по пересечению с наземными точками истинности - это показывает 5 выбранных полигонов. Выбор минимума из них дает нам правильное условие, поскольку мы хотим найти точки, которые пересекают обнаруженные многоугольники, а также количество различных многоугольников, которые пересекают точки. Таким образом, наша общая точность составляет 5/46 - примерно 11%. Не хорошо. Давайте попробуем воспроизвести панхроматические изображения.

Здесь мы сталкиваемся с совершенно другой проблемой. Обнаружения гигантские по сравнению с реальным размером строений! Используя наш метод, описанный выше, мы получаем 15/46 наземных точек истинности, захваченных полигонами, и 3 полигона, которые пересекают точки - взятие минимума дает нам точность 3/46 или примерно 6,5%. Ужасный.

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

Точная настройка нашей модели с новыми данными

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

Поскольку указанная выше сеть была обучена с использованием ImageNet, который содержит 1000 классов изображений, последний слой (оранжевый, softmax) имеет ширину 1000 с softmax, поэтому он выводит вероятность того, что изображение принадлежит каждому из 1000 классов. «Магистраль» (или средство извлечения функций) сети - это все, что было до этого последнего уровня (или все, что было до полностью подключенных слоев, в зависимости от вашей точки зрения). Обучение последнего слоя или последних нескольких слоев позволяет нам поддерживать способность сети извлекать значимую информацию (функции) из изображения или входных данных, в то время как последний слой служит для того, чтобы взять комбинацию этих функций и сделать суждение, например, какой класс изображение или расположение определенных объектов в изображении в зависимости от того, какие особенности извлекаются. Этот процесс называется «точной настройкой» модели или «переносом обучения» в целом.

Для нашего случая использования предварительно обученной моделью является Mask-RCNN, которая имеет немного более сложную архитектуру:

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

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

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

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

Это создаст папку с чипами изображения, мы можем быстро проверить, соответствуют ли эти чипы изображения тому, что мы ожидаем:

Теперь мы можем перейти к этапу переподготовки. Это можно сделать одним из двух способов:

(1) Используйте инструмент «Обучение модели глубокого обучения» в ArcGIS Pro 2.6+.

(2) Используйте блокноты ArcGIS (или блокноты Jupyter после установки Python API).

Первый вариант очень прост - мы переходим к инструменту Train Deep Learning Model и передаем ему папку Input Training Data, которую мы создали во время экспорта выше. Это должно автоматически заполнить некоторые значения, включая тип модели в параметрах модели.

Второе важное значение, которое нам нужно указать, - это параметр «Предварительно обученная модель». Здесь мы собираемся разместить загруженный файл модели .dlpk для исходной модели. Это позволит нам точно настроить веса этой модели вместо того, чтобы начинать с нуля. Модель Mask-RCNN довольно велика, и поэтому настоятельно рекомендуется использовать графический процессор (графический процессор), чтобы сделать возможным время обучения (минуты вместо часов для нашего небольшого примера). Во время обучения важно следить за тем, чтобы потери постепенно уменьшались, в противном случае может быть разумным снизить параметр «Скорость обучения» до меньшего значения, например 0,0005, или создать больше данных для обучения.

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

Результаты и постобработка

46 из обнаруженных полигонов пересекают наши наземные точки истинности. Между тем 36 наземных контрольных точек лежат внутри многоугольника. Взяв минимум, мы получаем 36 правильно обнаруженных структур из 46 общих структур. Это 78,2% точности по сравнению с 6,5% ранее, улучшение более чем на 70% за счет простой маркировки менее 150 структур и переподготовки!

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

Теперь мы можем сразу увидеть две основные проблемы:

  1. Перекрытие, есть несколько обнаружений над одной и той же структурой
  2. Края, закругленные углы не совпадают плотно с контурами

К счастью, в ArcGIS Pro есть два инструмента, предназначенных для решения именно этих проблем. Во-первых, мы будем использовать инструмент геообработки Слияние, чтобы объединить несколько перекрывающихся полигонов в один полигон.

Затем мы воспользуемся очень полезным инструментом «Упорядочить следы зданий», чтобы сделать края обнаруженных структур более резкими:

Результат после использования этих инструментов выглядит намного лучше по сравнению с исходными обнаружениями:

Расчет изменения

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

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

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

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

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

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

Заключение

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

Похожие сообщения:

Картирование земного покрова с высоким разрешением с использованием глубокого обучения

Экстракция следа здания и классификация повреждений

AI For Good: Disaster Response

Особая благодарность компании Esri Chile за пример использования и изображения, которые сделали эту работу возможной.