Оценка 3D-позы

Оце́нка 3D-по́зы — процесс определения пространственной ориентации и положения объекта относительно заданной пользователем опорной позы, который осуществляется на основе изображения или 3D-скана. Эта задача возникает в компьютерном зрении и робототехнике, где определённая поза или преобразование объекта могут использоваться для совмещения с моделями автоматизированного проектирования (CAD), идентификации, захвата или манипуляций с объектом.

Изображения, по которым определяется поза объекта, могут быть представлены как одиночным кадром, так и стереопарой либо последовательностью изображений, где, как правило, камера движется с известной скоростью. Сами объекты могут быть произвольной природы, в том числе живые существа или части тела (например, голова или руки). Методы определения позы, однако, как правило, ориентированы на определённый класс объектов и не всегда применимы к другим типам объектов.

Из некалиброванной 2D-камеры

Определить трёхмерное положение (вращение и смещение) объекта по одному 2D-фотоснимку возможно, если известна его примерная 3D-модель и найдены соответствующие точки на изображении. Одним из популярных методов, предложенных в 1995 году, является POSIT (Pose from Orthography and Scaling with ITerations)[1], который напрямую оценивает 3D-положение объекта по точкам 3D-модели и 2D-изображения и итеративно корректирует ошибки до получения удовлетворительной оценки по одному снимку[2]. Большинство реализаций POSIT работают только с некопланарными точками (то есть не применимы к плоским объектам и поверхностям)[3]. Для решения этой проблемы была создана специальная версия — планарный POSIT (Planar POSIT), которая корректно обрабатывает такие конфигурации[4]. Другой модификацией является SoftPOSIT, разработанная для случаев, когда соответствия между точками 3D-модели и 2D-изображения неизвестны; она объединяет в одном цикле алгоритм POSIT и технику «Softassign» для установления этих соответствий[5]. Также были предложены варианты POSIT, оптимизированные для работы с некалиброванными камерами, что важно для таких задач, как навигация мобильных роботов[6].

Несмотря на то, что POSIT не требует начальной оценки позы, что является его преимуществом, итеративные методы на основе нелинейной оптимизации могут демонстрировать более высокую точность при наличии хорошего начального приближения[4]. С развитием глубокого обучения после 2010-х годов доминирующими стали подходы на основе свёрточных нейронных сетей и трансформеров, которые способны оценивать 3D-позу напрямую из изображения без необходимости предварительного задания соответствий между точками и, как правило, превосходят классические алгоритмы по точности и устойчивости[7][8]. Тем не менее, POSIT и его вариации остаются актуальными для задач, где требуется высокая скорость работы при ограниченных вычислительных ресурсах[4].

Другой подход состоит в совмещении трёхмерной CAD-модели с фотографией известного объекта путём оптимизации некоторой метрики расстояния по параметрам позы[9][10]. Метрика сравнивает изображение объекта и проекцию CAD-модели в предполагаемой позе. Применяется либо перспективная, либо ортогональная проекция в зависимости от используемого представления позы. Такой подход удобен в задачах, где имеется CAD-модель конкретного объекта или класса объектов.

Из калиброванной 2D-камеры

Если известна не только проекция, но и параметры внутренней калибровки камеры относительно системы координат, можно определить позу объекта, дающую его положение в собственной системе координат[11]. Это реализуется следующим образом.

Восстановление 3D по 2D

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

Псевдокод

Основой алгоритма оценки позы является итеративный поиск соответствия между признаками 2D-изображения и точками на 3D-контуре модели:

(a) Построить проекционные лучи из 2D-точек
(b) Для каждого луча определить ближайшую точку на 3D-контуре объекта
(c) Вычислить позу объекта по найденным соответствиям
(d) Перейти к (b)

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

(a) Построить проекционные лучи из 2D-точек
(b) Для каждого луча R:
     (c) Для каждого 3D-контурa:
          (c1) Определить ближайшую точку P1 контура к лучу R
          (c2) если (n == 1), выбрать P1 как соответствующую точку
          (c3) иначе сравнить P1 с уже выбранной P:
                   если dist(P1, R) меньше, чем dist(P, R), принять P1 как новую
(d) Использовать пары (P, R) как множество соответствий
(e) Оценить позу по этому множеству
(f) Трансформировать контуры, перейти к (b)

Оценка позы по шаблонам

Классические подходы к оценке позы основаны на сопоставлении с шаблонами. Один из методов заключается в хранении базы данных изображений объекта в различных положениях и сравнении с ней входного изображения для поиска наиболее похожего кадра[12]. Другой подход состоял в итеративном совмещении трёхмерной CAD-модели объекта с его 2D-изображением путём оптимизации параметров позы. Точность таких систем была ограничена полнотой базы данных и их чувствительностью к условиям съёмки, таким как освещение, фон и частичные перекрытия[13].

Ключевым поворотным моментом, ознаменовавшим смену парадигмы, стала публикация в 2014 году работы «DeepPose», в которой для этой задачи впервые был успешно применён метод глубокого обучения[13]. Вместо прямого сопоставления с шаблонами, свёрточные нейронные сети позволили автоматически извлекать признаки из изображений и напрямую предсказывать координаты ключевых точек тела[14]. Этот переход к обучаемым моделям позволил значительно повысить точность и устойчивость оценки позы и привёл к доминированию подходов на основе глубокого обучения в данной области[15].

Методы на основе глубокого обучения

С середины 2010-х годов подходы, основанные на глубоком обучении, стали доминирующей парадигмой в оценке 3D-позы, вытеснив классические методы сопоставления с шаблонами. Поворотным моментом считается публикация работы «DeepPose» в 2014 году, в которой для этой задачи впервые были успешно применены свёрточные нейронные сети (CNN). Нейросетевые модели способны автоматически извлекать сложные признаки непосредственно из изображений, что позволило значительно повысить точность и устойчивость к сложным условиям, таким как плохое освещение и частичные перекрытия.

Современные методы можно разделить на несколько основных категорий:

Прямая регрессия позы

Ранние подходы, такие как PoseNet и PoseCNN, использовали нейронные сети для прямого предсказания параметров 6D-позы (вектора трансляции и кватерниона вращения) из входного изображения[16]. Несмотря на простоту, эти методы часто уступали в точности более сложным, опосредованным подходам.

Опосредованные методы (на основе соответствий)

Этот подход стал доминирующим и заключается в предсказании нейросетью промежуточных представлений, которые затем используются для вычисления итоговой позы. Ключевые реализации:

  • 2D-to-3D Lifting: Наиболее распространённый метод для оценки позы человека. Процесс состоит из двух этапов: сначала одна нейросеть определяет 2D-координаты ключевых точек (суставов) на плоском изображении, а затем вторая сеть «поднимает» (lifting) эти 2D-точки в трёхмерное пространство, восстанавливая их глубину[17].
  • Предсказание 2D-проекций: Для оценки позы твёрдых объектов сети, такие как BB8, обучаются предсказывать 2D-проекции вершин ограничивающего 3D-куба объекта. Зная эти 2D-3D соответствия, поза вычисляется с помощью классических алгоритмов, например PnP[18].
  • Плотные соответствия: Более продвинутые методы, например DenseFusion, работающие с данными с RGB-D камер, устанавливают плотные соответствия между каждым пикселем изображения и поверхностью 3D-модели. Это повышает устойчивость к частичным перекрытиям и объектам без выраженной текстуры[19].

Современные архитектуры и тенденции

В последние годы на смену традиционным CNN приходят более сложные архитектуры. Трансформеры, изначально разработанные для обработки текстов, демонстрируют высокую точность в задачах компьютерного зрения, включая оценку позы[20]. Кроме того, современные подходы, такие как RAG-6DPose, используют CAD-модель объекта не просто для генерации обучающих данных, а как активную базу знаний, из которой извлекаются признаки в процессе оценки позы[21].

Оценка позы нескольких людей

Для изображений с несколькими людьми применяются два основных подхода[22]:

  • Сверху-вниз (Top-down): Сначала детектор объектов находит всех людей на изображении, а затем для каждого из них индивидуально определяется поза.
  • Снизу-вверх (Bottom-up): Алгоритм сначала находит все части тела (руки, ноги, головы) на изображении, а затем группирует их, чтобы сформировать скелеты отдельных людей.

Программное обеспечение

  • posest — библиотека на C/C++ для оценки 6-степенной позы на основе сопоставления 2D- и 3D-точек (задача PnP)[23]. Основана на классических итерационных методах оптимизации. На сегодняшний день считается устаревшей и представляет в основном академический интерес, так как современные подходы к оценке позы базируются на глубоком обучении и демонстрируют более высокую точность и устойчивость[24][25].
  • diffgeom2pose — реализация алгоритма P2Pt для оценки позы, использующего две пары соответствий между 3D-точками с касательными и их 2D-проекциями. Существуют версии для MATLAB/Octave (исследовательская) и готовая к промышленному использованию версия на C++[26]. Алгоритм находится в процессе интеграции в популярные SfM-библиотеки, такие как OpenMVG, но на 2024 год его применение остаётся преимущественно в сфере научных исследований.
  • MINUS (MInimial problem NUmerical continuation Solver) — заголовочная библиотека на C++ для решения минимальных задач в компьютерном зрении, в частности для оценки относительной позы по трём видам. Использует метод гомотопической непрерывности для численного решения систем полиномиальных уравнений. Проект является завершённым решением, соответствующим научной работе 2020 года, но не находится в активной разработке[27].
  • Nvidia FoundationPose — представленная в 2024 году базовая модель глубокого обучения для 6D-оценки позы и отслеживания объектов[28]. Ключевой особенностью является способность определять позу ранее не виданных объектов без дополнительного обучения (zero-shot), используя только их CAD-модель[29]. Модель интегрирована в платформы Nvidia, такие как Isaac ROS и фреймворк TAO, и доступна для коммерческого использования через каталог Nvidia NGC[30][31].

Примечания

Литература

Категории