Классификация 3D объектов в облаках точек

PHYGITALISM
PHYGITALISM
Published in
11 min readMay 13, 2020

--

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

Введение

Анализ трехмерных сцен и данных — задача, которая в последнее время становится все более актуальной в связи с появлением и распространением новых систем сканирования пространства, которые могут функционировать в реальном времени. Такие системы находят широкое применение в XR, беспилотном транспорте, системах сканирования реальных объектов и во многих других задачах.

Показательный пример — прототип системы продвинутого восстановления пространства в форме облака точек, с привязкой медиаконтента от Facebook.

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

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

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

Пост в twitter с демонстрацией семантической сегментации magic leap.

В MRTK добавляются возможности по базовой семантической сегментации сцены.

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

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

Рис.1 Облако точек отсканированного помещения, полученное с помощью: (а) — magic leap, (b) — Lenovo Phab 2 Pro + RTAB-Map.

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

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

Рис. 2. Выделенная зона интересов при сканировании

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

Рис. 3. Итоговые исходные данные для обработки.

Исходная задача была разделена на три этапа:

Рис. 4. Основные этапы обработки.

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

В таком формате есть и недостатки — например, при построении полигонов, в процессе сканирования могут соединяться вершины, которые не связаны между собой в реальной геометрии пространства. Это вносит искажения и ненужные шумы. Про проблемы, связанные с преобразованием облака точек в полигональную модель и методы преобразования из одной формы представления 3D данных в другие, можно узнать из статьи [6].

Сканирование

Сканирование было выполнено с помощью устройств Lenovo Phab 2 Pro и приложения RTAB-Map [1]. Экспорт скана в виде облака точек и полигональной модели происходил из приложения и выглядел следующим образом:

Рис. 5. Экспорт из RTAB-Map в виде облака точек.
Рис. 6. Экспорт из RTAB-Map в виде полигональной модели.

Приложение RTAB-Map не единственный вариант, для сканирования можно использовать и другие устройства, такие как Intel RealSense, Kinect V2, Magic Leap, HoloLens 2 и т. п.

Обработка облака точек

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

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

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

Рис. 7. основные этапы обработки.

Для всех этапов обработки была выбрана библиотека PCL [2] (на момент написания использовалась версия 1.10), предназначенная для обработки облака точек. В ней реализовано множество алгоритмов для самых разных задач.

Удаление шума

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

Рис. 8. Применение алгоритма StatisticalOutlierRemoval к исходному облаку точек.

Удаление опорной поверхности

Как уже обсуждалось выше, на скане остаётся опорная поверхность (в нашем случае это пол), которая не нужна для дальнейшего анализа. Ее необходимо удалить. Для этого использовалась модель детектирования плоскости с применением SACSegmentation. Выделение опорной поверхности было основано на RANSAC алгоритме. Результат приведен на рис. ниже (красным выделены все точки, которые лежат примерно на одной плоскости):

Рис. 9. Результат обнаружения плоскости.

Сегментация объектов

Финальным шагом предобработки данных было применение алгоритма кластеризации, необходимого для выделения отдельных объектов на скане. Этот шаг может быть полезен в различных сценариях, например, когда необходимо выделить какие-то сегменты в автоматическом режиме для дальнейшей работы. Результат сегментации можно анализировать далее, с целью выделения нужных сегментов и удаления лишнего. Это позволяет сократить вычислительную сложность и объём хранимых данных, если предполагается применять другие методы, как в нашем случае для классификации. Для некоторых приложений результата сегментации может быть достаточно, но нам требовался дальнейший анализ.

Мы воспользовались алгоритмом EuclideanClusterExtraction для выделения сегментов. Результат обработки представлен на рис. ниже (каждый цвет это отдельный сегмент):

Рис. 10. Результат автоматической сегментации.

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

Если же рассмотреть применение аналогичного подхода в условиях того, что объект находится где-то в регионе интересов, то результат будет как на рисунке ниже:

Рис. 11. Объект на скане в регионе интересов.
Рис. 12. Удаление шума.
Рис. 13. Удаление опорной поверхности.
Рис. 14. Результат сегментации.

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

Обработка полигональной модели

Этапы предобработки полигональных моделей аналогичны этим же этапам для облака точек, кроме сегментации. Для практической реализации использовался Blender. Выделения опорной поверхности производилось с помощью алгоритма, в основе которого лежит техника 3D region growing (аналогичная техника используются в работе [9] или в этом алгоритме кластеризации из PCL). Для удаления шума использовалась информация о количестве вершин в изолированных участках полигонов и об удаленности вершин от центра ограничивающего прямоугольного параллелепипеда (axis-aligned bounding box). Предполагалось, что объект интересов находится где-то в центре. Алгоритмы фильтрации оформлены в виде плагина для Blender (он доступен на нашем GitHub).

Рис. 15. Исходный скан в виде полигональной модели.

Этапы фильтрации в Blender:

Рис. 16. Выделение полигонов, принадлежащих полу, по критериям положения и нормали.
Рис. 17. Разделение геометрии на отдельные объекты из соединенных вершин
Рис. 18. Выделение артефактов по отношению количества вершин в объекте к исходному количеству вершин
Рис. 19. Выделение объектов по удалённости от центра исходной геометрии
Рис. 20. Результат фильтрации

Классификация

На данном этапе у нас есть выделенный объект в форме облака точек. В случае, если в результате сканирования и предобработки мы располагаем полигональной моделью, ее либо необходимо преобразовать в облако точек, либо использовать методы классификации, предназначенные для работы с полигональной моделью, например как в работах [7,8].

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

В качестве модели для задачи классификации была выбрана модель DGCNN (эта реализация отличается от описания в оригинальной статье [4]), так как в отличие от многих подходов, она работает напрямую с облаком точек, имеет готовую реализацию, а число ее параметров сравнительно невелико. Некоторые части были переписаны под наши нужды.

Для обучения модели был выбран набор данных ModelNet 10 [3], для ускорения обучения — только 4 класса:

  • chair
  • desk
  • sofa
  • table

Из каждого облака точек в ходе обучения было выбрано 1500 точек. Схема обучения представлена на рис. ниже:

Рис. 21. Схема процесса обучения в задаче классификации облака точек.

Под нормированием координат подразумевается преобразование масштабирования, которое переводит ограничивающий прямоугольный параллелепипед (axis-aligned bounding box) в прямоугольный параллелепипед, у которого размер наибольшей стороны равен 1.

Внесение шума — это небольшой сдвиг каждой координаты на случайную величину, которая имеет равномерное распределение. Этот шаг даёт некоторую устойчивость к шумам и вариативности данных. Данные с реального сканера в большинстве случаев искажены и не похожи на 3D модели, которые создаются в редакторах. Они, как правило, используются для обучения. Такие техники полезны для минимизации такого различия.

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

Обучение модели заняло 20 часов на RTX 2080Ti, что оставляет уверенность в том, что при использовании более мощной вычислительной платформы, которые на сегодняшний день достаточно широко распространены и доступны (различные облачные сервисы), на обучение может потребоваться в разы меньше времени. Так же в процессе обучения потребовалось 10,5 GB памяти на GPU. Значение balanced_accuracy_score на тестовом наборе достигло 0,9463.

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

Поиск похожих по форме объектов

Мы уже писали раннее про эксперименты с поиском в 3D. На одном из вспомогательном этапе при решении задачи было необходимо выделить стол из полигональной модели. Для этого выделенного стола был выполнен поиск наиболее близкого по форме объекта среди подмножества моделей ShapeNet v2 [5].

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

Рис. 22 Результат поиска на основе 3D дескрипторов Цернике. Зелёный цвет — это выделенный стол и 20 ближайших к нему объектов
Рис. 23. Результаты поиска на основе RCVS. Оригинальная ориентация стола во время поиска была такая же, как и на рис. 22

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

С учётом активного развития технологии RGB-D сканирования в современных смартфонах и планшетах, такие сценарии становятся всё более реалистичными.

Источники

[1] Labbé M., Michaud F. RTAB-Map as an open-source lidar and visual simultaneous localization and mapping library for large-scale and long-term online operation // Journal of Field Robotics. 2019. DOI: 10.1002/rob.21831.

[2] Rusu, R.B. and Cousins, S., 2011, May. 3d is here: Point cloud library (pcl). In 2011 IEEE international conference on robotics and automation (pp. 1–4). IEEE.

[3] Wu, Z., Song, S., Khosla, A., Yu, F., Zhang, L., Tang, X. and Xiao, J., 2015. 3d shapenets: A deep representation for volumetric shapes. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 1912–1920).

[4] Wang, Y., Sun, Y., Liu, Z., Sarma, S.E., Bronstein, M.M. and Solomon, J.M., 2019. Dynamic graph cnn for learning on point clouds. ACM Transactions on Graphics (TOG), 38(5), pp.1–12.

[5] Chang, A.X., Funkhouser, T., Guibas, L., Hanrahan, P., Huang, Q., Li, Z., Savarese, S., Savva, M., Song, S., Su, H. and Xiao, J., 2015. Shapenet: An information-rich 3d model repository. arXiv preprint arXiv:1512.03012.

[6] Remondino, F., 2003. From point cloud to surface: the modeling and visualization problem. International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, 34.

[7] Feng, Y., Feng, Y., You, H., Zhao, X. and Gao, Y., 2019, July. MeshNet: mesh neural network for 3D shape representation. In Proceedings of the AAAI Conference on Artificial Intelligence (Vol. 33, pp. 8279–8286).

[8] Hanocka, R., Hertz, A., Fish, N., Giryes, R., Fleishman, S. and Cohen-Or, D., 2019. MeshCNN: a network with an edge. ACM Transactions on Graphics (TOG), 38(4), pp.1–12.

[9] Adams, Rolf and Leanne Bischof. “Seeded Region Growing.” IEEE Trans. Pattern Anal. Mach. Intell. 16 (1994): 641–647.

[10] Han, L., Zheng, T., Xu, L. and Fang, L., 2020. OccuSeg: Occupancy-aware 3D Instance Segmentation. arXiv preprint arXiv:2003.06537.

Авторы

Вадим Кондаратцев

vadim@phygitalism.com

Инженер-исследователь в Phygitalism

Александр Крючков

a.kryuchkov@phygitalism.com

Инженер-исследователь в Phygitalism

Роман Чумак

Инженер-исследователь в Phygitalism

p4@phygitalism.com

--

--

PHYGITALISM
PHYGITALISM

We are a young technology company founded in 2015 and currently developing Phygital+, a product for creators combining AI, 3D and XR