Трекинг рук для ювелирной AR-примерки: состояние технологий и прикладной пайплайн
Виртуальная примерка украшений на телефоне решает для интернет-магазина две разные задачи. Первая — показать, как кольцо, браслет или часы смотрятся на руке: достаточно, чтобы картинка была убедительной и стабильно держалась на пальце или запястье. Вторая — подобрать размер: тут нужна не картинка, а измерение — в настоящих миллиметрах.
Обе упираются в одно — в трекинг руки по кадру камеры. От того, насколько точно и устойчиво мы знаем положение, ориентацию и размер пальца или запястья, зависит и реализм примерки, и сама возможность угадать размер.
Бюджет точности
Полезно сразу зафиксировать планку — она жёстче, чем в большинстве задач трекинга рук. В играх и жестовом управлении хватает «правдоподобного» скелета; здесь — нет.
- Визуальная примерка. Украшение сидит на руке вплотную; смещение в 1–2 мм или дрожание уже читаются как «наклеено».
- Подбор размера. В США соседние размеры кольца различаются на 0.032″ ≈ 0.81 мм по внутреннему диаметру, то есть полразмера — это около 0.4 мм (Ring size, Wikipedia). Чтобы попасть в размер, ошибка оценки диаметра пальца должна держаться в районе десятых миллиметра.
Разница в два порядка между «показать» и «измерить» — сквозная тема дальше: почти всё, что просто для первой задачи, становится тяжёлым для второй.
Рамки очертим сразу: речь про украшения на кисти — кольца, браслеты, часы. Серьги и подвески — это другой трекинг (лицо и шея), и здесь мы их не касаемся.
Что уже умеют: обзор технологий
Нейросети, которые находят точки руки по фото
Базовый рабочий инструмент — нейросети, которые по одному обычному фото с камеры находят на руке набор ключевых точек (кончики и суставы пальцев, запястье). Самый известный пример — MediaPipe Hands от Google (Zhang et al., 2020): сеть сначала находит ладонь, потом отмечает на ней 21 точку, и всё это успевает считаться в реальном времени прямо на телефоне (описание Google). Точки она ставит на плоской картинке и лишь грубо прикидывает, какая ближе к камере, какая дальше. Этого хватает, чтобы «прицепить» украшение к руке, но реального размера пальца такая сеть не знает.
Модели руки целиком
Следующий уровень — не отдельные точки, а модель всей кисти: как она устроена и как гнётся. Здесь стандарт — MANO (Romero, Tzionas, Black, 2017): её собрали, отсканировав около тысячи реальных рук, и она по отдельности описывает позу (как согнуты пальцы) и форму (толщину, пропорции). Современные сети (например, HaMeR, 2024) умеют подобрать такую модель прямо по одному фото. Нам важно одно: модель знает форму — а значит, и толщину пальца, без которой про размер говорить нельзя.
Датчики глубины
Есть камеры, которые меряют расстояние до поверхности — то есть сразу знают размер в реальных сантиметрах. На телефонах это LiDAR — лазерный датчик в дорогих моделях. Он добивает примерно на 5 метров и видит сцену довольно грубо (проверка iPhone 12 Pro, 2021): на общую форму комнаты хватает, а на тонкие детали размером с палец — уже нет. И, как разберём ниже, блестящие поверхности он переносит плохо.
Профессиональные системы захвата движения
В кино и науке руку снимают системами с маркерами (Vicon, OptiTrack) или специальными перчатками — точность до долей миллиметра. Но это студия, калибровка и спецоборудование; для примерки «по телефону» не годится. Держим в уме как эталон точности.
Готовые решения для магазинов
Рынок уже есть: Banuba, ManoMotion, ViaTryon, mirrAR и другие уже предлагают примерку колец, браслетов и часов по камере телефона. Почти все решают задачу «показать». А вот к обещаниям точного подбора размера относитесь как к заявленным: по обычной камере без опоры на реальный размер это не работает в принципе — почему, разберём в «Проблемах».
| Подход | Знает реальный размер | Точность | Перекрытия | Где работает |
|---|---|---|---|---|
| Точки по фото (MediaPipe) | нет | средняя | теряет точки | на любом телефоне |
| Модель руки (MANO / HaMeR) | примерно (по форме) | выше | устойчивее | телефон помощнее |
| Датчик глубины (LiDAR) | да | грубо на мелочах | частично | только дорогие модели |
| Захват движения (Vicon) | да | доли миллиметра | устойчиво | только студия |
| Готовые решения | обычно нет | «на глаз — ок» | по-разному | на любом телефоне |
Почему ювелирка — это сложно
Коротко: просто «найти руку» давно умеют, а вот ювелирная примерка предъявляет требования, под которые обычные сети не заточены.
Рука закрывает сама себя
Пальцы заходят друг на друга, кисть при повороте прячет часть себя, точки уходят за край кадра. В этих местах сеть либо теряет точки, либо пытается их угадать — и ошибается ровно там, где нам важнее всего: у основания пальца под кольцо, на запястье под браслет.
По одному фото не понять реальный размер
С одной картинки нельзя сказать, какого размера объект на самом деле: большая рука вблизи и маленькая чуть дальше выглядят одинаково. Чтобы просто показать украшение, это терпимо — подгоняем на глаз. А для подбора размера — нет: доли миллиметра неоткуда взять, если в кадре нет ничего с известным размером.
Должно быть быстро и без дрожания
Ко всему добавляется реальное время: на телефоне картинку нужно обновлять несколько десятков раз в секунду и держать стабильно. Точность, реальный размер и устойчивость к перекрытиям надо получить дёшево и быстро — иначе украшение «плавает» по руке.
Примерка живёт в браузере
И предел, который не про математику, — дистрибуция. Ради одного кольца никто не ставит приложение магазина: примерка должна открываться по ссылке, прямо в браузере на странице товара. А браузер режет возможности — доступа к лазерному датчику глубины там нет, и вычислительный бюджет меньше, чем у родного приложения. По сути это ещё один голос за лёгкие сети и дешёвые приёмы отрисовки: весь конвейер ниже собран с оглядкой на это.
Как собрать рабочую цепочку
Сложим из этого работающую схему. Идея простая: не разбирать всю руку «на всякий случай», а на каждом шаге делать только то, что нужно под конкретное украшение, и достраивать остальное.
Цепочка примерки: от кадра с камеры до украшения на руке.
Разберём по шагам.
Только нужные точки. Под каждый тип украшения — свой небольшой набор точек: для кольца хватает окрестности одного пальца (примерно 6 точек), для браслета или часов — запястья и тыльной стороны кисти (около 11). Саму сеть при этом делят на общую часть, которая «понимает» картинку, и короткую надстройку под конкретный тип украшения — так новый тип добавляется легко. Разбирать всю кисть из 21 точки ради кольца незачем. Выигрыш тут не в скорости (её определяет общая, тяжёлая часть сети, а не число точек на выходе), а в простоте: сети не нужно угадывать закрытые суставы, которые здесь не нужны и где она как раз чаще ошибается. Заодно для каждой точки полезно знать, насколько сеть в ней уверена, — это пригодится при сглаживании.
Привязка к реальному размеру. Где есть лазерный датчик глубины — берём размер с него; где нет — ориентируемся на знакомый предмет в кадре или на типичные пропорции руки. Это тот шаг, который отличает «показать» от «измерить».
Достраиваем кисть по модели. Дальше по найденным точкам подгоняем модель руки (ту самую MANO) — с учётом того, как реально гнутся суставы и как кисть двигалась только что. Модель убирает неоднозначность — из множества возможных положений в пространстве выбирает правдоподобное — и заодно даёт форму, то есть толщину пальца под размер.
Сглаживание. Точки и итоговое положение прогоняем через сглаживающий фильтр (известный «1€-фильтр», Casiez et al., 2012): на медленных движениях он убирает дрожание, на быстрых — не даёт картинке отставать. Положение дополнительно стабилизируем по датчикам движения телефона — гироскопу и акселерометру. И всё с учётом перекрытий: если точка пропала, она не «прыгает», а плавно продолжает по прогнозу, пока не появится снова. По опыту именно этот шаг определяет качество примерки: дрожащее кольцо выдаёт подделку быстрее, чем неточное.
Отрисовка. Последний шаг — нарисовать украшение в найденном положении так, чтобы оно выглядело настоящим. Это отдельная история, и ей — следующий раздел.
Отрисовка: как заставить металл блестеть
Металл и камни живут отражением. Если виртуальное кольцо ничего не отражает, оно выглядит наклейкой — и тут никакая точность не спасёт: навели-то по голой руке, а весь блеск держится на отрисовке. Посчитать настоящие отражения окружения «по-честному» на телефоне слишком дорого.
Хитрость — взять под отражения две картинки, которые и так уже есть:
Отражения берём из двух уже готовых картинок — без дорогих вычислений.
- кадр с камеры — это и есть готовая «карта окружения»: кольцо отражает реальную комнату вокруг руки, с правильным цветом и светом, и ничего заранее готовить не надо;
- предыдущий нарисованный кадр — чтобы в кольце отражалось и то, что мы уже нарисовали (соседнее украшение, само кольцо). Он отстаёт на один кадр, но глаз этого не замечает.
Обе картинки уменьшаем (и заодно делаем несколько копий с разным размытием) и накладываем на металл: чем глаже металл, тем чётче отражение; чем матовее — тем размытее. Плюс простое правило физики: на скользящих углах отражение сильнее (это называют эффектом Френеля) — за счёт него по краю кольца пробегает блик.
Подвох у приёма один: отражается только то, что попало в кадр. Но для маленького изогнутого кольца глаз это прощает. На практике приём работает: я использовал его для воды в дополненной реальности и других эффектов — выглядит убедительно, а стоит копейки.
Вывод
Чтож, сведём к практике:
- Показать — да. Визуальная примерка колец и часов работает на обычной камере телефона — с поправкой на перекрытия, блики и освещение, которые закрываются приёмами из этого разбора.
- Измерить — по обычной камере нет. Для размера нужна опора с известным размером: лазерный датчик глубины в дорогих телефонах или предмет-эталон в кадре. Без опоры примерка остаётся «на глаз» — что бы ни обещал маркетинг готовых решений.
- Граница проходит ровно по нашим проблемам: точный размер с обычной камеры, устойчивость к перекрытиям и убедительный блеск без дорогих вычислений. Это и есть зоны, где окупаются исследование и прототип.
Под бюджет это раскладывается так: обычная камера — визуальная примерка для масс-маркета, и она же — единственный вариант для браузера, где живёт примерка интернет-магазина; дорогие телефоны с лазером — примерка плюс грубое измерение, но только в родном приложении; студийная съёмка — эталон для калибровки и обучающих данных. Конвейер из «только нужных точек», модели руки и дешёвых отражений из кадра — разумная середина: тянет визуальную задачу на любом телефоне и оставляет понятный путь апгрейда к измерению.
Источники
- MediaPipe Hands — Zhang et al., 2020; разбор Google
- MANO — Romero, Tzionas, Black, SIGGRAPH Asia 2017
- HaMeR — Pavlakos et al., CVPR 2024
- 1€-фильтр — Casiez, Roussel, Vogel, CHI 2012
- iPhone LiDAR — Scientific Reports, 2021
- Размер кольца — Ring size, Wikipedia