В этом разделе представлен детальный анализ результатов, полученных при запуске трех выбранных архитектур на тестовом облаке точек. Также обсуждаются практические трудности, возникшие в ходе работы, и описываются эксперименты с предобработкой данных.
- Презентация: Google Slides
Входные данные представляют собой облака точек из музыкальной комнаты (реп. точка), полученные с лидара Leica BLK360 в формате .pcd.
- Файлы:
pcd_files/music_room.pcd: Оригинальный скан с лидара Leica BLK360. Формат: 3D RGB. Количество точек: 241.804.524.pcd_files/down0.01.pcd: Даунсэмплинг оригинального скана (сохранен на диске). Формат: 3D RGB. Количество точек: 5.888.225.
Воспроизведение state-of-the-art моделей сопряжено с рядом инженерных вызовов, от сборки зависимостей до подбора подходящего оборудования.
-
Проблемы с зависимостями и сборкой: Первой серьезной преградой стала сборка библиотеки Minkowski Engine. Процесс оказался чувствительным к версиям компилятора, CUDA и PyTorch, что потребовало тщательного подбора совместимых версий и конфигурации окружения.
-
Выбор вычислительной платформы:
- Локальная машина (Apple MacBook, ARM): Первоначальные попытки запустить код на локальной машине столкнулись с непреодолимыми трудностями из-за несовместимости C++ кода и CUDA-зависимостей
Minkowski Engineс ARM-архитектурой. - Облачные сервисы (Yandex Cloud): Следующим шагом была аренда серверов в облаке. Хотя CPU-мощности были доступны, стоимость аренды серверов с GPU оказалась слишком высокой для данного проекта.
- Кластер МФТИ: Благодаря доступу к HPC-кластеру ФПМИ МФТИ удалось получить значительные вычислительные ресурсы. Однако ключевым ограничением стала видеопамять: несмотря на большое количество GPU (8x RTX 2080 Ti), каждая карта имела всего 11 ГБ VRAM. Так как реализованные модели не поддерживали нативное распараллеливание инференса на несколько GPU, этого объема оказалось недостаточно для обработки плотных облаков точек в максимальном качестве.
- Выделенные серверы (Selectel): Финальным и наиболее успешным решением стала аренда выделенных серверов с мощными GPU (NVIDIA A100 с 40 ГБ VRAM), что позволило запустить самые требовательные конфигурации моделей, включая Sonata с Flash Attention, и провести все необходимые эксперименты.
- Тестовая и демо-конфигурация (Selectel): Для проведения тестов и демо-запусков использовался сервер с более скромными, но достаточными ресурсами: Ubuntu 24.04 LTS, AMD EPYC 7763 (16 vCPUs), 32 ГБ RAM, 1 × NVIDIA A5000 (24 ГБ VRAM), 80 ГБ SSD. Эта конфигурация обеспечила стабильную работу для большинства экспериментов, с временем инференса, указанным в метриках.
- Локальная машина (Apple MacBook, ARM): Первоначальные попытки запустить код на локальной машине столкнулись с непреодолимыми трудностями из-за несовместимости C++ кода и CUDA-зависимостей
Исходное облако точек со сканера Leica является очень плотным. Для успешной обработки и снижения "доменного разрыва" между данными Leica и датасетами, на которых обучались модели (S3DIS, ScanNet), были проведены эксперименты с даунсэмплингом.
- Мотивация: Анализ показал, что в стандартных бенчмарках плотность точек соответствует вокселю размером 2-5 см. Приведение тестовых данных к схожей плотности — важный шаг для корректной работы моделей.
- Методы:
- Voxel Grid Downsampling: Пространство делится на воксельную сетку, и все точки внутри каждого вокселя усредняются в одну. Этот метод создает равномерную, но менее плотную сетку точек.
- Grid Downsampling (случайная точка): В каждом вокселе выбирается одна случайная точка. Это сохраняет локальную структуру, но также снижает плотность.
- Параметры: Эксперименты проводились с размерами вокселя 3 см и 5 см. В перспективе также было бы интересно исследовать влияние пересчета нормалей на качество сегментации, но это не вошло в рамки данной работы.
Ниже представлен детальный разбор качества сегментации для каждой из трех реализованных архитектур.
Sonata, как самая современная модель, продемонстрировала наиболее интересные и вариативные результаты в зависимости от конфигурации.
-
Конфигурация 1: Без даунсэмплинга (1.2M точек)
- Наблюдения: Модель с трудом справляется с избыточной плотностью. Пол и стены сегментируются плохо, с заметными квадратными артефактами.
- Сильные стороны: Распознавание крупных объектов (столы, стулья, шкафы) в целом успешное. Модель даже корректно определила чехол от гитары и кулер как "другую мебель" (
otherfurniture). - Слабые стороны: Тонкие элементы, такие как ножки столов и стульев, определяются очень плохо.
-
Конфигурация 2: С Flash Attention (Voxel 3 см)
- Наблюдения: Значительное улучшение качества. Пол и стены определены почти идеально.
- Сильные стороны: Большинство шкафов и других крупных предметов мебели распознаны корректно.
- Слабые стороны: Проблемы с ножками столов и стульев сохраняются. На сиденьях стульев присутствуют артефакты. Кулер и пуфики распознаны удовлетворительно.
-
Конфигурация 3: Voxel 5 см, Encoder Patch Size 512 (Лучший результат)
- Наблюдения: Эта конфигурация показала наилучший баланс. Дверь, которая ранее игнорировалась, теперь четко видна.
- Сильные стороны: Пол и столешница определены почти идеально. Проблем с ножками столов стало заметно меньше. На сиденьях стульев отсутствуют артефакты. Чехол гитары и пуфики корректно классифицированы как
otherfurniture. - Слабые стороны: Кулер и барабаны имеют смешанную классификацию (
otherfurniture/шкаф), что, однако, является приемлемым результатом.
-
Конфигурация 4: Grid Downsampling (Voxel 3 см)
- Наблюдения: Очень высокий результат, сопоставимый с предыдущим.
- Сильные стороны: Модель смогла отличить предметы, лежащие на столе, от самой столешницы, что является признаком высокой детализации. Стулья, кресла и шкафы распознаны отлично, без артефактов. Дверь, пол и стены также определены корректно.
- Ключевые метрики (из лога выполнения):
- Время инференса: 3.36 секунды
- Количество точек (исходное -> после downsampling): 5,888,225 -> 508,006
- Обработано точек моделью: 446,473
- Доминирующие классы:
wall(52.5%),floor(16.6%),cabinet(16.4%),otherfurniture(5.4%).
- Полная статистика классов (из лога выполнения, ScanNet20):
Classes found: 17 wall: 234330 points (52.5%) floor: 74039 points (16.6%) cabinet: 73209 points (16.4%) bed: 3287 points (0.7%) chair: 10219 points (2.3%) sofa: 887 points (0.2%) table: 20565 points (4.6%) door: 4848 points (1.1%) window: 8 points (0.0%) bookshelf: 718 points (0.2%) picture: 42 points (0.0%) counter: 174 points (0.0%) curtain: 107 points (0.0%) shower curtain: 4 points (0.0%) sink: 108 points (0.0%) bathtub: 29 points (0.0%) otherfurniture: 23899 points (5.4%)
MinkUNet показал себя как надежный, но менее точный baseline.
-
Ключевые метрики (Voxel 3 см, из лога выполнения):
- Время инференса: 1.20 секунды
- Количество точек (исходное -> обработано вокселей): 5,888,225 -> 525,631
- Доминирующие классы:
wall(51.5%),floor(35.6%),chair(4.7%).
-
Конфигурация 1: Voxel 2 см
- Наблюдения: Пол определен хорошо, но на стенах появились артефакты — участки с рельефом были неверно классифицированы как шторы (
curtain). При этом, это единственная модель, которая вообще обратила внимание на этот рельеф. - Сильные стороны: Столешница и чехол от гитары (
otherfurniture) определены неплохо. Модель также сделала интересное наблюдение, классифицировав дверцу шкафа как дверь (door). - Слабые стороны: Пропущено много шкафов (слились со стеной). Ножки столов, барабаны и гитары на заднем плане распознаны плохо.
- Наблюдения: Пол определен хорошо, но на стенах появились артефакты — участки с рельефом были неверно классифицированы как шторы (
-
Конфигурация 2: Voxel 5 см (Неудачная)
- Наблюдения: Результат значительно хуже. Пропали артефакты со стен, но вместе с ними пропала и дверь.
- Слабые стороны: Множество объектов (шкафы, кулер) были классифицированы как стены. Некоторые стулья, столы и пуфики были ошибочно приняты за пол. В целом, эта конфигурация привела к сильной деградации качества.
- Полная статистика классов (из лога выполнения, ScanNet20):
Classes found: 15 wall: 270808 voxels (51.5%) floor: 186966 voxels (35.6%) cabinet: 866 voxels (0.2%) bed: 628 voxels (0.1%) chair: 24928 voxels (4.7%) sofa: 1014 voxels (0.2%) table: 12394 voxels (2.4%) door: 1587 voxels (0.3%) window: 9358 voxels (1.8%) bookshelf: 2847 voxels (0.5%) picture: 295 voxels (0.1%) counter: 184 voxels (0.0%) desk: 1200 voxels (0.2%) curtain: 8477 voxels (1.6%) otherfurniture: 4079 voxels (0.8%)
KPConv, как представитель классического point-based подхода, показал смешанные, но интересные результаты.
-
Ключевые метрики (Voxel 3 см, Grid Downsampling, из лога выполнения):
- Время инференса: 0.96 секунды (с разбитием на чанки)
- Количество точек после даунсэмплинга: 508,006
- Доминирующий класс:
clutter(42.3%), что численно подтверждает визуальные наблюдения о склонности модели к "упрощению" сцены. Другие значимые классы:wall(17.8%),floor(14.1%).
-
Общие наблюдения: Модель продемонстрировала уверенное распознавание объектов с простой геометрией (стулья, столы) и хорошо справилась с большими плоскими поверхностями (пол, стены). Однако, как и другие модели, она столкнулась с доменным разрывом, что проявилось в тенденции классифицировать незнакомые или сложные объекты как
otherfurniture. -
Сильные стороны:
- Уверенное распознавание мебели для сидения.
- Подобно MinkowskiNet, модель заметила рельеф на стенах, классифицировав его как
doorилиotherfurniture.
-
Слабые стороны:
- Пол сегментирован корректно на ~70%.
- Наблюдается сильная тенденция к "упрощению" сцены: большинство объектов, включая части стен, классифицируются как
otherfurniture. Это может свидетельствовать о существенном доменном разрыве между обучающими данными и тестовой сценой. - Изменение параметров даунсэмплинга (размер вокселя, метод) практически не повлияло на итоговый результат, который оставался стабильно невысоким.
- Время инференса: 0.96 секунды при разбивке на чанки на GPU; 39.64 секунды на CPU при нехватке видеопамяти.
- Полная статистика классов (из лога выполнения, S3DIS13):
Classes found: 11 ceiling: 8657 voxels (1.7%) floor: 71818 voxels (14.1%) wall: 90472 voxels (17.8%) window: 3 voxels (0.0%) door: 15895 voxels (3.1%) chair: 38109 voxels (7.5%) table: 44414 voxels (8.7%) bookcase: 23485 voxels (4.6%) sofa: 167 voxels (0.0%) board: 18 voxels (0.0%) clutter: 214968 voxels (42.3%)





