Оценка 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].
Примечания
- ↑ Javier Barandiaran. POSIT tutorial (англ.). OpenCV (28 декабря 2017). Дата обращения: 2 ноября 2025. Архивировано 5 августа 2017 года.
- ↑ Daniel F. Dementhon; Larry S. Davis (1995). “Model-based object pose in 25 lines of code”. International Journal of Computer Vision [англ.]. 15 (1—2): 123—141. DOI:10.1007/BF01450852. Дата обращения 2025-11-02.
- ↑ Javier Barandiaran. POSIT tutorial with OpenCV and OpenGL (англ.). Дата обращения: 2 ноября 2025. Архивировано 20 июня 2010 года.
- ↑ 1 2 3 Daniel Grest; Volker Krüger (2009). “A Comparison of a new Planar Pose Algorithm with other Iterative and Non-iterative Algorithms” (PDF). Proc. of the 16th Scandinavian Conference on Image Analysis (SCIA) [англ.]. Дата обращения 2025-11-02.
- ↑ Daniel DeMenthon; Larry S. Davis; Helder Araujo; Gerard Medioni (2001). SoftPOSIT: Simultaneous Pose and Correspondence Determination (PDF) (Technical report) [англ.]. University of Maryland. Дата обращения 2025-11-02.
- ↑ J. L. L. Lázaro; C. G. L. Cañestro; J. M. M. Montiel (2007). “Optimization of the POSIT algorithm for indoor autonomous navigation”. 2007 IEEE International Conference on Robotics and Automation [англ.]. DOI:10.1109/ROBOT.2007.363989. Дата обращения 2025-11-02.
- ↑ А. А. Дорофеев; Д. П. Николаев (2021). “Оценка 3D-позы человека на основе 2D-ключевых точек”. Информационные процессы. 21 (1): 1—24. Дата обращения 2025-11-02.
- ↑ Ce Zheng; et al. (2022). “Recent Advances in 3D Human Pose Estimation: From Optimization to Implementation and Beyond”. ACM Computing Surveys [англ.]. 55 (7). DOI:10.1145/3534578. Дата обращения 2025-11-02.
- ↑ Srimal Jayawardena, Marcus Hutter, Nathan Brewer. A Novel Illumination-Invariant Loss for Monocular 3D Pose Estimation // 2011 International Conference on Digital Image Computing: Techniques and Applications : [англ.]. — 2011. — P. 37–44. — ISBN 978-1-4577-2006-2. — doi:10.1109/DICTA.2011.15.
- ↑ Srimal Jayawardena, Di Yang, Marcus Hutter. 3D Model Assisted Image Segmentation // 2011 International Conference on Digital Image Computing: Techniques and Applications : [англ.]. — 2011. — P. 51–58. — ISBN 978-1-4577-2006-2. — doi:10.1109/DICTA.2011.17.
- ↑ Bodo Rosenhahn. Foundations about 2D-3D Pose Estimation (англ.). CV Online. Дата обращения: 17 июня 2024. Архивировано 20 июня 2024 года.
- ↑ Vassilis Athitsos. Estimating 3D Hand Pose from a Cluttered Image (англ.). Boston University Computer Science Tech. (1 апреля 2003). Дата обращения: 2 ноября 2025. Архивировано 31 июля 2019 года.
- ↑ 1 2 Секреты позы и лица: как работают Face Keypoint Detection и Pose Estimation. Sysblok.ru. Дата обращения: 2 ноября 2025. Архивировано 12 июля 2025 года.
- ↑ Определение положения человека. neerc.ifmo.ru. Дата обращения: 2 ноября 2025. Архивировано 24 сентября 2022 года.
- ↑ Обзор методов определения позы человека по 2D-изображению (pdf). ИПУ РАН. Дата обращения: 2 ноября 2025.
- ↑ “Recent Advances in 3D Human Pose Estimation: A Comprehensive Survey”. Applied Sciences [англ.]. MDPI. 2024-01-23. Дата обращения 2025-11-02.
- ↑ Open-Source 3D Human Pose Estimation в PyTorch. Neurohive (14 августа 2019). Дата обращения: 2 ноября 2025. Архивировано 26 апреля 2025 года.
- ↑ “A Review of 2D and 3D Human Pose Estimation Using Deep Learning”. Applied Sciences [англ.]. MDPI. 2020-12-28. Дата обращения 2025-11-02.
- ↑ “A Survey on 6D Object Pose Estimation from RGB-D Images”. Applied Sciences [англ.]. MDPI. 2025-01-27. Дата обращения 2025-11-02.
- ↑ Оценка позы. Neurohive. Дата обращения: 2 ноября 2025. Архивировано 14 июля 2025 года.
- ↑ Gu Wang et al. RAG-6DPose: A Retrieval-Augmented Generative Framework for 6D Object Pose Estimation (англ.). arXiv (27 июня 2024). Дата обращения: 2 ноября 2025. Архивировано 19 августа 2025 года.
- ↑ Как мы распознавали позы людей на видео. Habr (19 сентября 2022). Дата обращения: 2 ноября 2025.
- ↑ posest: A C/C++ library for model-based 3D object pose estimation (англ.). ics.forth.gr. Дата обращения: 2 ноября 2025.
- ↑ NVIDIA представила новый метод оценки позы 6DoF. Neurohive. Дата обращения: 2 ноября 2025. Архивировано 12 июня 2025 года.
- ↑ Awesome6DPoseEstimation (англ.). GitHub. Дата обращения: 2 ноября 2025. Архивировано 24 июня 2024 года.
- ↑ diffgeom2pose (англ.). GitHub. Дата обращения: 2 ноября 2025. Архивировано 21 июня 2025 года.
- ↑ MINUS (англ.). GitHub. Дата обращения: 2 ноября 2025. Архивировано 15 июля 2025 года.
- ↑ FoundationPose: Unified 6D Pose Estimation and Tracking of Novel Objects (англ.). research.nvidia.com (июнь 2024). Дата обращения: 2 ноября 2025. Архивировано 24 марта 2025 года.
- ↑ FoundationPose (англ.). NVIDIA Isaac ROS. Дата обращения: 2 ноября 2025. Архивировано 1 октября 2025 года.
- ↑ FoundationPose (англ.). NVIDIA NGC. Дата обращения: 2 ноября 2025. Архивировано 8 сентября 2025 года.
- ↑ New Foundational Models and Training Capabilities With NVIDIA TAO 5.5 (англ.). NVIDIA Developer Blog (28 августа 2024). Дата обращения: 2 ноября 2025. Архивировано 22 августа 2025 года.
Литература
- Rosenhahn, B. Foundations about 2D-3D Pose Estimation.
- Rosenhahn, B. «Pose Estimation of 3D Free-form Contours in Conformal Geometry.»
- Athitsos, V. «Estimating 3D Hand Pose from a Cluttered Image.»