Обучение модели глубокого обучения для классификации облака точек

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

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

Облака точек обычно содержат примеры всех видов предметов, независимо от того, что может видеть лазер или фотография. Нереально и нежелательно, чтобы каждая точка классифицировалась как конкретный предмет. То, что вам необходимо – точки интереса, классифицированные правильно. Все остальные точки можно оставить в фоновом или каком-либо еще классе. Например, если вас интересуют линии электропередач, растительность или здания, убедитесь, что они классифицированы правильно. Остальные точки можно оставить не классифицированными (например, класс 1 для лидара формата LAS).

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

Подготовка обучающих данных

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

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

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

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

Размер блока

Данные обучения и проверки размера блока разбиваются на управляемые небольшие блоки. Эти блоки точек затем помещаются в формат, доступный библиотекам глубокого обучения. Размер блоков соответствующий. Их цель – содержать разумное количество точек относительно доступной памяти GPU. Обучение будет загружать точки и вторичные структуры данных для такого количества блоков одновременно, которое задано параметром обучения, называемым размером пакета. Здесь следует обратить внимание на взаимодействие нескольких переменных. Пакеты управляют тем, сколько блоков обрабатываются одновременно. Блоки – это наборы точек и их атрибутов. Количество точек в блоке определяется размером блока и плотностью точек в местоположении блока. Блоки будут содержать относительно согласованное число точек, если плотность облака точек будет согласованной. Вы можете использовать наборы данных, где плотность точек сильно варьируется, но возможно, для них потребуется больше обучения, чтобы они хорошо сработали.

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

Попробуйте начать с блоков, содержащих в среднем примерно 8000 точек.

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

block_size = square_root(target_point_count) * 2d_point_spacing

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

Для графического процессора с выделенной оперативной памятью 8 ГБ используйте размер пакета по умолчанию 2, чтобы загрузить в графический процессор одновременно два блока точек. Следите за использованием памяти графического процессора. Если вы обнаружите, что в процессе обучения остается доступно много памяти GPU, вы можете безопасно увеличить размер пакета для одновременной обработки большего количества блоков.

Обучение

Обучение включает в себя создание сверточной нейросети (CNN) с использованием данных обучения и проверки. Итоговая модель используется для классификации облаков точек формата LAS через процесс, называемый выводом. PointCNN – это среда глубокого обучения с открытым исходным кодом, используемая ArcGIS для обучения и вывода. Вы можете использовать модель с собственными данными или опубликовать ее для других и использования из данных. Процесс обучения требует наличия больших вычислительных ресурсов и может занять длительное время. К счастью, см результат компактный. Размер самих моделей составляет обычно 15–20 Мб.

Выходные модели составлены из нескольких файлов, которые размещены вместе в выходной папке. Они включают файл определения модели Esri (*.emd), являющийся файлом JSON, содержащим настройки параметров и файл данных *.pth, плюс дополнительные файлы, которые можно просмотреть для доступа к результатам обучения. Пакет глубокого обучения (*.dlpk) также выводится в папку. Он содержит все актуальные файлы, упакованные в один, для общего доступа и публикации.

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

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

Управление классами

Категория Управление классами в инструменте геообработки Обучение модели классификации облака точек содержит параметры, связанные с перекодировкой классов, классами интереса и именованием классов.

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

Коды классов интереса – это то, на чем сфокусировано обучение. По умолчанию все классы во входных данных используются для создания модели. Несколько классов могут излишне усложнить обучение, если вы заинтересованы в одном классе, или типе, или объекте. Например, если вас интересует создание модели для классификации токоотводов линии электропередач, можно задать этот один код интереса (например, класс 14, следующий стандартам LAS). Если вы это сделаете, вас спросят о коде фонового класса. Это код для всего остального. Таким образом, даже если обучающие данные могут содержать больше классов, обученная модель будет знать, как классифицировать только два из них: класс интереса и фон.

Параметры обучения

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

Обучение – это итеративный процесс. Проходы по данным выполняются многократно до тех пор, пока не будет удовлетворен критерий. Один из критериев – Максимальное число эпох. Эпоха представляет один проход по обучающим данным. В пределах эпохи данные обрабатываются пакетно. Пакет – это набор из одного или нескольких блоков. Итераций на эпоху – это процент пакетов, обработанных в пределах эпохи. Поэтому при указании менее 100 процентов обрабатывается подмножество пакетов. Размер пакета – это число блоков в пакете. Блоки в пакете обрабатываются параллельно. Если ваш графический процессор имеет достаточно выделенной оперативной памяти, он может выполнять обучение с использованием большего размера пакета, что обычно сокращает время, необходимое для обучения в целом.

Скорость обучения

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

Определение скорости обучения предполагает компромисс. Слишком малое значение приведет к длительному времени обучения, и модель даже может "зависнуть". Слишком большое значение может привести к изучению неоптимального набора весов и нестабильному процессу обучения.

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

Связанные разделы