PointNet++ [1] является расширением своего предшественника PointNet [2], который стал новаторской работой в области глубокого изучения наборов точек. PointNet++ решает проблему захвата локальных структур в пространстве точек — аспект, в котором PointNet не справляется. Как набор инструментов для дальнейшего развития PointNet, PointNet++ представляет концепцию иерархических нейронных сетей. Затем PointNet рекурсивно применяется к группам точек, созданным из вложенного разделения входных точек. PointNet++ использует метрические пространственные расстояния между точками и позволяет изучать локальные признаки с пошаговым контекстным масштабированием. Кроме того, вводятся новые слои обучения набора для устранения низкой производительности сети, вызывающей ввод набора точек с одинаковой плотностью, что позволяет адаптивно и произвольно комбинировать различные масштабы. Согласно экспериментальным результатам, PointNet++ значительно превосходит современные методы в контексте глубокого изучения набора точек.

Мотивация и введение

В настоящее время появляется много новых подходов в области компьютерного зрения благодаря технологическим достижениям, а также текущим исследованиям в области искусственного интеллекта. В результате усовершенствований крупномасштабных наборов данных 3D-геометрии, 3D-сенсоров, а также улучшений в области глубокого 3D-обучения 3D-зрение приобретает все более важную роль во множестве областей применения [3]. В этой статье мы рассмотрим один из основных методов, представленных в области трехмерного зрения, PointNet++.

Основная цель статьи — проанализировать и уточнить входные 3D-данные в виде наборов геометрических точек. По определению набора ожидается, что эти наборы точек будут инвариантны к перестановкам, то есть порядок, в котором мы расположим точки в евклидовом наборе, не должен иметь значения для производительности алгоритма. PointNet++ превосходит своего предшественника PointNet, учитывая локальный контекст. Это означает, что PointNet++ знает о какой-то конкретной части объекта в целом, тогда как PointNet в этом аспекте оказывается недостаточным. Для правильного функционирования и достижения того, к чему он стремится, PointNet++ необходимо выполнить ряд шагов. Прежде всего, PointNet++ требует, чтобы данные были в виде точек, как описано выше. Затем точки разделяются для дальнейшего извлечения потенциальных признаков, как показано на рисунке 1.

Давайте начнем с обсуждения того, как обрабатывается разделение. PointNet++ рассматривает каждый раздел как математический шар. Каждый шар представляет определенную окрестность объекта, например. правый угол стола. Нам нужны две части информации, чтобы иметь возможность сформировать шар. Каждый шар должен иметь координату центра тяжести, определяющую его местоположение, и масштаб, определяющий его размер. Процедура назначения координат центроида выполняется с помощью алгоритма выборки самой дальней точки (FPS). В FPS первый центроид — это случайная точка, выбираемая из набора. Тогда вторая самая дальняя точка от первого центроида становится вторым центроидом. Третий центроид - это точка, наиболее удаленная от первых двух центроидов. Этот процесс продолжается до k центроидов. Как только центроиды определены, следующим шагом будет присвоение каждому из них шкалы. Как правило, фиксированный масштаб для всех центроидов не приветствуется, потому что все окрестности объекта не обязательно должны быть одинакового размера. Другая причина, по которой следует избегать фиксированного масштабирования, заключается в том, что входная плотность точек обычно неравномерна. В качестве решения этой проблемы можно получить динамическое масштабирование для окрестностей путем случайного исключения ввода на этапе обучения. Действительно, способность обрабатывать окрестности с различными масштабами считается значительным вкладом PointNet++. Получение информации о центроиде и масштабировании завершает этап разделения.

Постановка задачи

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

Определение. Предположим, что X = (M,d) — дискретное метрическое пространство, метрика которого унаследована от n-мерного вещественнозначного евклидова пространства, где X — множество точек, а d — метрика расстояния. Затем мы ищем такое f, что:
f : X Семантическая информация о X
Важно отметить, что плотность X не должна быть равномерно распределена в данное пространство.

Метод

После разделения, описанного выше, происходит фактическое извлечение локальных признаков. Локальные функции абстрагируются от каждого из разделов. PointNet++ выбирает своего предшественника, PointNet, в качестве локального средства изучения признаков. То есть PointNet++ рекурсивно применяет PointNet для каждого из предварительно выбранных разделов (окрестностей). Чтобы понять, как выполняется этот шаг в деталях, мы должны вспомнить принцип работы PointNet. Рисунок 2 изображает архитектуру PointNet. PointNet является универсальным аппроксиматором непрерывной функции множества точек.

Определение. Учитывая неупорядоченный набор точек {x₁,x₂,…,xₙ}, мы определяем функцию множества таким образом, что:
f(x₁,x₂,…,xₙ)=γ( max{h(xᵢ)}), для i=1,..,n, где h и γ - многослойные персептроны.

Важно отметить, что PointNet может произвольно аппроксимировать любую непрерывную функцию набора, а h (xᵢ) можно интерпретировать как пространственное кодирование точки xᵢ в разделе. PointNet действительно является мощным инструментом для классификации и сегментации 3D-изображений. Он демонстрирует впечатляющую производительность в нескольких тестах, но ему не хватает информации о локальном контексте, как мы обсуждали ранее. Следовательно, PointNet++ использует мощь PointNet, применяя ее к каждому из локальных районов.

Теперь мы можем углубиться, чтобы поговорить о том, как функции изучаются в PointNet++ и как именно PointNet помогает нам в этом. Когда речь идет об изучении признаков, на помощь приходят сверточные нейронные сети (CNN). PointNet++ не использует CNN, но использует идею CNN об иерархии функций, например. у стад есть коровы, у коров есть глаза, у глаз есть зрачки и т. д. Таким образом, PointNet++ использует иерархическое обучение набору точек. Рисунок 3 демонстрирует общую структуру этой схемы обучения. Как видно на рисунке 3, структура состоит из нескольких заданных уровней абстракции (SAL). Заданный уровень абстракции формируется а) слоем выборки, б) слоем группировки, в) слоем точечной сети. Рассмотрим подробнее каждый из этих слоев. Учитывая входной набор точек, вся вышеупомянутая выборка центроидов с помощью алгоритма FPS происходит в слое выборки.

Последующий группирующий слой использует запрос шара для группировки точек, находящихся в пределах определенного радиуса шара. Естественно, каждая из групп может содержать разное количество точек. Слой группировки определяет масштаб окрестности. Наконец, в слое точечной сети алгоритм PointNet применяется к каждой из окрестностей. В качестве выходных данных для каждой окрестности слой точечной сети возвращает центроид и кодировку локального объекта. Затем PointNet++ берет эти окрестности и кодировку их признаков и многократно применяет заданные уровни абстракции для иерархического извлечения признаков. Важно отметить, что в слое группировки мы использовали фиксированный радиус шара. Однако в начале мы упомянули, что наличие фиксированного масштаба для окрестности нежелательно, потому что признаки, изученные в плотных данных, могут плохо обобщаться для разреженных областей, и наоборот. Таблица 1. Показывает входные и выходные формы каждого слоя.

Чтобы решить проблему фиксированного масштаба раздела, PointNet++ использует слои точечной сети с адаптацией к плотности и предлагает два типа слоев группировки: а) группировка с несколькими масштабами (MSG), б) группировка с несколькими разрешениями (MRG). Рисунок 4. изображает структуру MRG и MSG. MSG применяет группирующие слои с разными масштабами, за которыми следует слой точечной сети для каждого масштаба. Элементы в разных масштабах склеиваются вместе, образуя многомасштабный элемент. В качестве альтернативы, MRG склеивает сводку признаков предыдущего слоя с вектором признаков, полученным путем прямой обработки всех необработанных входных точек через одну сеть точек.

В общем, мы закончили обсуждение части изучения функций PointNet++. Следующим и последним шагом будет выбор цели задачи — классификации или сегментации. На рис. 5 показаны две разные архитектуры для сегментации и классификации, тогда как на рис. 5 показана окончательная общая структура PointNet++. В результате классификации PointNet++ возвращает баллы класса, которые он выводит для данного 3D-объекта. В качестве альтернативы, в результате сегментации PointNet++ использует пропущенные ссылки для восстановления исходного набора точек с дополнительными оценками для каждой из них, потому что при сегментации мы стремимся идентифицировать различные части внутри объекта. Как только мы выполнили классификацию или сегментацию, мы закончили с PointNet++.

Эксперименты и результаты

Эксперименты по оценке производительности PointNet++ проводились на 4 наборах данных разной природы (2D, 3D и реальные 3D-сцены). Классификация экспериментов выглядит следующим образом:

а. Классификация наборов точек в евклидовом метрическом пространстве — цель состоит в том, чтобы классифицировать облака точек, взятые из двумерных (MNIST) и трехмерных (ModelNet40) евклидовых пространств. На рис. 6.а показаны результаты эксперимента.

b. Сегментация набора точек для семантической маркировки сцен — цель состоит в том, чтобы предсказать семантические метки объектов для точек при сканировании помещений. Рисунок 6.б. показывает результаты эксперимента.

c. Классификация множества точек в неевклидовом метрическом пространстве — целью классификации является нежесткая форма. В результате этого эксперимента была показана обобщаемость PointNet++ на неевклидово пространство. На рис. 6.c показаны сравнительные результаты между подходами. Сравнение первой и второй настроек PointNet++ (наши) показывает, что внутренние функции очень важны для классификации нежестких форм. Кроме того, сравнение второй и третьей настроек PointNet++ (наши) показывает, что использование геодезических окрестностей дает лучшие результаты, чем использование евклидовых окрестностей.

d. Визуализация функций — рисунок 6.d. визуализирует то, что было изучено ядрами первого уровня иерархической сети.

Сопутствующие работы

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

1. Сверточные нейронные сети — иерархическая структура, но они не подходят для неупорядоченных наборов точек с метриками расстояния.

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

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

4. Объемные сетки и геометрические графики — популярные представления глубокого обучения, но ни одно из них не учитывает проблему неравномерной плотности выборки.

Заключение

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

Давайте подключимся

Если вы хотите связаться со мной или поделиться каким-либо отзывом, не стесняйтесь зайти и сказать приветна LinkedIn — https://www.linkedin.com/in/aydin-javadov/ . Удачного обучения :)

Ссылки

[1] - Ци, Ч.Р., Йи, Л., Су, Х., и Гуибас, Л.Дж. (2017, 7 июня). PointNet++: глубокое иерархическое изучение функций на наборах точек в метрическом пространстве

[2] - Qi, C.R., Su, H., Mo, K., & Guibas, L.J. (2017, 10 апреля). PointNet: глубокое изучение наборов точек для трехмерной классификации и сегментации

[3] - Фанг Ю.И. (2021). 3D компьютерное зрение | Границы. Границы. https://www.frontiersin.org/research-topics/23013/3d-computer-vision#overview