

Привет! Отличный выбор. Мы переходим от «тяжелых» 2D-экстракторов (HRNet, ViTPose, TokenPose) к **темпоральным моделям 3D-лифтинга**.

**VideoPose3D (Pavllo et al., 2019)** — это абсолютная классика и индустриальный стандарт для перевода 2D-координат в 3D (2D-to-3D lifting) на видео. Для проекта **SmartRep** это важнейшая статья. Она доказывает, что если у нас есть легковесная 2D-модель (которая укладывается в наши <10 мс), мы можем добавить поверх неё темпоральный 3D-лифтинг почти «бесплатно» с точки зрения вычислений, и при этом радикально снизить дрожание (jitter) точек.

Ниже представлен глубокий анализ работы.

---

### 1. МЕТАДАННЫЕ

- **Полное название:** 3D human pose estimation in video with temporal convolutions and semi-supervised training (3D оценка позы человека на видео с использованием темпоральных сверток и полуконтролируемого обучения)
    
- **Авторы:** Dario Pavllo, Christoph Feichtenhofer, David Grangier, Michael Auli
    
- **Аффилиации:** Facebook AI Research (FAIR)
    
- **Год, venue:** 2019, CVPR
    
- **Рейтинг venue:** A* (топ-конференция в CV)
    
- **DOI / arXiv ID:** arXiv:1811.11742
    
- **Цитирований:** >1800 (базовая архитектура для десятков последующих работ)
    

---

### 2. КЛЮЧЕВАЯ ИДЕЯ (Core Contribution)

- **Какую проблему решает статья?** До VideoPose3D для оценки 3D-позы из видео использовались RNN/LSTM (рекуррентные сети), которые работают медленно, плохо параллелятся и страдают от затухания градиентов на длинных последовательностях. А покадровый 3D-лифтинг (без учета времени) дает сильный jitter (дрожание суставов).
    
- **Что предлагается?** Полностью сверточная архитектура на основе **1D dilated temporal convolutions** (одномерных расширенных темпоральных сверток), которая принимает последовательность 2D-точек и выдает 3D-координаты.
    
- **Принципиальная новизна vs предшественников?** Использование расширенных (dilated) сверток над _координатами_ (а не над пикселями) для экспоненциального увеличения рецептивного поля при минимальном числе параметров. Плюс эффективный метод полуконтролируемого обучения (SSL) на неразмеченных видео через обратную проекцию (back-projection).
    
- **Главная гипотеза?** 1D-свертки могут улавливать долгосрочные темпоральные зависимости в движении лучше и эффективнее, чем RNN, обеспечивая плавную и точную 3D-кинематику.
    

---

### 3. АРХИТЕКТУРА И МЕТОД

#### 3.1. Тип подхода

- **Размерность:** 3D (вывод), вход — 2D
    
- **Стратегия:** Two-stage lifting (Сначала независимый 2D-детектор, затем 3D-лифтинг)
    
- **Регрессия:** Direct regression (регрессия 3D-координат)
    
- **Темпоральность:** Sliding window / Temporal Convolutional Network (TCN)
    
- **Backbone:** 1D CNN
    

#### 3.2. Описание архитектуры

- **Вход (Stage 1):** Любой off-the-shelf 2D pose estimator (в статье использовали CPN и Mask R-CNN) извлекает 2D-координаты.
    
- **Вход в лифтинг (Stage 2):** Тензор размерности $(T, J \times 2)$, где $T$ — размер окна (например, 243 кадра), $J$ — количество суставов (обычно 17).
    
- **Темпоральный блок:** Сеть состоит из residual-блоков. Каждый блок содержит 1D-свертки с размером ядра $W=3$, Batch Normalization, ReLU и Dropout.
    
- **Dilations:** С каждым шагом (слоем) фактор расширения (dilation) увеличивается в 3 раза ($D = 1, 3, 9, 27$). Это позволяет сети "видеть" 243 кадра контекста, используя всего 4 блока.
    
- **Выход:** Тензор $(J, 3)$ — трехмерные координаты для целевого кадра (в центре окна для offline-режима или в конце окна для real-time).
    
- **Размер модели:** Зависит от рецептивного поля. Максимальная конфигурация ~16.9M параметров.
    

#### 3.3. Визуальные материалы из статьи

- **Figure 1 (Архитектура):** Наглядная диаграмма 1D-сверток. Отлично показано, как работает dilation: нижние слои смотрят на соседние кадры, верхние слои объединяют информацию из далекого прошлого и будущего.
    
- **Figure 2 (Semi-supervised learning):** Схема SSL. Показывает, как предсказанная 3D-поза проецируется обратно в 2D (с помощью предсказанной траектории камеры) и сравнивается с исходными 2D-точками.
    

#### 3.4. Математическая формализация

- **Supervised Loss:** Используется стандартный Mean Per-Joint Position Error (MPJPE) между предсказанными $\hat{Y}$ и ground-truth $Y$ 3D-координатами:
    
    $$\mathcal{L}_{sup} = \frac{1}{J} \sum_{j=1}^{J} || \hat{Y}_j - Y_j ||_2$$
    
- **Semi-supervised Loss (Reprojection):** Для неразмеченных видео сеть штрафуется за то, что проекция её 3D-вывода не совпадает с изначальными 2D-точками $x$:
    
    $$\mathcal{L}_{reproj} = || \Pi(\hat{Y}) - x ||_2$$
    
    Где $\Pi$ — ортогональная или перспективная проекция.
    

#### 3.5. Ключевые технические решения

- **Causal Convolutions (Причинно-следственные свертки):** Для **работы в реальном времени** (что нужно для SmartRep) сеть не может "заглядывать в будущее". Авторы заменяют симметричные свертки на причинные (кадр $t$ предсказывается только по кадрам $t-RF ... t$). Качество немного падает, но задержка становится нулевой (относительно поступления кадров).
    

---

### 4. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

#### 4.1. Датасеты

|**Датасет**|**Размер (train/val/test)**|**Тип**|**Разрешение**|**Домен**|**Public?**|
|---|---|---|---|---|---|
|Human3.6M|3.6M кадров|3D|Видео|General / MoCap|Да|
|HumanEva-I|~40K кадров|3D|Видео|General / MoCap|Да|

#### 4.2. Метрики

- **Координатные:** MPJPE (основная), P-MPJPE (после выравнивания по Прокрусту), N-MPJPE (с выравниванием по масштабу).
    
- **Угловые:** **НЕ УКАЗАНО В СТАТЬЕ**.
    
- **Темпоральные:** MPJVE (Mean Per-Joint Velocity Error) — измеряет плавность движений и jitter. **[МОЙ КОММЕНТАРИЙ]:** Отличная метрика для видео, показывает превосходство темпорального сглаживания.
    
- **Деплоймент:** Params, Complexity.
    

#### 4.3. Сравнительная таблица результатов (на Human3.6M)

|**Метод**|**2D Detector**|**Temporal RF**|**MPJPE (mm)**|**P-MPJPE (mm)**|
|---|---|---|---|---|
|Martinez et al. (Single-frame)|Ground Truth|1 frame|45.5|37.1|
|Hossain & Little (LSTM)|Ground Truth|Sequence|41.6|31.7|
|**VideoPose3D (Ours)**|Ground Truth|**243 frames**|**37.8**|**28.3**|
|**VideoPose3D (Ours)**|CPN (Det)|**243 frames**|**46.8**|**36.5**|
|**VideoPose3D (Ours - Causal)**|CPN (Det)|243 frames|49.3|38.0|

**[МОЙ КОММЕНТАРИЙ]:** Существенное улучшение по сравнению с LSTM (на ~10%) и SOTA на момент публикации. Causal-версия теряет около 2.5 мм точности, что является отличным компромиссом для real-time систем.

#### 4.4. Ablation Study

- **Receptive Field:** Увеличение окна с 1 до 27 кадров дает огромный буст. С 27 до 243 кадров — умеренный буст. Дальше 243 кадров (на 25 fps это ~10 секунд) качество не растет.
    

---

### 5. RESULTS & DISCUSSION

#### 5.1. Основные выводы

Темпоральные 1D-свертки над координатами превосходят RNN как по скорости, так и по точности. Они решают проблему дрожания в видео и делают 3D-позу стабильной.

#### 5.2. Качественный анализ

Сглаживание движений на видео (визуально) поразительное по сравнению с покадровыми методами. Модель способна "переживать" кратковременные ошибки 2D-детектора (например, окклюзии), интерполируя позу из соседних кадров.

#### 5.3. Edge-готовность (специально для SmartRep)

**ВНИМАНИЕ:** Оцениваем _только_ lifting-модуль (Stage 2), без 2D-экстрактора.

|**Параметр**|**Значение в статье**|**Соответствие SmartRep (<10 мс, <30 МБ, ≥30 fps)**|
|---|---|---|
|Hardware|Обучение на GPU|На инференсе это просто 1D свертки.|
|Latency|~1 ms (на CPU)|**Идеально.** Лифтинг практически ничего не стоит по времени (сотни тысяч кадров в секунду на GPU, доли миллисекунды на Snapdragon CPU).|
|FPS|>1000 fps (только лифтинг)|**Идеально.** Ограничивающим фактором будет только 2D-экстрактор.|
|Model size|~16.9 MB (max) / ~4MB (small)|**Идеально.** Вписывается в лимит <30 MB с запасом.|
|FLOPs|Менее 0.1 G|**Идеально.**|

---

### 6. ПРЕИМУЩЕСТВА ПОДХОДА

- **Дешевизна:** Вычислительная стоимость 1D-сверток над 34 числами ($17 \times 2$) ничтожна по сравнению с обработкой изображений.
    
- **Модульность:** Можно обучить VideoPose3D, а 2D-модель (MoveNet/RTMPose) менять как угодно, если их распределение ошибок совпадает.
    
- **Real-time (Causal):** Causal-режим идеально ложится в сценарий SmartRep (обработка потока).
    

---

### 7. НЕДОСТАТКИ И ОГРАНИЧЕНИЯ

- **Bottleneck 2D-сети:** Если 2D-сеть катастрофически ошиблась на протяжении 1-2 секунд (например, штанга закрыла ноги надолго), VideoPose3D не сможет это исправить. Он не видит пиксели, он видит только ошибочные координаты.
    
- Отсутствие угловых метрик (как и везде в General CV).
    
- Выдает координаты суставов, а не углы вращения (SMPL). Для получения честных биомеханических углов (flexion/extension) потребуется дополнительный IK-солвер (Inverse Kinematics) или эвристики по векторам.
    

---

### 8. РЕЛЕВАНТНОСТЬ ДЛЯ SMARTREP

Оцени по шкале 1–5 каждый аспект:

|**Аспект**|**Оценка (1–5)**|**Комментарий**|
|---|---|---|
|Edge-готовность|5|Lifting-модуль идеален для смартфона.|
|Точность по угловым метрикам|2|Выдает только 3D-точки, углы нужно считать математически.|
|Устойчивость к самоокклюзиям|4|Сглаживает кратковременные окклюзии за счет темпорального окна.|
|Работа с нестандартными позами|2|Модель "вызубрила" Human3.6M (ходьба). На приседе сломается без fine-tuning.|
|Темпоральная стабильность|5|**Это её главное предназначение.** Убирает jitter.|
|Применимость к циклическим движениям|4|Большое рецептивное окно (~10 сек) захватывает несколько повторений упражнения.|
|Валидация на фитнес датасетах|1|Отсутствует.|
|Робастность к truncation|3|Если 2D-модель выдает NaN или нули для обрезанных ног, нужно адаптировать вход VideoPose3D.|
|Возможность fine-tuning|5|Очень легко дообучить на Fit3D (обучается за минуты на 1 GPU).|
|Доступность кода и весов|5|Стандарт де-факто, есть в миллионе репозиториев (PyTorch, TFLite).|

**Конкретные элементы для заимствования (Привязка к направлению 🅱):**

- **Архитектура темпорального 3D-лифтинга.** Для SmartRep мы берем сверхбыстрый 2D-детектор (например, RTMPose-Lite, ~6 мс) и подаем его координаты в **Causal VideoPose3D** (~1 мс). Итоговый пайплайн занимает ~7 мс на кадр, дает темпорально сглаженные 3D-точки, из которых мы считаем сагиттальные углы (колени, бедра). Это база для реализации направления **🅱**.
    

---

### 9. СВЯЗЬ С ДРУГИМИ РАБОТАМИ

- Окончательно "похоронила" RNN/LSTM в задачах pose estimation.
    
- Прародитель всех современных трансформер-лифтингов: PoseFormer (пространственно-временной attention над координатами), MotionBERT (SOTA 2023 года) и StridedFormer.
    
- Отлично комбинируется с SOTA 2D детекторами (ViTPose, HRNet).
    

---

### 10. КРИТИЧЕСКАЯ ОЦЕНКА (Peer-Review)

|**Критерий**|**1–10**|**Комментарий**|
|---|---|---|
|Новизна|9|Элегантный перенос dilated convolutions (как в WaveNet) на координаты.|
|Техническая глубина|8|Простая и математически чистая идея.|
|Экспериментальная строгость|9|Хороший ablation study.|
|Ясность изложения|10|Статья — образец понятного научного письма.|
|Воспроизводимость|10|Код тривиален (100 строк на PyTorch).|
|Значимость для community|10|Сформировала стандарт lifting-пайплайнов на годы вперед.|
|Релевантность edge-deployment|5|(Только для lifting-части).|

**Общая оценка:** Strong Accept (как архитектурный блок для нашего edge-пайплайна).

---

### 11. КЛЮЧЕВЫЕ ВЫВОДЫ

1. Главный вклад статьи: Доказательство эффективности и скорости 1D dilated темпоральных сверток для перевода 2D-координат в 3D на видео.
    
2. Самое сильное техническое решение: Causal (причинные) свертки, позволяющие работать с видеопотоком в реальном времени.
    
3. Главный недостаток: "Слепота" модели — она не видит исходное изображение и полностью зависит от качества предсказаний 2D-экстрактора.
    
4. Самый полезный элемент для SmartRep: **Архитектура TCN для 2D-to-3D лифтинга** — это идеальный кандидат на роль модуля "Joint Angle Computation" в нашем пайплайне для телефона.
    
5. Что изучить дополнительно после этой статьи: PoseFormer и MotionBERT — чтобы понять, побили ли трансформеры эту архитектуру и какой ценой по FLOPs.
    
6. Приоритет для нашего исследования: **ВЫСОКИЙ** (это буквально наш кандидат №1 на темпоральный лифтинг).
    
7. Связанные статьи, которые стоит прочитать следом: MotionBERT, RTMPose.
    

---

## ИТОГОВАЯ КАРТОЧКА

Markdown

````
---
title: "3D human pose estimation in video with temporal convolutions and semi-supervised training"
title_ru: "3D оценка позы человека на видео с использованием темпоральных сверток и полуконтролируемого обучения (VideoPose3D)"
authors: [Pavllo, Feichtenhofer, Grangier, Auli]
year: 2019
venue: "CVPR"
venue_tier: "A*"
doi: "arXiv:1811.11742"
tags: [pose_estimation, edge, ssl]
pose_dim: "3d"
strategy: "lifting"
backbone: "1D CNN (TCN)"
params_M: 16.9
flops_G: <0.1
latency_ms: ~1
hw_tested: "GPU (inference is CPU-friendly)"
relevance_to_smartrep: 5
direction: "B"
priority: "HIGH"
---

# VideoPose3D: 3D оценка позы человека на видео с использованием темпоральных сверток

## TL;DR
Фундаментальная работа (VideoPose3D), которая заменяет сложные RNN/LSTM на полностью сверточную 1D-архитектуру (dilated convolutions) для перевода последовательности 2D-суставов в 3D-позу. Модель устраняет дрожание (jitter) на видео, работает в реальном времени (causal mode) и имеет крошечный вычислительный бюджет.

## Проблема
Покадровые 3D-модели (single-frame) создают сильное временное дрожание точек (jitter) при обработке видео. Существующие темпоральные модели на базе RNN обучаются медленно и тяжело масштабируются на длинные окна (long-term dependencies).

## Гипотеза / вклад
- Использование 1D-сверток с увеличивающимся фактором расширения (dilation) над временным рядом 2D-координат.
- Введение метода полуконтролируемого обучения (SSL) для тренировки на неразмеченных видео с использованием 2D-проекционной ошибки.

## Метод
Архитектура состоит из независимого 2D-детектора (Stage 1) и 3D-лифтинг сети (Stage 2). Лифтинг сеть (VideoPose3D) принимает окно 2D-координат (например, 243 кадра) и пропускает их через residual-блоки 1D-сверток с дилатацией (1, 3, 9, 27). На выходе выдается 3D-координата для центрального (или последнего, в случае causal) кадра.

## Датасеты
| Датасет | Размер | Метрика | Результат |
|---|---|---|---|
| Human3.6M | 3.6M | MPJPE | 46.8 мм (с CPN 2D) |
| Human3.6M | 3.6M | MPJPE | 37.8 мм (с Ground Truth 2D) |

## Сравнение с SOTA
VideoPose3D значительно превзошел предыдущие темпоральные методы на основе LSTM по точности, при этом инференс выполняется на порядки быстрее и требует меньше памяти.

## Edge-метрики (Только для Lifting модуля)
| Параметр | Значение | hw |
|---|---|---|
| Latency | <1 ms | Мобильный CPU (эстимация) |
| FPS | >1000 | - |
| Params | ~17M (max config) | - |
| FLOPs | <0.1G | - |

## Ограничения / слабости
Модель "слепа": она не видит само изображение и не может исправить фундаментальные ошибки 2D-сети (например, если рука полностью перекрыта штангой и 2D-сеть выдала случайную координату). Нет биомеханических углов, только 3D-координаты.

## Релевантность SmartRep
**Максимальная.** Это идеальный архитектурный блок для решения проблемы темпорального сглаживания и получения 3D-информации для сагиттальных углов на edge-устройстве. Мы можем взять ультрабыстрый 2D детектор (RTMPose-lite) и пустить его выход через Causal (real-time) версию VideoPose3D, уложившись в бюджет <10 мс (направление 🅱).

## Gap для нас
Работа **не валидируется** на фитнес-упражнениях (Fit3D), не измеряет угловую ошибку (MAE) в суставах, которая критична для оценки техники (Technique Assessment), и полагается на тяжелые 2D-детекторы (CPN/Mask R-CNN), которые не работают на смартфонах.

## Ссылки на связанные статьи
[[RTMPose]], [[MotionBERT]]

## Код / данные
- Repo: https://github.com/facebookresearch/VideoPose3D
- Pretrained: Да
- Датасет: Human3.6M

## BibTeX
```bibtex
@inproceedings{pavllo20193d,
  title={3D human pose estimation in video with temporal convolutions and semi-supervised training},
  author={Pavllo, Dario and Feichtenhofer, Christoph and Grangier, David and Auli, Michael},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={7753--7762},
  year={2019}
}
````

```
---
Итак, мы разобрали классику 2D, борьбу с окклюзиями через токены и базу для быстрого 3D-лифтинга. Если мы хотим закрыть пробел именно в **Edge-деплое** (<10 мс), предлагаю следующей разобрать **RTMPose** (SOTA для мобилок) или **MoveNet** от Google. Что скажешь?
```