Обнаружение объектов с помощью Text SAM

Настройка проекта

Для начала вы загрузите проект, содержащий все данные для этого руководства, и откроете его в ArcGIS Pro.

  1. Загрузите пакет Boat_Detection.

    Файл с именем Boat_Detection.ppkx загружен на ваш компьютер.

    Примечание:

    Файл .ppkx является пакетом проекта ArcGIS Pro и может содержать карты, данные и другие файлы, которые вы можете открыть в ArcGIS Pro. Подробнее об управлении файлами .ppkx в этом руководстве.

  2. Найдите загруженный файл на вашем компьютере.
    Подсказка:

    В большинстве веб-браузеров он загружается в папку Загрузки.

  3. Дважды щелкните Boat_Detection.ppkx, чтобы открыть его в ArcGIS Pro. При появлении запроса войдите в свою учетную запись ArcGIS.
    Примечание:
    Если у вас нет доступа к ArcGIS Pro или учетной записи организации ArcGIS, см. варианты доступа к программному обеспечению.

    Для рабочих процессов Text SAM требуется версия ArcGIS Pro 3.2 или более поздняя.

    Появится карта, в центре которой находится район Туборг-Хавн в Копенгагене, Дания. Слой изображения, Tuborg_Havn.tif, отображается поверх топографической базовой карты.

    Исходный обзор

  4. Масштабируйте и перемещайте снимки, чтобы их изучить.

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

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

Загрузка модели Text SAM

Чтобы использовать модель Text SAM, сначала загрузите ее на свой компьютер. Text SAM доступна на ArcGIS Living Atlas of the World, который представляет собой авторитетную коллекцию ГИС-данных Esri и включает в себя растущую библиотеку моделей глубокого обучения.

  1. Оставьте ArcGIS Living Atlas в своем веб-браузере.
  2. На домашней странице ArcGIS Living Atlas в окне поиска введите Text SAM.

    Поиск Text SAM

  3. В списке результатов нажмите Text SAM, чтобы открыть страницу элемента.

    Text SAM в списке результатов

  4. На странице элемента Text SAM прочитайте описание и изучите страницу.

    Text SAM — это многоцелевая модель, которая может вызываться с помощью текстовых подсказок произвольной формы для извлечения различных объектов из изображений. Например, текстовые подсказки могут быть такими: airplane для обнаружения самолетов, panel для обнаружения солнечных батарей или red car для обнаружения красных автомобилей. Результатом является полигональный слой, представляющий приблизительный контур обнаруженных объектов.

    Текстовая подсказка airplane

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

    Предполагаемые входные данные

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

    Подсказка:

    Вы можете узнать больше о Text SAM, прочитав статью Text SAM: Извлечение объектов ГИС с помощью текстовых подсказок и руководство Text SAM: использование модели.

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

  5. Вверху страницы в разделе Обзор нажмите Загрузить.

    Кнопка загрузки

    Файл модели загрузится на ваш компьютер.

    Примечание:

    Размер файла модели составляет 1,75 ГБ. Загрузка может занять несколько минут.

  6. Найдите загруженный файл TextSAM.dlpk на своем компьютере и переместите его в папку, где вы сможете его легко найти, например, C:\GeoAI_models.
    Подсказка:

    Вы также можете использовать Text SAM непосредственно в инструменте геообработки ArcGIS Pro, не сохраняя его предварительно; однако инструмент будет загружать новую копию модели при каждом запуске. По этой причине может быть полезно хранить ее локально.

Обнаружение лодок с помощью Text SAM

Теперь вы обнаружите лодки, присутствующие на вашем изображении Копенгагена. Вы будете использовать инструмент геообработки Обнаружение объектов с помощью глубокого обучения, указав копию загруженной вами модели Text SAM в качестве одного из параметров.

Примечание:

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

  1. На ленте, на вкладке Вид в группе Окна щелкните Геообработка.

    Кнопка Геообработка

  2. На панели Геообработка в поисковом окне введите Выявить объекты при помощи глубокого обучения. В списке результатов щелкните инструмент Выявить объекты при помощи глубокого обучения, чтобы открыть его.

    Поиск инструмента Выявить объекты при помощи глубокого обучения

  3. В инструменте Выявить объекты при помощи глубокого обучения выберите следующие значения параметров:
    • Для Входной растр выберите Tuborg_Havn.tif.
    • Для Выходные выявленные объекты введите Detected_Boats.
    • Для Определение модели нажмите кнопку Обзор.

    Параметры инструмента Выявить объекты при помощи глубокого обучения

    Теперь вы загрузите модель Text SAM.

  4. В окне Определение модели перейдите в местоположение, в которое вы сохранили модель Text SAM, щелкните TextSAM.dlpk и нажмите ОК.

    Окно Определение модели

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

  5. В разделе Аргументы для text_prompt введите boat.

    Аргумент Text_prompt

    Подсказка:

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

  6. Найдите аргумент batch_size.

    Обнаружение объектов глубокого обучения не может быть выполнено для всего изображения одновременно. Вместо этого инструмент разрезает изображение на мелкие кусочки. Размер пакета 4 означает, что инструмент будет обрабатывать четыре фрагмента изображения одновременно. При запуске инструмента вы можете получить сообщение об ошибке нехватки памяти, поскольку на вашем компьютере недостаточно памяти для этого уровня обработки. В этом случае попробуйте уменьшить значение batch_size с 4 до 2 или даже до 1. Если у вас мощный компьютер, вы также можете увеличить значение batch_size для более быстрой обработки. Изменение значения patch_size не повлияет на качество модели, а только на эффективность процесса обнаружения модели.

    На данный момент вы сохраните значение по умолчанию 4.

  7. Для аргумента nms_overlap введите 0,7.

    Аргумент nms_overlap

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

    Лодка обнаружена три раза

    Аргумент nms_overlap определяет, насколько сильно должны перекрываться два обнаруженных объекта, чтобы их можно было считать дубликатами друг друга и чтобы к ним можно было применить NMS. Возможные значения этого аргумента находятся в диапазоне от 0 до 1. Например, 0,7 означает, что перекрытие должно составлять 70 процентов или более.

  8. Поставьте отметку рядом с Не максимальным подавлением.

    Отметка Не максимальным подавлением

    С помощью модели Text SAM вы можете применять NMS во время процесса обнаружения объектов Text SAM (это аргумент nms_overlap) или в качестве этапа постобработки (это отметка Не максимальным подавлением). Методом проб и ошибок было установлено, что наилучшие результаты для этого конкретного варианта использования достигаются при выборе высокого значения аргумента nms_overlap (0,7) и применении опции постобработки Не максимальным подавлением со значением по умолчанию.

    Примечание:

    В разделе Не максимальным подавлением параметр Максимальный коэффициент перекрытия определяет перекрытие для этапа постобработки NMS. Как и nms_overlap, он может изменяться от 0 до 1. Значение по умолчанию 0 означает, что как только два полигона будут иметь перекрытие больше 0, они будут считаться дубликатами.

  9. Сохраните значения по умолчанию для всех остальных аргументов.
    Примечание:

    Дополнительные сведения о роли различных аргументов см. в Руководстве по Text SAM.

  10. Выберите вкладку Параметры среды.

    Вкладка Параметры среды

    На данном этапе вы можете запустить инструмент как есть, и он продолжит обнаруживать лодки по всему снимку Tuborg_Havn.tif, что может занять от 30 минут до 1 часа - в зависимости от характеристик вашего компьютера. Для краткости этого урока вы обнаружите лодки только в небольшой части входного изображения.

  11. На ленте на вкладке Карта в группе Навигация щелкните Закладки и выберите Detection area.

    Закладка Detection area

    Карта приближается к меньшей части пристани Туборг-Хавн.

    Область обнаружения

  12. На панели Геообработка на вкладке Параметры среды, в разделе Экстент обработки щелкните кнопку Текущий экстент отображения.

    Кнопка Текущий экстент отображения

    Координаты Сверху, Слева, Справа и Снизу обновляются в соответствии с текущим экстентом, отображаемым на карте.

  13. Для Типа процессора выберите GPU. Для GPU ID введите 0.
    Примечание:

    В этом руководстве предполагается, что у вашего компьютера есть Графический процессор NVIDIA. В противном случае, выберите CPU, но помните, что выполнение процесса займет гораздо больше времени. Чтобы узнать больше о графических процессорах и о том, как они используются в процессах глубокого обучения, см. раздел Проверка доступности графических процессоров в руководстве Подготовка к глубокому обучению в ArcGIS Pro.

    Тип процессора

  14. Примите остальные значения по умолчанию и щелкните Запустить.

    Вы можете отслеживать прогресс выполнения ниже кнопки Запустить и можете щелкнуть Посмотреть подробности, чтобы увидеть больше информации.

    Ссылка Просмотр подробной информации

    Через несколько минут результирующий слой Detected_Boats появится на панели Содержание и на карте. Это векторный слой, в котором каждый полигон представляет лодку.

    Подсказка:

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

    Вы успешно обнаружили лодки в районе Туборг-Хавн с помощью модели Text SAM.

    Первоначальные результаты

    Примечание:

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

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

  15. На панели инструментов Быстрого доступа щелкните кнопку Сохранить, чтобы сохранить проект.

    Кнопка Сохранить

Назначение стиля результирующему слою

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

  1. На панели Содержание щелкните символ Detected_Boats, чтобы отобразить панель Символы.

    Символ Detected_Boats

  2. На панели Символы, при необходимости, щелкните вкладку Свойства.

    Вкладка Свойства символов

  3. Для Оформления настройте следующие параметры:
    • В опции Цвет установите Нет цвета.
    • В качестве Цвета контура выберите ярко-красный, например Огненно-красный.
    • Для Толщины контура выберите 2 pt.

    Параметры Оформления

  4. Щелкните Применить.

    Слой обновится с новыми символами.

    Результирующий слой с новыми символами

  5. На карте увеличьте масштаб и переместите ее, чтобы изучить слой Detected_Boats.

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

    Пример ложно положительного обнаружения

Уточнить результаты

Теперь вы узнаете, как уточнить результаты и удалить ложные обнаружения.

  1. На панели Содержание щелкните правой кнопкой мыши слой Detected_Boats и выберите Таблица атрибутов.

    Опция меню Таблица атрибутов

    В таблице атрибутов Detected_Boats каждая строка соответствует обнаруженному пространственному объекту лодки. В настоящее время доступно 76 объектов.

    Таблица атрибутов Detected_Boats

    Примечание:

    Количество полученных вами объектов может немного отличаться.

    Вы сфокусируетесь на двух следующих полях:

    • Confidence — Это поле указывает, с каким уровнем достоверности модель идентифицировала каждый объект в качестве лодки (в процентах).
    • Shape_Area — Это поле указывает площадь каждого объекта (в квадратных метрах).

    Поля Confidence и Shape_Area

    Сначала вы изучите объекты, которые могут быть слишком малы, чтобы быть лодками.

  2. Дважды щелкните имя поля Shape_Area, чтобы отсортировать таблицу атрибутов по этому полю.

    Сортировка по полю Shape_Area

    Объекты теперь перечислены от наименьшей к наибольшей площади.

  3. Дважды щелкните заголовок строки первого объекта, чтобы приблизиться к нему карту и изучить.

    Заголовок строки первого объекта

    На карте видно, что этот объект имеет ширину всего несколько пикселей и это не лодка.

    Маленький объект не является лодкой

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

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

  5. Дважды щелкните имя поля Confidence, чтобы отсортировать таблицу атрибутов по этому полю.

    Сортировка по полю Достоверность

    Объекты теперь перечислены от самой низкой до самой высокой достоверности. Первые объекты в списке имеют достоверность около 20 процентов, что является очень низким значением.

  6. Дважды щелкните первые несколько объектов, чтобы приблизиться к ним на карте и изучить их.

    Объект с низкой достоверностью, который не является лодкой

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

    Вы обнаружите, что порогом является достоверность около 28 процентов. Теперь вы создадите копию слоя Detected_Boats, содержащую только те объекты, которые имеют достаточно высокую достоверность и достаточную площадь для того, чтобы являться лодками.

    Подсказка:

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

  8. На ленте на вкладке Карта в группе Выборка нажмите Очистить, чтобы отменить выбор всех объектов.

    Кнопка Очистить

  9. На панели Содержание щелкните правой кнопкой Detected_Boats, щелкните Данные и выберите Экспорт объектов.

    Опции меню Экспорт объектов

  10. На панели Экспорт объектов для Выходной класс объектов наберите Detected_Boats_Cleaner.

    Параметр Выходной класс объектов

  11. Разверните Фильтр и сформируйте выражение Где Confidence больше 28.

    Выражение Где Confidence больше 28

  12. Нажмите Добавить условие и сформируйте второе выражение И Shape_Area больше 9.

    Выражение И Shape_Area больше 9

  13. Нажмите OK.

    Новый слой добавлен на карту.

  14. На панели Содержание снимите отметку рядом со слоем Detected_Boats, чтобы отключить его.

    Отключите Detected_Boats.

  15. Закройте таблицу атрибутов Detected_Boats, чтобы увеличить размер карты.

    Закройте таблицу атрибутов Detected_Boats.

  16. На вкладке Карта щелкните Закладки и выберите закладку Область обнаружения, чтобы вернуться к полному экстенту обнаружения.
  17. На карте просмотрите слой Detected_Boats_Cleaner.

    Слой Detected_Boats_Cleaner на карте

    Большинство ложно положительных обнаружений теперь исчезли.

    Примечание:

    Теперь, когда вы знаете, что оптимальный порог достоверности для ваших данных составляет 28 процентов, и если вы хотите снова запустить инструмент, можете изменить аргумент модели box_threshold в инструменте Обнаружение объектов с помощью глубокого обучения с 0,2 на 0,28. Таким образом, из результатов будут исключены ложные обнаружения с достоверностью от 20 до 28 процентов. (Аргумент box_threshold определяет минимальное значение Confidence, принимаемое в выходных данных.)

    Однако эквивалента порогу области не существует, поэтому эту часть необходимо оставить для этапа постобработки.

  18. На панели Содержание щелкните правой кнопкой слой Detected_Boats_Cleaner и выберите Таблица атрибутов.

    Сейчас в слое осталось 66 лодок.

    66 пространственных объектов в слое

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

  19. Нажмите Ctrl+S, чтобы сохранить свой проект.

Применение модели Text SAM к вашим собственным изображениям

Если вы хотите применить модель Text SAM к своим собственным данным, ниже приведены несколько советов, которые помогут вам добиться успеха.

  • Подготовка изображений – Для модели Text SAM в качестве входных данных необходимы трехканальные изображения (красный, зеленый и синий или RGB). Если в вашем изображении более трех каналов, вам следует извлечь соответствующие каналы перед применением Text SAM. Для модели также в качестве входных данных необходимы изображения с 8-битной глубиной пиксела. Если ваше изображение имеет другую глубину пиксела, например 16 бит, вам следует преобразовать его в 8 бит. Пошаговые инструкции по реализации этих изменений см. в разделе Выберите подходящие каналы изображений в руководстве Улучшение модели глубокого обучения с помощью трансферного обучения.
  • Поиск информации о ваших изображениях – Если вы не уверены в свойствах вашего изображения (например, количестве каналов, глубине пиксела или размере ячейки), на панели Содержание щелкните правой кнопкой мыши слой изображений и выберите Свойства. На панели Свойства щелкните панель Источник и в разделе Информация о растре найдите Количество каналов, Размер ячейки X, Размер ячейки Y и Глубина пиксела.
  • Исходный рабочий процесс – Когда ваше изображение будет готово к процессу обнаружения объектов, сначала попробуйте использовать рабочий процесс модели Text SAM в соответствии с описанием в данном руководстве. Это самый простой подход, позволяющий сразу получить качественные результаты.
  • Изменение размера ячейки – Если вы не полностью удовлетворены своими первыми результатами, можете попробовать изменить значение Размера ячейки в параметрах среды Обнаружение объектов с использованием глубокого обучения. Размер ячейки (в метрах) следует выбирать так, чтобы обеспечить максимальную видимость интересующих объектов на всем выбранном экстенте. Рассмотрите возможность увеличения размера ячейки для обнаружения более крупных объектов и меньшего размера ячейки для обнаружения более мелких объектов. Например, установите размер ячейки для обнаружения облаков на 10 метров, а для обнаружения автомобилей - на 0,3 метра (30 сантиметров). Хотя входное изображение не изменится, инструмент будет выполнять повторную выборку данных на лету во время обработки. Дополнительную информацию о размере ячейки см. в разделе Обнаружение объектов с несколькими разрешениями с помощью модели Text SAM и Размер пикселов изображения и растровых данных.
    Параметр Размер ячейки
  • Использование маски – При обнаружении объектов в определенных областях интереса, например лодок, появляющихся только в водных областях, может быть полезно установить Маску в параметрах среды Обнаружение объектов с использованием глубокого обучения. Маска — это полигональный (или растровый) слой, который очерчивает области, представляющие интерес для анализа, например, границы акватории Копенгагена или, возможно, конкретные пристани, если они являются единственной целью вашего исследования. При запуске инструмента обработка будет происходить только в тех местах, которые попадают в маску, что экономит время и позволяет избежать ложно положительных обнаружений за пределами маски.
    Параметр Маска
  • Использование предварительно обученной модели для конкретного объекта – Помимо использования Text SAM, существует еще один эффективный по времени подход к обнаружению объектов с помощью GeoAI в ArcGIS: вы можете использовать одну из десятков предварительно обученных моделей, выпущенных Esri, где каждая модель фокусируется на одном типе объекта, например, деревья, здания или солнечные батареи. Подробнее см. руководство Выявление объектов с помощью предварительно обученной модели.
  • Земельный покров и другие типы классификации на уровне пикселов – Text SAM предназначена для обнаружения дискретных объектов, которые относительно компактны и отличаются от своего контекста (например, лодки, окруженные водой). Если вы хотите извлечь информацию о землепользовании и растительном покрове (LULC) или выполнить другие типы классификации на уровне пикселов, вам не следует использовать Text SAM (или другие подобные модели, такие как SAM). Вместо этого рассмотрите другие предварительно обученные модели из ArcGIS Living Atlas, такие как High Resolution Land Cover Classification – USA или Land Cover Classification (Sentinel-2).

В этом уроке вы загрузили модель Text SAM GeoAI с веб-сайта ArcGIS Living Atlas и использовали ее для обнаружения лодок на изображении. Затем вы использовали фильтры атрибутов, чтобы удалить ложноположительные объекты. Наконец, вы узнали несколько советов, как успешно применить этот рабочий процесс к своим изображениям.

Больше обучающих материалов, аналогичных этим, доступно в серии Попробуйте глубокое обучение в ArcGIS