Syntidata
Главная / Блог / Компьютерное зрение / Оценка позы и ключевые точки

Оценка позы и ключевые точки

Компьютерное зрение

Оценка позы определяет положение и ориентацию объекта или человека по набору ключевых точек. Разбираем постановку задачи, подходы, метрики и то, откуда брать данные для обучения.

Оценка позы и ключевые точки

Что такое ключевые точки и зачем они нужны

Рамка вокруг объекта говорит, где он находится, но не говорит, как он повёрнут и в каком состоянии. Ключевые точки (keypoints) решают именно эту задачу: это набор заранее определённых характерных точек объекта, координаты которых модель предсказывает на изображении.

Для человека это суставы: плечи, локти, запястья, бёдра, колени, лодыжки, иногда ещё нос и глаза. Для промышленной детали это могут быть углы корпуса, центры отверстий, места крепления. Для автомобиля — центры колёс, углы фар, края номерного знака. Набор и порядок точек называют «скелетом» или схемой разметки, и он задаётся один раз для класса объекта.

Типичные применения:

  • контроль эргономики и безопасности на производстве: положение рук относительно опасной зоны, поза при подъёме груза;
  • спорт и реабилитация: анализ техники движений, подсчёт повторений упражнений;
  • робототехника: определение, как захватить деталь, под каким углом она лежит;
  • ритейл: анализ поведения покупателей у полки без идентификации личности;
  • дополненная реальность и анимация: перенос движений на виртуального персонажа.

2D, 2.5D и 3D: три постановки задачи

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

2D-поза

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

Поза с глубиной

К каждой точке добавляется значение глубины: относительное или абсолютное расстояние от камеры. Такую постановку называют 2.5D. Она нужна, когда важно различать, какая рука ближе к камере, или когда объект наклонён. Источником эталонной глубины в реальных данных служат depth-камеры или лидары, а в синтетических — карты глубины, которые рендер выдаёт бесплатно, подробнее об этом в разделе про 3D-моделирование и визуализацию.

Полная 6D-поза

Для жёстких объектов, например деталей, инструментов, коробок, часто нужна полная поза: три координаты положения и три угла ориентации. Её можно вычислить из набора 2D-точек, если известны 3D-модель объекта и параметры камеры, с помощью решения задачи PnP. Поэтому ключевые точки жёсткого объекта часто выбирают как вершины описывающего параллелепипеда или как характерные точки CAD-модели.

Подходы к решению

Современные методы делятся на два больших семейства, и выбор между ними определяет скорость и качество.

Сверху вниз (top-down)

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

Снизу вверх (bottom-up)

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

Единая модель с рамкой и точками

В последние годы популярны детекторы, которые предсказывают рамку и ключевые точки одновременно за один проход. Они удобны для встраиваемых систем, поскольку не требуют двух сетей. Для ряда задач мы используем именно такие модели, обученные на собственных данных; если интересно, как это выглядит на практике для детекции, посмотрите разбор обучения YOLO на собственном датасете.

Как оценивают качество

Для рамок есть IoU, а для точек нужен свой аналог. Самая распространённая метрика называется OKS (Object Keypoint Similarity). Она считает расстояние между предсказанной и эталонной точкой, нормирует его на размер объекта и на «допустимый разброс» для каждого типа точки. Дело в том, что ошибка в 5 пикселей на кисти руки и на бедре воспринимается по-разному: кисть сложнее определить точно, поэтому допуск для неё шире.

Дальше OKS играет ту же роль, что и IoU в детекции: задаётся порог, предсказание считается верным, если OKS выше порога, и по этому считаются AP и mAP. Подробнее о том, как читать такие метрики, мы писали в статье Метрики детекции: mAP, IoU, precision и recall без путаницы.

Для прикладных задач часто полезнее более простые метрики:

  • средняя ошибка в пикселях или в процентах от размера объекта;
  • PCK (Percentage of Correct Keypoints): доля точек, попавших в окрестность эталона заданного радиуса;
  • ошибка угла для 6D-позы в градусах и ошибка положения в миллиметрах.

Заказчику, как правило, нужны именно они: «угол определяется с ошибкой не более трёх градусов» понятнее, чем «OKS-mAP 0.71».

Разметка ключевых точек: где всё ломается

Если разметка рамок уже непростая работа, то разметка скелетов сложнее в разы. Одно изображение с человеком содержит семнадцать и более точек, каждую нужно поставить аккуратно и указать её видимость.

Видимость точек

Обычно используют три состояния: точка видна, точка скрыта (но положение можно предположить), точки нет в кадре. Если разметчики по-разному трактуют скрытые точки, модель получит противоречивые сигналы и начнёт «дрожать» на перекрытых участках. Правило трактовки должно быть прописано в инструкции, подробно об этом мы писали в статье Как написать инструкцию для разметчиков.

Расхождения между людьми

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

Трудоёмкость

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

Почему синтетика особенно хороша для поз

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

Что это даёт на практике:

  1. Нулевая ошибка разметки: точка стоит ровно там, где находится в модели.
  2. Идеальная согласованность: центр сустава или отверстия всегда трактуется одинаково.
  3. Полная информация о перекрытиях, включая случаи, которые человек разметить не может.
  4. Контроль над распределением: можно сгенерировать редкие позы, необычные ракурсы и опасные ситуации, которые трудно снять в реальности.
  5. Дополнительные слои: маски, карты глубины, нормали, для многозадачного обучения.

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

Чтобы синтетика работала на реальных кадрах, ей нужно разнообразие: освещение, материалы, одежда, фон, положения камеры. Одной красивой сцены мало. Этот принцип подробно раскрыт в материале о доменной рандомизации.

Типичные проблемы при обучении

Даже с хорошими данными задача поз имеет свои подводные камни.

  • Симметрия. Левая и правая рука визуально неразличимы на виде сзади или на симметричной детали. Если схему разметки не продумать, модель будет путать левое и правое. Для симметричных объектов вводят ограничения или явно учитывают симметрию в функции потерь.
  • Масштаб. Маленькие фигуры на дальнем плане дают точки, различающиеся на пару пикселей. Помогает увеличение разрешения входа и обучение на кадрах с большим разбросом масштабов.
  • Перекрытия. Частично закрытые объекты требуют примеров с перекрытиями в обучении, иначе модель теряет точки.
  • Необычные позы. Модели хорошо знают стоящего и идущего человека и плохо — лежащего, согнутого, в прыжке. Здесь как раз выручает целенаправленная генерация.
  • Дрожание на видео. Покадровые предсказания шумят. Решается сглаживанием по времени, например фильтром Калмана, или обучением на последовательностях.

С чего начать проект по оценке позы

Рабочий порядок, который мы используем:

  1. Сформулировать, что нужно на выходе: положение в пикселях, глубина, полная поза. Определить допустимую ошибку.
  2. Утвердить схему ключевых точек и правила видимости.
  3. Собрать небольшую реальную контрольную выборку, лучше размеченную двумя людьми независимо.
  4. Сгенерировать пилотный синтетический набор и проверить, как модель, обученная на нём, ведёт себя на реальной выборке.
  5. Посмотреть ошибки, определить, какого разнообразия не хватает, и масштабировать датасет.

Если у вас есть задача, где нужно определять позу людей или объектов, и вы хотите оценить, подойдёт ли для неё синтетика, пришлите описание на [email protected]. Мы подготовим тестовый датасет с ключевыми точками, масками и картами глубины, чтобы вы могли проверить подход на своих реальных данных.


Читайте также