Что такое разметка ключевых точек (keypoints)?
Keypoints — вид разметки, при котором на объекте отмечают не рамку и не контур, а набор отдельных значимых точек: суставов тела, черт лица, узлов механизма. Каждая точка получает координаты и обычно метку видимости — видна она на кадре, скрыта за другим объектом или вовсе отсутствует в этом ракурсе.
В отличие от bounding box и сегментации, keypoints не описывают форму объекта целиком — они фиксируют структуру и взаимное расположение конкретных опорных точек. Именно поэтому keypoints — обязательный вид разметки там, где модели важна не площадь объекта, а его поза, ориентация или конфигурация частей относительно друг друга.
Число и состав точек фиксируют заранее в виде схемы, единой для всего датасета: если сегодня размечать 12 точек тела, а завтра — 17, модель получит несовместимые между собой примеры и не сможет обучиться устойчивому предсказанию позы на новых, ранее не виденных изображениях.
Какие задачи решают с помощью keypoints-разметки?
Keypoints лежат в основе задач оценки позы человека (спорт, фитнес-приложения, системы безопасности), распознавания лицевых точек (для anti-spoofing, эмоций и AR-фильтров) и разметки рук (жестовое управление, анализ хирургических манипуляций). В промышленности keypoints размечают и на неодушевлённых объектах — углы деталей на конвейере, точки крепления в робототехнике.
Общая черта всех этих задач — модели нужно не просто «увидеть» объект, а понять его внутреннюю структуру: как расположены суставы относительно друг друга, куда повёрнута голова, в каком положении находятся пальцы руки. Без keypoints-разметки такие модели просто не на чем обучать.
Отдельная и растущая область — keypoints для нечеловеческих объектов: разметка суставов животных в ветеринарных и биологических исследованиях, точек захвата для промышленных роботов-манипуляторов, опорных точек упаковки на конвейере, где важна не форма объекта, а конкретные позиции для точного взаимодействия механизма с ним.
Как размечают ключевые точки на практике?
Разметчик расставляет точки по заранее заданной схеме — фиксированному набору позиций вроде «левое плечо», «правый локоть», «кончик носа» — сохраняя единый порядок для каждого объекта на всём датасете. Для скрытых или обрезанных кадром точек ставится специальная метка невидимости, а не приблизительное положение, чтобы не вносить в модель ложный сигнал.
Гайдлайн для keypoints-разметки должен заранее описывать точный порядок и названия точек, а также правило для спорных случаев — например, как размечать позу, если часть тела перекрыта другим человеком в кадре. Без единого гайдлайна разные разметчики расставляют точки в разном порядке, и это ломает обучение модели, ожидающей строго фиксированную структуру на входе.
Какие инструменты используют для разметки ключевых точек?
Ключевые точки размечают в специализированных инструментах вроде CVAT, Label Studio и Supervisely — они поддерживают заданные схемы скелета, показывают связи между точками прямо в интерфейсе и не дают разметчику случайно перепутать порядок точек. Часть инструментов дополнительно встраивает предобученные модели оценки позы для автоматической предразметки.
Предразметка моделью не отменяет ручной труд, а меняет его характер: вместо расстановки точек с нуля разметчик проверяет и корректирует уже предложенные моделью позиции, что заметно ускоряет работу на простых кадрах и оставляет больше времени на сложные случаи — перекрытия, необычные ракурсы, редкие позы, где автоматика чаще ошибается.
Как хранится keypoints-разметка в формате COCO?
Формат COCO keypoints хранит для каждого объекта плоский список чисел: тройки координат x, y и флаг видимости для каждой точки по фиксированному порядку схемы. Флаг видимости принимает одно из трёх значений — точка не размечена, размечена, но скрыта, или размечена и видна на кадре — что позволяет модели корректно учитывать перекрытые точки при обучении.
Схематично массив keypoints для одного человека выглядит так: [x1, y1, v1, x2, y2, v2, ...], где порядок троек соответствует фиксированной схеме точек — например, нос, затем глаза, затем уши и так далее до лодыжек. Этот же массив дополняет обычную запись объекта в COCO с его bounding box и категорией, поэтому keypoints обычно размечают вместе с рамкой, а не отдельно от неё.
Помимо самого массива координат, датасет COCO keypoints хранит отдельным блоком описание схемы скелета — список пар индексов точек, которые считаются соединёнными между собой. Именно эта схема потом используется и при визуализации разметки для контроля качества, и при обучении моделей, которые учитывают не только положение отдельных точек, но и связи между ними.
Что такое метрика OKS и как она оценивает точность keypoints?
OKS (Object Keypoint Similarity) — метрика, которая сравнивает предсказанные моделью точки с эталонной разметкой, учитывая масштаб объекта и типичную сложность локализации каждой конкретной точки. Чем ближе предсказанная точка к эталону с поправкой на эти два фактора, тем выше значение OKS, а итоговое качество модели чаще всего измеряют как mAP по разным порогам OKS.
Поправка на масштаб объекта в OKS важна потому, что одна и та же ошибка в пикселях означает разную по значимости неточность для маленького и крупного объекта на кадре. А поправка на сложность точки учитывает, что, например, положение носа предсказать проще и точнее, чем положение локтя, который чаще перекрыт другими частями тела или объектами сцены — так метрика не наказывает модель одинаково строго за принципиально разные по трудности точки.
На практике порог OKS выбирают под требования проекта: для грубой оценки позы достаточно низкого порога, а для точных задач вроде анализа спортивной техники или медицинской диагностики движений закладывают более строгий порог, при котором даже небольшое смещение ключевой точки засчитывается как ошибка модели.