Это архитектура подхода. Мы проходим каждый модуль один за другим.

  1. Трансформаторный блок: Есть 2 типа:

Ванильная версия:

Пространство разделено на кубические воксели. Точки относятся к точкам в своем вокселе, а не ко всем точкам. Мультиголовное самообслуживание выполняется в каждом окне независимо. Пусть kt — количество точек в одном окне, количество головок — Nh, а Nd — размер каждой головки. Тогда dim выходного сигнала слоя трансформатора равен kt X (Nh X Nd).

Таким образом, если есть 3 точки с затемнением 4 до внимания позже. Затем после многоголового внимания, где количество головок равно 10. Тусклый свет будет 3 X (10 X 4), т.е. 3 X 40. Каждая точка будет иметь concat head dim 4 для каждой головки, таким образом, 40.

Окна (воксели) могут работать параллельно, что очень быстро вычисляет.

Стратифицированная версия:

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

Мы можем увеличить размер окна, но это повлияет на вычислительную мощность. Таким образом, мы используем стратифицированную версию, в которой ПК сначала понижается с использованием FPS. А теперь увеличьте размер окна и добавьте больше места, но все же меньше точек. Пусть Kd — ключи из плотного окна для точки запроса t, а Ks — ключи разреженных ключей для большего окна для той же точки запроса.

Затем объедините оба ключа и используйте это для привлечения внимания.

  1. Встраивание точек первого слоя

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

Поэтому они хотят агрегировать характеристики местного соседства для каждой точки. Они попробовали MaX и Avg Pooling, но KPConv дал лучшие результаты. Это дает значительные улучшения.

  1. Контекстное кодирование относительного положения

«Сквозная модель преобразования для обнаружения 3D-объектов» утверждает, что кодирование положения не нужно, поскольку координаты xyz уже используются в качестве входных признаков, но эта подробная информация теряется в функциях высокого уровня, когда мы углубляемся . Мы используем схему кодирования положения из «Переосмысление и улучшение кодирования относительного положения для Vision Transformer»

Итак, мы находим относительные координаты xyz между запросами и ключами.

Это сука, не могу понять. Попробую позже.

  1. Понижение и повышение частоты

Вот изображение:

Сначала позиции всех точек попадают в слой выборки и группировки, он делает FPS и находит все самые дальние точки Ns+1. Затем для этих точек находит idx_group(?), чтобы получить вывод (Ns+1, k) для этих точек. Затем они выполняют максимальное объединение, чтобы объединить все точки в один индекс (?) Таким образом, в конце у нас есть максимальный объединенный вектор для каждого центроида, который каким-то образом содержит локальную информацию, и количество точек было уменьшено. в 4 раза. Также передается информация о положении всех центроидных точек.

Для повышения частоты дискретизации тоже что-то происходит. (?)