Подготовить обучающие данные выявления объектов облаков точек (3D Analyst)

Краткая информация

Создает обучающие данные облака точек для моделей выявления объектов при помощи глубокого обучения.

Иллюстрация

Иллюстрация инструмента Подготовить обучающие данные выявления объектов облаков точек

Использование

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

    • Указать облако точек проверки в дополнение к входному облаку точек. Набор данных должен ссылаться на другой набор точек, отличный от входного облака точек. Также можно указать границу для обрезки облака точек проверки.
    • Указать только входное облако точек с границами обучения и проверки. Это приведет к тому, что данные обучения и проверки будут получены из одного и того же входного облака точек, поэтому нет необходимости указывать набор данных для параметра Облако точек проверки. Избегайте перекрытия между двумя наборами данных граничащих полигонов, чтобы не использовать одни и те же данные облака точек для обучения и проверки.
  • Каждый тип объекта, присутствующий в облаке точек, содержится в ограничивающем прямоугольнике мультипатч. Неопознанные объекты в обучающих или проверочных данных приведут к тому, что модель не сможет эффективно научиться идентифицировать объект. Если облако точек содержит неопознанные объекты, используйте граничащие объекты, чтобы ограничить экспортированные наборы обучающих данных местоположением, в котором объекты корректно содержались в ограничивающем прямоугольнике.

  • Точки, представляющие объекты, не нуждаются в классификации, чтобы быть использованными в обучающем наборе данных для обнаружения объектов. Это упрощает задачу надписывания объектов и позволяет создавать ограничивающие прямоугольники в качестве объектов-мультипатчей. Ограничивающие прямоугольники можно создавать посредством интерактивного 3D-редактирования класса объектов-мультипатчей. Однако если объекты представлены классифицированными облаками точек, ограничивающие прямоугольники для этих точек можно создать с помощью инструмента Извлечь объекты из облака точек.

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

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

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

  • Ограничение точек в блоке должно отражать размер блока и среднее расстояние между точками данных. Количество точек в заданном блоке может быть аппроксимировано с помощью инструмента Статистика точек LAS как растр с опцией Число точек в параметре Метод и желаемым размером блока, заданным как размер ячейки выходного растра. Гистограмма изображения этого растра может проиллюстрировать распределение точек по блокам по всему набору данных. Если гистограмма отображает большое количество блоков с широкой дисперсией, это может указывать на наличие данных с нерегулярной выборкой, содержащих потенциальные горячие точки с высокой плотностью. Если блок содержит больше точек, чем предельное количество точек на блок, этот блок будет создан несколько раз, чтобы убедиться, что все его точки представлены в обучающих данных. Например, если предельное количество точек на блок установлено на 10000, а блок содержит 22000 точек, будут созданы три блока по 10000 точек, чтобы нивелировать плотность в каждом блоке. Также следует избегать предельного количества точек, которое значительно превышает номинальное количество точек в большинстве блоков. В некоторых архитектурах дискретизация данных повышается, в соответствии с предельным количеством точек. Поэтому используйте размер блока и ограничение по количеству точек в блоке, которые будут близки к ожидаемому количеству точек, охватывающему большинство блоков в обучающих данных. Как только обучающие данные созданы, в окне сообщения инструмента отображается гистограмма, а ее изображение сохраняется в папке, содержащей обучающие и данные и данные для проверки. Эту гистограмму можно просмотреть, чтобы определить, была ли выбрана подходящая комбинация размера блока и предельного количества точек. Если значения указывают на неоптимальное количество точек, снова запустите инструмент с более подходящим значением для параметра Предельное количество точек в блоке.

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

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

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

Параметры

ПодписьОписаниеТип данных
Входное облако точек

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

LAS Dataset Layer; File
Входные обучающие объекты

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

Feature Layer
Входные объекты проверки

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

Feature Layer
Размер блока

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

Linear Unit
Выходные обучающие данные

Расположение и имя выходных обучающих данных (файл *.pcotd).

File
Обучающие ограничивающие объекты
(Дополнительный)

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

Feature Layer
Поле кода обучения
(Дополнительный)

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

Field
Облако точек проверки
(Дополнительный)

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

LAS Dataset Layer; File
Ограничивающие объекты проверки
(Дополнительный)

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

Feature Layer
Поле кода проверки
(Дополнительный)

Поле, которое идентифицирует уникальный ID для каждого типа объекта в объектах-мультипатч проверки. Если поле не определено, объектам присваивается идентификатор 0.

Field
Предельное количество точек в блоке
(Дополнительный)

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

Long
Базовое значение высоты поверхности
(Дополнительный)

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

Raster Layer
Исключенные коды классов
(Дополнительный)

Коды классов, которые будут исключены из обучающих данных. Можно задать любое значение от 0 до 255.

Long
Экспортировать только содержащие объекты обучающие блоки.
(Дополнительный)

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

  • Отмечено - в обучающие данные будут экспортированы только содержащие объекты блоки.
  • Не отмечено - в обучающие данные будут экспортированы и содержащие объекты блоки, и блоки, не содержащие объектов. Это значение по умолчанию

Boolean

arcpy.ddd.PreparePointCloudObjectDetectionTrainingData(in_point_cloud, in_training_features, in_validation_features, block_size, out_training_data, {training_boundary}, {training_code_field}, {validation_point_cloud}, {validation_boundary}, {validation_code_field}, {block_point_limit}, {reference_height}, {excluded_class_codes}, {blocks_contain_objects})
ИмяОписаниеТип данных
in_point_cloud

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

LAS Dataset Layer; File
in_training_features

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

Feature Layer
in_validation_features

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

Feature Layer
block_size

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

Linear Unit
out_training_data

Расположение и имя выходных обучающих данных (файл *.pcotd).

File
training_boundary
(Дополнительный)

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

Feature Layer
training_code_field
(Дополнительный)

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

Field
validation_point_cloud
(Дополнительный)

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

LAS Dataset Layer; File
validation_boundary
(Дополнительный)

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

Feature Layer
validation_code_field
(Дополнительный)

Поле, которое идентифицирует уникальный ID для каждого типа объекта в объектах-мультипатч проверки. Если поле не определено, объектам присваивается идентификатор 0.

Field
block_point_limit
(Дополнительный)

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

Long
reference_height
(Дополнительный)

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

Raster Layer
excluded_class_codes
[excluded_class_codes,...]
(Дополнительный)

Коды классов, которые будут исключены из обучающих данных. Можно задать любое значение от 0 до 255.

Long
blocks_contain_objects
(Дополнительный)

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

  • BLOCKS_WITH_OBJECTSВ обучающие данные будут экспортированы только содержащие объекты блоки.
  • ALL_BLOCKSВ обучающие данные будут экспортированы и содержащие объекты блоки, и блоки, не содержащие объектов. Это значение по умолчанию
Boolean

Пример кода

Пример PreparePointCloudObjectDetectionTrainingData (окно Python)

В следующем примере показано использование этого инструмента в окне Python.

import arcpy
arpy.env.workspace = r"C:\GIS_Data"
arcpy.ddd.PreparePointCloudObjectDetectionTrainingData("Training.lasd", r"Objects.fgdb\Training_FCs",
                                                       r"Objects.fgdb\Validation_FCs", "12 Meters",
                                                       "Training_Cars.pcotd", training_code_field="Car_Type",
                                                       validation_code_field="Car_Type", reference_surface="DEM.tif",
                                                       excluded_classes=[2, 7, 18])