Как узнать вещь на ощупь, если точки идут вразнобой
В кладовке театра темно, фонарик сел. Я нащупал реквизит с мелкими бугорками и понял, что времени нет. Пальцы бегают как попало, и каждый бугорок дает крошечную подсказку. Я запоминаю только самые яркие подсказки. Так же устроены россыпи 3D-точек: порядок не важен, решают сильные сигналы.
Раньше такие россыпи точек многих пугали. Их старались загнать в аккуратные кубики или сделать пару плоских картинок, будто меня заставили бы перерисовать реквизит на бумаге. Пока рисуешь, теряешь мелочи, тратишь силы и уже смотришь на вещь не так, как она пришла в руки.
PointNet пошел напрямую. Он смотрит на каждую точку одинаковым способом, как я трогаю каждый бугорок одним и тем же движением пальца. Из каждой точки выходит короткий набор признаков. А потом есть сборка, которой все равно на порядок: по каждому признаку берется самое сильное значение, как будто я оставляю лучший намек на край, угол или плоскость.
Но реквизит можно держать под разным углом. Поэтому перед решением PointNet старается «повернуть» форму к привычному виду, как я кручу предмет в ладонях, чтобы понять, что это. И есть ограничение, чтобы этот поворот не превратился в сжатие или растяжение, иначе разные вещи стали бы слишком похожи.
У сборки есть странный эффект. Побеждают только те точки, которые дали максимум хотя бы по одному признаку. Получается маленький «решающий набор», как несколько касаний, которые меня убедили. Убери много других точек, и ответ часто не меняется. Добавь шумные точки, которые не сильнее победителей, и тоже тишина.
Когда общий портрет вещи готов, можно делать два дела. Первое: назвать предмет целиком, как я бы сказал «это стул» или «это кружка». Второе: разметить части. Общая догадка возвращается к каждой точке вместе с ее местной подсказкой, и тогда можно сказать, где ручка, где сиденье, где ножка, или в комнате где пол, где стены, где мебель.
Я стоял в темноте и вдруг понял, что мне не нужна идеальная схема на клетчатой бумаге. Достаточно нескольких сильных касаний, и вещь узнается. С 3D-точками та же логика: не нужно раскладывать их по строгим ячейкам и не нужно «правильного» порядка. Это помогает держаться увереннее, когда часть точек пропала или в кадр попал мусор.