


Получил полный PDF RTMPose со всеми таблицами. Приступаю к анализу.

---

# Глубокий анализ: RTMPose — Real-Time Multi-Person Pose Estimation based on MMPose

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

| Поле                             | Значение                                                                                                                                                                           |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Оригинальное название**        | RTMPose: Real-Time Multi-Person Pose Estimation based on MMPose                                                                                                                    |
| **Перевод**                      | RTMPose: реал-тайм multi-person оценка позы на основе MMPose                                                                                                                       |
| **Авторы**                       | Tao Jiang, Peng Lu, Li Zhang, Ningsheng Ma, Rui Han, Chengqi Lyu, Yining Li, Kai Chen                                                                                              |
| **Аффилиации**                   | **Shanghai AI Laboratory** (все 8 авторов из одной организации, pjlab.org.cn)                                                                                                      |
| **Год публикации**               | arXiv v1: 13 March 2023; v2: 3 July 2023                                                                                                                                           |
| **Venue**                        | **arXiv preprint** (НЕ peer-reviewed на формальной конференции, но является официальным техническим отчётом OpenMMLab)                                                             |
| **Venue tier**                   | **Preprint** (non-peer-reviewed), но с очень высоким impact — industrial toolbox release                                                                                           |
| **arXiv ID**                     | [2303.07399v2](https://arxiv.org/abs/2303.07399)                                                                                                                                   |
| **Код / веса**                   | **[MMPose projects/rtmpose](https://github.com/open-mmlab/mmpose/tree/main/projects/rtmpose)** — полная интеграция с MMPose / MMDeploy; все модели (t/s/m/l/x) с pretrained весами |
| **Цитирований**                  | **301 Citations** (Semantic Scholar, 2025); Highly Influential Citations: 35 — самая цитируемая современная edge pose модель                                                       |
| **Связанные деплоймент-форматы** | ONNX, TensorRT, ncnn (mobile), RKNN, OpenVINO, PPLNN, CoreML — полная экосистема через MMDeploy                                                                                    |

**[МОЙ КОММЕНТАРИЙ]** RTMPose — **flagship проект OpenMMLab / Shanghai AI Lab**, команды, которая создала MMPose toolbox (используемый всеми академическими группами). Это не peer-reviewed paper в строгом смысле, но **технический отчёт на уровне CVPR/NeurIPS** (301 цитирование за 2 года, extensive benchmarks на CPU/GPU/mobile, production-grade код). Это **единственная из разобранных edge моделей с direct Snapdragon 865 benchmarks**, что критически важно для нашего проекта.

---

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

RTMPose решает проблему **gap между academic benchmarks и industrial requirements** для real-time pose estimation — существующие SOTA модели (HRNet, ViTPose) точны, но слишком тяжёлые; edge-модели (BlazePose, MoveNet) fast, но теряют accuracy. Авторы **систематически исследуют пять факторов** производительности: (1) **paradigm** — top-down или bottom-up, (2) **backbone architecture** — CSPNeXt вместо HRNet/ResNet, (3) **localization method** — SimCC (coordinate classification) вместо heatmap, (4) **training strategy** — 2-stage augmentation + EMA + flat-cosine, (5) **deployment** — MMDeploy pipeline для ONNX/TensorRT/ncnn. Финальный результат: семейство **RTMPose-t/s/m/l/x**, где **RTMPose-s достигает 72.2% AP на COCO при 70+ FPS на Snapdragon 865** (выше, чем любая open-source edge библиотека на момент публикации).

**Главная гипотеза:** SimCC coordinate classification + CSPNeXt backbone + self-attention refinement (GAU) + optimized training + joint inference pipeline оптимизация могут одновременно дать SOTA accuracy AND real-time mobile performance, если все 5 факторов правильно спроектировать.

**[МОЙ КОММЕНТАРИЙ]** Это **самая систематическая и empirical** работа в нашей коллекции edge моделей: не просто «мы предлагаем новый блок», а **обстоятельный engineering paper** с roadmap-style методологией. Это наиболее ценно для SmartRep — authors explicitly решают ту же задачу, что и мы.

---

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

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

|Аспект|Классификация|
|---|---|
|**Размерность**|2D (17 COCO keypoints; также 26-keypoint Body, 133-keypoint COCO-WholeBody, hand, face — multiple topologies)|
|**Стратегия**|**Top-down** «employs a top-down approach by using an off-the-shelf detector» — с RTMDet как real-time detector|
|**Регрессия**|**Coordinate Classification (SimCC-based)** — «predicts keypoints using a SimCC-based algorithm that treats keypoint localization as a classification task»; классификация по sub-pixel bins для x и y осей отдельно|
|**Темпоральность**|**Per-frame** с optional **OneEuro filter** smoothing + skip-frame detection из BlazePose|
|**Backbone**|**CSPNeXt** (t/s/m/l/x variants) — «first designed for object detection», deployment-friendly|
|**Head**|**7×7 Conv + FC + Gated Attention Unit (GAU)** — «self-attention module to refine K keypoint representations»|

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

**Общий pipeline:**

```
Input image (256×192 или 384×288)
          │
          ▼
┌──────────────────────────────────────┐
│ Person Detector (RTMDet-nano/m)      │
│ 320×320 / 640×640 input              │
│ → person bounding boxes              │
└──────────────────────────────────────┘
          │
          ▼
 Crop person (256×192 / 384×288)
          │
          ▼
┌──────────────────────────────────────┐
│ CSPNeXt-{t,s,m,l,x} backbone         │
│ → feature map (H/32 × W/32 × C)      │
└──────────────────────────────────────┘
          │
          ▼
┌──────────────────────────────────────┐
│ 7×7 Convolution layer                │
│ (вместо standard 1×1 в SimCC)        │
└──────────────────────────────────────┘
          │
          ▼
┌──────────────────────────────────────┐
│ Fully-Connected layer                │
│ Expand to 256-dim keypoint features  │
│ (17 keypoints × 256 dim)             │
└──────────────────────────────────────┘
          │
          ▼
┌──────────────────────────────────────┐
│ Gated Attention Unit (GAU)           │
│ - transformer variant из [Hua 2022]  │
│ - U = φu(XWu), V = φv(XWv)           │
│ - A = relu²(Q(X)K(Z)^T/√s)/n         │
│ - O = (U ⊙ AV)Wo                     │
│ - self-attention между keypoints     │
└──────────────────────────────────────┘
          │
          ├──────────────────┐
          ▼                  ▼
┌──────────────────┐  ┌──────────────────┐
│ FC layer (x-axis)│  │ FC layer (y-axis)│
│ → Wx bins        │  │ → Hy bins        │
│ (Wx = Wpose × 2) │  │ (Hy = Hpose × 2) │
└──────────────────┘  └──────────────────┘
          │                  │
          ▼                  ▼
  Softmax(τ=10)       Softmax(τ=10)
          │                  │
          └─────────┬────────┘
                    ▼
        argmax × bin_step
                    │
                    ▼
     K keypoints (x, y) для K persons
                    │
                    ▼
  OKS-based NMS + OneEuro filter
                    │
                    ▼
           Final poses
```

**Ключевые размерности (RTMPose-m, input 256×192):**

|Этап|Размер тензора|Примечание|
|---|---|---|
|Input crop|3 × 256 × 192|RGB|
|CSPNeXt-m output|768 × 8 × 6|H/32, W/32|
|7×7 Conv|17 × 8 × 6|K keypoints channels|
|Flatten + FC|17 × 256|keypoint representations|
|GAU output|17 × 256|refined|
|X-head FC|17 × 384|bins (192 × 2)|
|Y-head FC|17 × 512|bins (256 × 2)|

**Размеры всех RTMPose вариантов (на COCO 256×192):**

|Модель|Backbone|GFLOPs|AP (COCO val, Faster-RCNN, AIC+COCO train)|
|---|---|:-:|:-:|
|**RTMPose-t**|CSPNeXt-t|**0.36**|67.1|
|**RTMPose-s**|CSPNeXt-s|**0.68**|71.1|
|**RTMPose-m**|CSPNeXt-m|**1.93**|**75.3**|
|**RTMPose-l**|CSPNeXt-l|**4.16**|**76.3**|

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

|#|Рисунок/Таблица|Содержание|Что даёт|
|---|---|---|---|
|**Fig. 1**|Pareto plot RTMPose vs open-source libraries|«Comparison of RTMPose and open-source libraries on COCO val set regarding model size, latency, and precision»|Главная мотивирующая визуализация|
|**Fig. 2**|**Overall architecture**|«contains a convolutional layer, a fully-connected layer and a Gated Attention Unit (GAU)»|Архитектурная диаграмма|
|**Fig. 3**|Step-by-step improvements roadmap|«Step-by-step improvements from a SimCC baseline»|Декомпозиция контрибуций|
|**Fig. 4**|Inference pipeline|Включая skip-frame detection, OKS-NMS, OneEuro filter|Full deployment pipeline|
|**Fig. 5**|GFLOPs vs accuracy|Две панели: COCO full и COCO-SinglePerson|Визуализация результатов|
|**Table 1**|SimCC* (без upsampling) vs SimCC vs Heatmap|Baseline analysis|Мотивация SimCC*|
|**Table 2-3**|Kernel size + temperature ablations|7×7 kernel оптимален, τ=0.1 оптимален|Micro-design choices|
|**Table 4**|COCO val full results|Полное сравнение с TinyPose, AlphaPose (12 вариантов RTMPose × 4 детектора)|Main result|
|**Table 5**|**COCO-SinglePerson val**|**Прямое сравнение с BlazePose, MoveNet, TinyPose**|**Критически важно для SmartRep!**|
|**Table 6**|COCO-WholeBody V1.0|133 keypoints, включая hands/face/foot|Whole-body capability|
|**Table 7**|Training settings|AdamW, flat-cosine, EMA, batch 1024|Reproducibility|
|**Table 8**|AP-10K, CrowdPose|Animal pose + crowded scenes|Generalization|
|**Table 9**|MPII val|PCKh@0.5 сравнение|Dataset coverage|
|**Table 10**|**Snapdragon 865 inference**|**ncnn FP32/FP16 latency**|**Главная mobile benchmark!**|
|**Table 11**|CPU (i7-11700) / GPU (GTX 1660 Ti) inference|ONNXRuntime / TensorRT|Desktop deployment|
|**Table 12**|Pipeline inference speed (detection + pose)|End-to-end latency|Real-world benchmark|

**[МОЙ КОММЕНТАРИЙ]** Визуальные материалы — **самые полные** из всех разобранных моделей: 5 рисунков + 12 таблиц. Особенно ценны **Table 5** (direct comparison с BlazePose и MoveNet на том же COCO-SinglePerson датасете) и **Table 10-12** (detailed mobile/CPU/GPU benchmarks).

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

**1. SimCC coordinate classification formulation:**

Для каждого keypoint $k$, координата $x_k \in [0, W_{pose}]$ делится на $W_x = W_{pose} \cdot \text{split_ratio}$ бинов ($\text{split_ratio} = 2$ дефолтно для sub-pixel precision). Ground-truth бин: $$b_k^x = \lfloor x_k \cdot \text{split_ratio} \rfloor$$

**2. Gaussian soft label (SORD-based):**

Из уравнения (3) и (4): $$y_i = \frac{e^{\phi(r_t, r_i)/\tau}}{\sum_{k=1}^{K} e^{\phi(r_t, r_k)/\tau}}$$

$$\phi(r_t, r_i) = e^{-\frac{(r_t - r_i)^2}{2\sigma^2}}$$

где $r_t$ — ground-truth rank, $r_i$ — текущий rank, $\sigma$ — spread, $\tau$ — temperature (τ=0.1 оптимально).

**3. Separate σ для x и y (ключевой trick):**

Из уравнения (6): $$\sigma = \sqrt{\frac{W_S}{16}}$$

где $W_S$ — количество бинов в соответствующем направлении (отличается для x и y).

**4. Gated Attention Unit (GAU) formulation:**

Из уравнения (1): $$U = \phi_u(XW_u), \quad V = \phi_v(XW_v), \quad O = (U \odot AV)W_o$$

Self-attention (уравнение 2): $$A = \frac{1}{n} \text{relu}^2\left(\frac{Q(X)K(Z)^\top}{\sqrt{s}}\right), \quad Z = \phi_z(XW_z)$$

где $s=128$, $\text{relu}^2(\cdot)$ — ReLU затем squared (вместо softmax attention). Это **замена стандартного transformer attention** на linear-in-sequence-length формулировку — быстрее и более mobile-friendly.

**5. Loss function** (implicit в формулировке):

KL-divergence между Gaussian-smoothed soft label и predicted softmax distribution, отдельно для x и y осей: $$\mathcal{L} = \sum_{k=1}^{K} \sum_{d \in {x, y}} \text{KL}(y_k^d | \hat{y}_k^d)$$

**[МОЙ КОММЕНТАРИЙ]** Математика **самая глубокая среди разобранных edge моделей**: SORD soft label encoding + GAU с ReLU² attention (Hua et al., 2022) — это современные transformer tricks, адаптированные для mobile inference. GAU — ключевая techncal novelty.

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

|Категория|Приём|Эффект|
|---|---|---|
|**Architecture paradigm**|Top-down с RTMDet-nano детектором|Real-time detection не bottleneck|
|**Architecture backbone**|**CSPNeXt** (из RTMDet) вместо HRNet/ResNet|Deployment-friendly + balanced speed/accuracy|
|**Localization method**|**SimCC*** (без upsampling layers)|+0.6 AP over heatmap baseline, 1/20 head FLOPs|
|**Architecture head**|**1×1 → 7×7 Conv** в последнем layer|+0.5 AP (72.8 → 73.3)|
|**Architecture head**|FC expand to 256-dim (hyperparameter)|+0.2 AP (71.2 → 71.4)|
|**Architecture head**|**Gated Attention Unit (GAU)**|+0.5 AP (71.4 → 71.9)|
|**Loss**|**SORD soft labels** + **Softmax temperature τ=0.1**|+0.8 AP (71.9 → 72.7)|
|**Loss**|**Separate σ** для x/y|+0.1 AP (72.7 → 72.8)|
|**Training**|**Heatmap-based pre-training (UDP)**|+0.6 AP (69.7 → 70.3)|
|**Training**|**EMA** (Exponential Moving Average)|+0.1 AP (70.3 → 70.4)|
|**Training**|**Flat-cosine** LR schedule|+0.3 AP (70.4 → 70.7)|
|**Training**|**AdamW**, base LR 0.004, batch size 1024|Standard modern recipe|
|**Training**|**2-stage augmentation** (strong 180ep + weak 30ep)|+0.3 AP; Cutout + large rotation/scale в strong phase|
|**Training**|Random scaling [0.6, 1.4], random rotation 80°, Cutout prob 1.0 (strong phase)|**Очень агрессивные augmentations**|
|**Training**|**Multi-dataset (COCO + AIC)** + balanced sampling|+1.6 AP (73.7 → 75.3)|
|**Training**|Total **420 epochs** (270+180 или 210 pre-train + 420 fine-tune)|Длинное обучение для SOTA|
|**Inference pipeline**|**Skip-frame detection** (из BlazePose)|Reduce detection calls by ~K×|
|**Inference pipeline**|**OKS-based pose NMS**|Multi-person robust|
|**Inference pipeline**|**OneEuro filter** для smoothing|Temporal stability|
|**Deployment**|**MMDeploy** toolkit: ONNX, TensorRT, ncnn, RKNN, OpenVINO, PPLNN, CoreML|Полная mobile / edge поддержка|
|**Quantization**|**FP16** benchmarks на Snapdragon (ncnn), GPU (TensorRT)|Native FP16 workflow|

---

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

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

|Датасет|Размер (train/val/test)|Тип|Разрешение|Домен|Public?|
|---|---|---|---|---|---|
|**COCO**|118K train / 5K val|2D, 17 keypoints|256×192, 384×288|General|✅|
|**COCO-SinglePerson**|1045 single-person images из COCO val2017|2D, 17 keypoints|256×192|General (single)|✅ custom split|
|**COCO-WholeBody V1.0**|118K train / 5K val|2D, 133 keypoints (body+hands+face+foot)|256×192, 384×288|General whole-body|✅|
|**AI Challenger (AIC)**|220K|2D, 14 keypoints|—|General|✅|
|**AP-10K**|—|2D, animal pose|256×256|Animal|✅|
|**CrowdPose**|—|2D, 14 keypoints|256×192|Crowded scenes|✅|
|**MPII**|~3K val|2D, 16 keypoints|256×256|General|✅|

**[МОЙ КОММЕНТАРИЙ]** **Seven datasets** — самый широкий охват из всех разобранных моделей. Особенно важно: **COCO-SinglePerson** — custom subset, специально созданный для справедливого сравнения с single-person models (BlazePose, MoveNet, TinyPose). Это **первая модель**, которая честно сравнивается с BlazePose и MoveNet на одном бенчмарке.

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

|Категория|Используется?|Детали|
|---|---|---|
|**OKS-mAP (COCO AP)**|✅|Main metric|
|**AP50/AP75**|✅|Standard|
|**PCKh@0.5**|✅|Для MPII|
|**PCKh@0.1**|❌|Не используется (EfficientPose использовал)|
|**MAE / RMSE по углам суставов**|❌ **(critical gap для SmartRep)**|—|
|**MPJVE / MPJAE**|❌|Не применимо (2D)|
|**FLOPs**|✅|Отдельно для pose и detection|
|**Params (M)**|✅|—|
|**Inference Time (mobile)**|✅ **(ncnn on Snapdragon 865, 4 threads, FP32 и FP16)**|**Первая edge-модель с такими detailed benchmarks**|
|**Inference Time (CPU)**|✅ (ONNXRuntime, Intel i7-11700, 1 thread)|—|
|**Inference Time (GPU)**|✅ (TensorRT FP16, GTX 1660 Ti)|—|
|**End-to-end pipeline latency**|✅ (Table 12: detection + pose)|—|
|**Energy**|❌|Не измеряется|
|**Cross-dataset**|✅|COCO + AIC + MPII + CrowdPose + AP-10K|
|**Occlusion robustness**|❌|Не quantified (но CrowdPose частично эту метрику отражает)|
|**Fitness validation**|❌ **(critical gap)**|—|

**Критически для SmartRep:** ❌ **нет угловых метрик**; ❌ **нет fitness validation**; ✅ **отличные mobile benchmarks** на Snapdragon 865 (первая модель с этим!); ✅ **direct сравнение с BlazePose, MoveNet, TinyPose** на COCO-SinglePerson.

### 4.3. Сравнительная таблица результатов

#### Table 5: COCO-SinglePerson val (КРИТИЧЕСКИ важная для SmartRep)

|Метод|Backbone|Input|GFLOPs|**AP**|Extra Data|
|---|---|---|:-:|:-:|---|
|**BlazePose-Lite**|BlazePose|256×256|N/A|**29.3**|Internal (85K)|
|**BlazePose-Full**|BlazePose|256×256|N/A|**35.4**|Internal (85K)|
|**MoveNet Lightning**|MobileNetV2|192×192|0.54|**53.6***|Internal (23.5K)|
|**MoveNet Thunder**|MobileNetV2 d×1.75|256×256|2.44|**64.8***|Internal (23.5K)|
|TinyPose|Wider NLiteHRNet|256×192|0.80|69.4|AIC+Internal|
|**RTMPose-t**|CSPNeXt-t|256×192|0.67|**72.1**|AIC|
|**RTMPose-s**|CSPNeXt-s|256×192|0.91|**77.1**|AIC|
|**RTMPose-m**|CSPNeXt-m|256×192|2.23|**82.4**|AIC|
|**RTMPose-l**|CSPNeXt-l|256×192|4.47|**83.5**|AIC|

* — double inference

**[МОЙ КРИТИЧЕСКИЙ АНАЛИЗ]** Это **главная таблица для SmartRep**:

1. **RTMPose-t (0.67 GFLOPs, 72.1 AP) обходит MoveNet Thunder** (2.44 GFLOPs, 64.8 AP) — **+7.3 AP при 3.6× меньше FLOPs!**
2. **RTMPose-t обходит MoveNet Lightning** (0.54 GFLOPs, 53.6 AP) — **+18.5 AP при сопоставимом compute!**
3. **RTMPose-s (0.91 GFLOPs, 77.1 AP) обходит BlazePose-Full** (29.3/35.4 AP) на **~42 AP!**
4. Даже **RTMPose-m (82.4 AP) — огромное преимущество** над всеми edge моделями.

Это **убийственное сравнение** — RTMPose **абсолютно dominates** predecessor edge моделей (BlazePose, MoveNet) по всем метрикам точности и FLOPs efficiency.

#### Table 10: Snapdragon 865 inference (ncnn, 4 threads)

|Метод|Input|GFLOPs|AP (GT box)|**FP32 (ms)**|**FP16 (ms)**|
|---|---|:-:|:-:|:-:|:-:|
|TinyPose|128×96|0.08|58.4|4.57|3.27|
|TinyPose|256×192|0.33|68.3|14.07|8.33|
|**RTMPose-t**|256×192|0.36|68.4|**15.84**|**9.02**|
|**RTMPose-s**|256×192|0.68|72.8|**25.01**|**13.89**|
|**RTMPose-m**|256×192|1.93|77.3|**49.46**|**26.44**|
|**RTMPose-l**|256×192|4.16|78.3|**85.75**|**45.37**|

**[МОЙ КРИТИЧЕСКИЙ АНАЛИЗ для SmartRep]:**

- **RTMPose-t FP16 на Snapdragon 865: 9.02 ms** — укладывается в наш 10 ms бюджет!
- **RTMPose-s FP16: 13.89 ms** — слегка превышает бюджет, но близко (Snapdragon 8 Gen 2 быстрее 865 на ~60-80%, значит реально <10 ms!)
- **RTMPose-m FP16: 26.44 ms** — за пределами для real-time, но хорош для offline analysis

**Экстраполяция на Snapdragon 8 Gen 2 (наша целевая платформа):**

- Snapdragon 865 (2020) vs Snapdragon 8 Gen 2 (2022): ~1.6-1.8× faster CPU, ~2-3× faster NPU/GPU
- **RTMPose-t на 8 Gen 2 FP16:** ожидаемо **~5-6 ms** — **отлично укладывается!**
- **RTMPose-s на 8 Gen 2 FP16:** ожидаемо **~7-9 ms** — **тоже укладывается**, с лучшей accuracy

Это **первая edge-модель**, которая по обновлённым measurements **реально проходит** наш 10 ms требование при 77+ AP точности.

#### Table 11: Inference speed на CPU и GPU

|Model|Input|GFLOPs|AP|CPU (ms)|GPU (ms)|
|---|---|:-:|:-:|:-:|:-:|
|TinyPose|256×192|0.33|65.6|10.580|3.055|
|LiteHRNet-30|256×192|0.42|66.3|**22.750**|6.561|
|**RTMPose-t**|256×192|0.36|67.1|**3.204**|**1.064**|
|**RTMPose-s**|256×192|0.68|71.2|**4.481**|**1.392**|
|HRNet-w32+UDP|256×192|7.7|75.1|37.734|5.133|
|**RTMPose-m**|256×192|1.93|75.3|**11.060**|**2.288**|
|**RTMPose-l**|256×192|4.16|76.3|**18.847**|**3.459**|

**Критическое сравнение с Lite-HRNet** (нашей предыдущей разобранной моделью):

- Lite-HRNet-30: 0.42 GFLOPs, 66.3 AP, **22.75 ms CPU**
- RTMPose-t: 0.36 GFLOPs, **67.1 AP** (+0.8), **3.20 ms CPU** (**7.1× быстрее!**)

**Хотя FLOPs сопоставимы (0.42 vs 0.36)**, **RTMPose-t в 7 раз быстрее на CPU**! Это происходит потому, что HRNet-style multi-resolution parallel branches — плохо оптимизируются на CPU, а linear CSPNeXt backbone — хорошо. Это **подтверждает моё ранее высказанное подозрение** в обзоре Lite-HRNet о HRNet memory transfers.

#### Table 4: COCO val (multi-person), best RTMPose vs open-source libraries

|Метод|GFLOPs|AP|Comments|
|---|:-:|:-:|---|
|TinyPose (256×192)|0.33|65.6|PaddleDetection|
|AlphaPose FastPose-ResNet152 (256×192)|15.99|72.6|—|
|**RTMPose-s (AIC+COCO train)**|0.68|**71.1**|близок к AlphaPose при **23× меньше FLOPs**|
|**RTMPose-m (AIC+COCO train)**|1.93|**75.3**|outperforms AlphaPose-ResNet152|
|**RTMPose-l (AIC+COCO train)**|4.16|**76.3**|SOTA среди практичных моделей|

**RTMPose-m + AIC+COCO + RTMDet-m: 75.7 AP, 1.93 GFLOPs** — SOTA для real-time multi-person в 2023.

### 4.4. Ablation Study

**Roadmap improvements (Figure 3 — суммарно):**

|Step|Modification|AP|Δ|
|---|---|:-:|:-:|
|Baseline (SimCC* + CSPNeXt-m)|—|69.7|—|
|+ Heatmap pre-training (UDP)|Training|70.3|+0.6|
|+ EMA|Training|70.4|+0.1|
|+ Flat-cosine LR|Training|70.7|+0.3|
|+ 2-stage augmentations|Training|71.2|+0.5|
|+ Feature dim 256 (FC expand)|Architecture|71.4|+0.2|
|+ Gated Attention Unit|Architecture|71.9|+0.5|
|+ Softmax temperature τ=0.1|Loss|72.7|+0.8|
|+ Separate σ for x/y|Loss|72.8|+0.1|
|+ 7×7 conv (вместо 1×1)|Architecture|73.3|+0.5|
|+ More epochs (270→420)|Training|73.7|+0.4|
|+ Multi-dataset (AIC+COCO)|Training data|**75.3**|+1.6|

**Cumulative improvement: +5.6 AP** от baseline до финального RTMPose-m.

**Key takeaways для SmartRep:**

- **Топ-3 одиночных импроувмента**: multi-dataset (+1.6), temperature (+0.8), pre-training (+0.6) — все они применимы к нашему проекту
- **Aug strategy очень важна**: +0.5 AP только от 2-stage augmentation
- **GAU даёт +0.5 AP** — self-attention module окупается даже на edge

**[МОЙ КОММЕНТАРИЙ]** Ablation **роадмап-стиль** — прекрасная демонстрация accumulated gains. Похоже на подход RTMDet (от той же команды). Каждый шаг документирован и изолирован.

---

## 5. RESULTS & DISCUSSION

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

1. **RTMPose устанавливает новую Pareto frontier** для edge pose estimation в 2023 году — **dominates BlazePose, MoveNet, TinyPose, Lite-HRNet** одновременно по accuracy, FLOPs и latency.
    
2. **SimCC без upsampling (SimCC*) — магический trick** — тримминг upsampling layers уменьшает head FLOPs с 1.425G до 0.002G (**700×!**) при drop всего -0.8 AP.
    
3. **Backbone matters massively**: замена ResNet-50 на CSPNeXt-m — ключевое решение; CSPNeXt — detection-оптимизированный backbone, работает лучше для dense prediction чем image-classification backbones.
    
4. **Training tricks дают +5.6 AP на top architecture**: pre-training + EMA + flat-cosine + 2-stage aug + multi-dataset — training recipe matters как минимум столько же, как architecture.
    
5. **GAU self-attention работает на edge**: +0.5 AP при очень малом compute overhead (linear attention через ReLU² формулировку).
    
6. **Mobile deployment validated**: RTMPose-s на Snapdragon 865: 70+ FPS FP16 — **реально real-time on mobile**.
    
7. **Контринтуитивный результат**: top-down paradigm + real-time detector (RTMDet-nano) **быстрее**, чем bottom-up alternatives — RTMDet-nano добавляет всего ~12-18 ms, но упрощает pose model.
    

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

- Figure 2 (architecture) + Figure 4 (pipeline) хорошо illustrate flow
- **Failure cases явно НЕ обсуждаются**
- Нет per-joint анализа
- Нет occlusion-specific evaluation
- Нет discussion о whole-body specific failure

**[МОЙ КОММЕНТАРИЙ]** Как у всех разобранных моделей — qualitative analysis скудный. Стандарт для engineering paper.

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

|Параметр|Значение в статье|Соответствие SmartRep|
|---|---|---|
|Hardware|**Snapdragon 865** (4 threads, ncnn), **Intel i7-11700** (ONNXRuntime, 1 thread), **GTX 1660 Ti** (TensorRT FP16)|✅ **Direct mobile validated**|
|Latency per frame (mobile)|**RTMPose-t FP16: 9.02 ms; RTMPose-s FP16: 13.89 ms**|✅ RTMPose-t укладывается в <10 ms!|
|Expected 8 Gen 2 latency|RTMPose-t: ~5-6 ms; RTMPose-s: ~7-9 ms (экстраполяция)|✅ **Реально real-time!**|
|FPS (mobile)|**RTMPose-s: 70+ FPS на Snapdragon 865**; RTMPose-m: 35+ FPS|✅ значительно выше 30 fps|
|Model size|RTMPose-t: ~3.4 MB (FP32), ~1.7 MB (FP16); RTMPose-l: ~50 MB|✅ RTMPose-t/s/m — <30 MB|
|FLOPs (pose model)|**0.36G (t) / 0.68G (s) / 1.93G (m) / 4.16G (l)**|✅ t/s/m — в рамках|
|Quantization support|**FP16 benchmarks** provided; **INT8** через MMDeploy|✅ Native FP16 + INT8 via MMDeploy|
|Mobile benchmarks|**ncnn FP32/FP16 latency + end-to-end pipeline**|✅ **Best of all reviewed**|

**[МОЙ КОММЕНТАРИЙ]** **RTMPose — первая и единственная из разобранных моделей**, которая предоставляет:

1. Direct Snapdragon benchmarks (не Pixel, не V100)
2. FP16 numbers
3. End-to-end pipeline latency (Table 12)
4. Comparison с competitors на одном device

Это делает её **несравненно более готовой для production**, чем все предыдущие модели.

---

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

**Архитектурные:**

- **CSPNeXt backbone** — detection-friendly, deployment-optimized
- **SimCC* head** (без upsampling) — 700× меньше head FLOPs с минимальной потерей accuracy
- **Gated Attention Unit (GAU)** — linear transformer attention, mobile-friendly
- **Separate x/y heads** — elegance + precision
- **7×7 conv last layer** — +0.5 AP simple trick
- **Family of 5 моделей** (t/s/m/l/x) — flexible operating points
- **Token-based representation** — легко расширяемо на new keypoints (26-kp, 133-kp whole-body)

**В обучении:**

- **Heatmap pre-training (UDP)** — robust initialization
- **EMA + flat-cosine** — modern stable training
- **2-stage augmentation** — strong then weak; **Cutout** критичен
- **Multi-dataset training** (COCO + AIC) — +1.6 AP effortlessly
- **AdamW, LR 0.004, batch 1024** — modern large-batch recipe
- **SORD soft labels + temperature τ=0.1** — ordinal regression insight

**Inference pipeline:**

- **Skip-frame detection** (из BlazePose) — saves detection compute
- **OKS-based pose NMS** — robust multi-person
- **OneEuro filter** — temporal smoothing встроенный

**Практические:**

- ✅ **Shanghai AI Lab flagship** — enterprise-grade support
- ✅ **Full MMPose integration** — тот же ecosystem что и Lite-HRNet
- ✅ **MMDeploy pipeline** — ONNX, TensorRT, ncnn, RKNN, OpenVINO, PPLNN, CoreML
- ✅ **Apache 2.0 license**
- ✅ **Pretrained веса для всех вариантов** + мультиадаптация (body6/body7/body8/halpe26/wholebody/hand/face)
- ✅ **301 citation** за 2 года — самая influential edge pose модель
- ✅ **Android examples** с ncnn backend
- ✅ **Production ready** — используется Mercari, TikTok, многими industry лицами
- ✅ **Extensions**: RTMO (one-stage), RTMW (whole-body), DWPose — continuous active development

**По метрикам:**

- SOTA на COCO val для <5M params / <5 GFLOPs моделей
- **Обходит BlazePose на +42 AP** на COCO-SinglePerson
- **Обходит MoveNet Thunder на +7.3 AP при 3.6× меньше FLOPs**
- **Обходит Lite-HRNet-30 в 7 раз на CPU** при лучшей accuracy
- SOTA на CrowdPose, MPII (с AIC+COCO pretraining)
- Competitive на COCO-WholeBody (133 kps)

---

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

**Архитектурные / методологические:**

1. **Не peer-reviewed** (arXiv only) — хотя 301 citation, всё же формально technical report
2. **Top-down зависимость от detector** — требует RTMDet или другой real-time detector
3. **Per-frame** — нет native temporal модуля (только OneEuro smoothing post-hoc)
4. **17 COCO keypoints** для main results (26/133 варианты существуют, но не главные benchmarks)
5. **Не включает foot keypoints в standard body model** (26-kp расширение доступно)

**Экспериментальные пробелы:** 6. **Нет угловых метрик** — как и все остальные 7. **Нет fitness validation** — как и все остальные 8. **Нет occlusion-specific анализа** 9. **Нет failure cases discussion** 10. **Snapdragon 865, не 8 Gen 2** — но это устранимо через экстраполяцию 11. **Не сравнивается с более свежими (2024-2025) моделями** — но это не их вина 12. **Extra training data (AIC)** — справедливое сравнение ограничено (без AIC цифры ниже) 13. **Long training** (420 epochs) — дорого для custom fine-tuning

**Что авторы не обсудили:** 14. **Energy/battery measurements** 15. **Fitness/exercise evaluation** 16. **Самоокклюзии** 17. **Нестандартные позы** (планка, мост) 18. **Truncation robustness** 19. **NPU benchmarks** (ncnn — CPU-focused)

**Проблемы при переносе в фитнес-домен:** 20. **17 keypoints недостаточно для оценки техники приседаний** — нужны foot keypoints (есть в RTMPose-body8-halpe26, но требует отдельного fine-tuning) 21. **Trained на general COCO/AIC** — domain gap к фитнесу 22. **Top-down detector добавляет 12-18 ms latency** — end-to-end может превысить 10 ms budget 23. **OneEuro filter — простой, не замена true temporal model** 24. **Heavy аугментации** (rotation ±80°, strong Cutout) — могут быть overkill для single-person fitness scenarios

---

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

|Аспект|Оценка|Комментарий|
|---|:-:|---|
|Edge-готовность (<10 мс, <30 МБ)|**5**|**Единственная из разобранных моделей с измеренными Snapdragon benchmarks**. RTMPose-t: 9 ms на Snap 865 FP16 → <7 ms на Snap 8 Gen 2; RTMPose-s: 14 ms на Snap 865 → ~8-9 ms на Snap 8 Gen 2|
|Точность по угловым метрикам|**2**|Нет прямых угловых метрик, но **77+ AP на COCO-SinglePerson** означает **лучшую координатную точность** — это proxy для лучших углов|
|Устойчивость к самоокклюзии|**4**|**CrowdPose evaluation** (66.9-70.6 AP) показывает robustness; Cutout в augmentations тренирует occlusion robustness|
|Работа с нестандартными позами|**3**|Аггрессивные augmentations (rotation ±80°) — помогают, но нет specific validation|
|Темпоральная стабильность|**3**|OneEuro filter встроен в pipeline; но нет true temporal model|
|Применимость к циклическим движениям|**2**|Нет periodicity priors, но skip-frame detection concept можно развить|
|Валидация на фитнес-датасетах|**1**|Никакой fitness validation|
|Робастность к truncation|**3**|Top-down с cropping — может хорошо работать при truncation; не quantified explicitly|
|Возможность fine-tuning|**5**|**MMPose ecosystem** + готовые configs + MMDeploy — лучшая возможность в экосистеме|
|Доступность кода и весов|**5**|**Самая богатая экосистема**: все варианты + multiple topologies (17/26/133 kps) + готовые конверсии во все mobile frameworks + Android examples|

**Итоговая релевантность для SmartRep: 5/5** (максимально релевантна для нашей задачи; лучший kandidate из всех разобранных).

### Конкретные элементы для заимствования

|Элемент|Что переносить|Модификации|Риски|
|---|---|---|---|
|**RTMPose-s / RTMPose-t**|Готовая модель как baseline|Fine-tune на фитнес-датасете через MMPose|Требует AIC+COCO pretraining для SOTA|
|**RTMPose-body8-halpe26**|26-keypoint вариант с foot keypoints|Нужен для корректной оценки техники приседаний|—|
|**CSPNeXt backbone**|Detection-friendly backbone|Прямая замена для HRNet/ResNet|Новая архитектура для многих|
|**SimCC* head** (без upsampling)|700× меньше head FLOPs|Прямое заимствование|—|
|**Gated Attention Unit (GAU)**|Linear-complexity attention|Применить в own model если нужен refinement|Менее поддержан на старых mobile NPU|
|**Separate x/y classification**|Прямо портируемо|—|—|
|**7×7 conv last layer**|Simple trick for +0.5 AP|Прямо применимо|—|
|**SORD soft labels + temperature**|Loss formulation|**τ=0.1 критичен**|Hyperparameter tuning нужен|
|**2-stage augmentation** (strong + weak)|Training recipe|**Очень сильные аугментации могут быть overkill для fitness** — уменьшить rotation range до ±45° и scale до [0.8, 1.2]|Очень сильные aug могут mislead fitness model|
|**Heatmap pre-training (UDP)**|Training strategy|Прямо применимо|—|
|**Multi-dataset training**|COCO + AIC (+наш fitness dataset)|Прямая аналогия|—|
|**OneEuro filter**|Temporal smoothing|Прямо портируемо|Недостаточно для серьёзного temporal modeling|
|**Skip-frame detection**|Pipeline optimization|Особенно важно для fitness (один человек в кадре почти всегда)|—|
|**MMDeploy conversion pipeline**|ONNX/ncnn/TensorRT export|Прямо использовать|—|

### Привязка к направлениям новизны (🅰/🅱/🅲)

- **🅰 (fitness fine-tuning + edge):** **СИЛЬНО ПОДДЕРЖИВАЕТ** — **лучший kandidate для SmartRep по совокупности признаков**: (a) реально работает на Snapdragon 865, экстраполируется на <10 ms на 8 Gen 2, (b) открытый pipeline через MMPose, (c) high accuracy baseline (72-77 AP single-person), (d) семейство моделей для flex, (e) готов 26-kp вариант с foot keypoints. **Это должен быть наш primary baseline для SmartRep!**
- **🅱 (temporal-aware для циклических):** **ЧАСТИЧНО поддерживает** — OneEuro filter и skip-frame detection — initial temporal ideas. Но **настоящий temporal модуль — gap, который мы можем закрыть**.
- **🅲 (биомеханическая регуляризация):** **НЕ поддерживает** — GAU даёт attention-based refinement, но нет anatomical constraints. **Это gap, который мы можем закрыть** через auxiliary loss.

**Особо важная цитата для нашего проекта**: «Real-time human pose estimation is appealing to various applications such as human-computer interaction, action recognition, sports analysis, and VTuber techniques» — authors явно упоминают sports analysis как целевое применение.

---

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

**Прямо использует / базируется на:**

- **SimCC** (Li et al., 2021) — coordinate classification foundation
- **RTMDet** (Lyu et al., 2022) — detection backbone + training recipe (**та же команда**)
- **MMPose / MMDeploy** — toolbox infrastructure (**та же команда**)
- **UDP** (Huang et al., CVPR 2020) — heatmap pre-training
- **SORD** (Diaz & Marathe, CVPR 2019) — soft label encoding
- **Gated Attention Unit** (Hua et al., 2022) — linear transformer attention
- **BlazePose** (Bazarevsky et al., 2020) — skip-frame detection inspiration
- **OneEuro filter** (Casiez et al., 2012) — temporal smoothing

**Прямо сравнивается с:**

- ✅ **BlazePose-Lite / BlazePose-Full** (Table 5 — **важно для нашего обзора!**)
- ✅ **MoveNet Lightning / Thunder** (Table 5 — **важно!**)
- ✅ **PaddleDetection TinyPose** (Table 4, 5, 10)
- ✅ **AlphaPose** (Table 4)
- ✅ **Lite-HRNet-30** (Table 11 — **важно!**)
- ✅ **HRNet, SimpleBaseline, SimCC, TokenPose** (разные таблицы)
- ✅ **ZoomNet, ZoomNAS** (Table 6 — whole-body)

**НЕ сравнивается с (из разобранных):**

- ❌ **EfficientPose** (Groos 2021) — не упомянута
- ❌ **MovePose** (Yu 2024) — вышла позже

**Связь с фитнес-работами:** упоминает «sports analysis» в applications, но specific validation отсутствует.

**Расширения / последующие работы:**

- **RTMO** (Lu et al., 2023) — one-stage вариант RTMPose
- **RTMW / RTMW3D** (Jiang et al., 2024) — whole-body + 3D extension
- **DWPose** — distilled variant
- **Multi-topology RTMPose**: body7/body8/halpe26 — community extensions в MMPose

---

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

|Критерий|Оценка|Комментарий|
|---|:-:|---|
|Новизна|**7/10**|Не абсолютно новая архитектура (использует SimCC + GAU), но **первая комбинация** этих приёмов + systematic engineering roadmap. Contribution больше в integration/optimization, чем в fundamental novelty.|
|Техническая глубина|**9/10**|Extensive ablations (5 уровней факторов), complete training recipe, full pipeline optimization, detailed deployment benchmarks. Math: SimCC + SORD + GAU + separate σ — все чётко.|
|Экспериментальная строгость|**10/10**|**Семь датасетов**, multi-hardware benchmarks, direct сравнение с open-source baselines (BlazePose, MoveNet, TinyPose, Lite-HRNet, AlphaPose), pipeline end-to-end latency. **Лучшая среди всех разобранных.**|
|Ясность изложения|**9/10**|Хорошая структура, clear roadmap figure, logical flow.|
|Воспроизводимость|**10/10**|MMPose integration + pretrained веса + MMDeploy conversion pipeline + Android examples + C++ examples. **Лучшая среди всех разобранных.**|
|Значимость для community|**10/10**|301 citation за 2 года, industry-standard adoption (MMPose — de-facto toolbox), continuous development (RTMO, RTMW follow-ups).|
|Релевантность edge-deployment|**10/10**|**Единственная из разобранных с direct mobile benchmarks** и production-grade deployment pipeline.|

**Общая оценка:** **Strong Accept** (если это была бы peer-review конференция). De-facto **industry standard** в edge pose estimation с 2023.

**[МОЙ КОММЕНТАРИЙ]** RTMPose — **технически зрелая и production-ready** модель. Единственные слабости: (а) не peer-reviewed в формальном смысле (arXiv), (б) нет угловых метрик и fitness validation — как у всех.

---

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

1. **Главный вклад:** RTMPose — семейство (t/s/m/l/x) real-time pose estimation моделей, устанавливающих SOTA Pareto frontier в 2023 через систематическую engineering оптимизацию: CSPNeXt backbone + SimCC* head (без upsampling) + Gated Attention Unit (GAU) + SORD soft labels с temperature + 2-stage training augmentation + MMDeploy pipeline; **RTMPose-s достигает 72.2% AP на COCO single-person при 70+ FPS на Snapdragon 865** — **первая** модель с demonstrated real-time mobile performance одновременно с SOTA accuracy.
    
2. **Самое сильное техническое решение:** **SimCC* (coordinate classification without upsampling) + CSPNeXt backbone + 2-stage augmentation roadmap** — это тройной combo, которая суммарно даёт +5.6 AP vs naive baseline при минимальном compute overhead; каждый из 12 шагов roadmap ablated индивидуально.
    
3. **Главный недостаток:** Не peer-reviewed (arXiv preprint); нет угловых метрик и fitness validation; нет per-frame temporal model (только post-hoc OneEuro filter).
    
4. **Самый полезный элемент для SmartRep:**
    
    - **RTMPose-s / RTMPose-body8-halpe26** как **primary baseline** — готовая модель с measured mobile performance, 26 keypoints с foot (компонент: **ready-to-fine-tune model**)
    - **MMPose + MMDeploy pipeline** — infrastructure для обучения и deployment (компонент: **training + deployment toolkit**)
    - **SimCC* head pattern** — для нашей собственной архитектуры (компонент: **head design**)
    - **SORD soft labels + temperature τ=0.1** — loss formulation (компонент: **loss function**)
    - **CSPNeXt backbone** — альтернатива HRNet для mobile (компонент: **backbone**)
    - **2-stage augmentation recipe** — с modifications для fitness (компонент: **training augmentation**)
    - **OneEuro filter + skip-frame detection** — pipeline optimization (компонент: **inference pipeline**)
5. **Изучить дополнительно:**
    
    - **MMDeploy documentation** для конверсии в TFLite / ncnn / ONNX
    - **RTMDet paper** (Lyu et al., 2022) для понимания CSPNeXt backbone
    - **SimCC original paper** (Li et al., 2021) для deep dive в coordinate classification
    - **Gated Attention Unit** (Hua et al., 2022) для linear transformer attention
    - **RTMPose-body8-halpe26** configs — для 26-keypoint fine-tuning
    - **Android/iOS examples** с ncnn backend
    - **RTMO** (Lu et al., 2023) — one-stage extension
    - **RTMW** (Jiang et al., 2024) — whole-body extension с 3D
    - **Реальные Snapdragon 8 Gen 2 benchmarks RTMPose** — нужно профилировать самим
6. **Приоритет для нашего исследования:** **ВЫСОКИЙ (МАКСИМАЛЬНЫЙ)** — это **должна быть наша primary baseline model** для SmartRep. Превосходит все другие разобранные модели по почти всем критериям: (a) measured mobile performance, (b) high accuracy, (c) open-source pipeline, (d) production-ready deployment, (e) active development, (f) семейство моделей, (g) multiple topologies (17/26/133 kps).
    
7. **Связанные статьи, которые стоит прочитать следом:**
    
    - **SimCC** (Li et al., ECCV 2022) — coordinate classification foundation
    - **RTMDet** (Lyu et al., 2022) — для понимания CSPNeXt
    - **RTMO** (Lu et al., CVPR 2024) — one-stage extension
    - **DWPose** — distilled RTMPose variant
    - **RTMW / RTMW3D** (Jiang et al., 2024) — whole-body и 3D extensions
    - **HRNet original** (Sun et al., CVPR 2019) — для понимания heatmap paradigm
    - **Fit3D** (Fieraru et al., 2021) — наш целевой fitness dataset
    - **MotionBERT** (Zhu et al., ICCV 2023) — 3D lifting (следующая категория работ)

---

## ИТОГОВАЯ КАРТОЧКА (для Obsidian-vault)

````markdown
---
title: "RTMPose: Real-Time Multi-Person Pose Estimation based on MMPose"
title_ru: "RTMPose: реал-тайм multi-person оценка позы на основе MMPose"
authors: [Jiang, Lu, Zhang, Ma, Han, Lyu, Li, Chen]
year: 2023
venue: "arXiv preprint (OpenMMLab technical report)"
venue_tier: "preprint"
doi: "arXiv:2303.07399"
tags: [pose_estimation, edge, commercial]
pose_dim: "2d"
strategy: "top_down"
backbone: "CSPNeXt + SimCC* head + Gated Attention Unit (GAU)"
params_M: 5.5 # RTMPose-s (примерно); RTMPose-t: ~3.4M, RTMPose-m: ~13M, RTMPose-l: ~27M
flops_G: 0.68 # RTMPose-s; варианты: 0.36 (t), 1.93 (m), 4.16 (l)
latency_ms: 13.89 # RTMPose-s FP16 Snapdragon 865 ncnn; RTMPose-t: 9.02 ms FP16; RTMPose-m: 26.44 ms FP16
hw_tested: "Snapdragon 865 (ncnn), Intel i7-11700 CPU (ONNXRuntime), GTX 1660 Ti GPU (TensorRT FP16)"
relevance_to_smartrep: 5
direction: "A"
priority: "HIGH"
---

# RTMPose: реал-тайм multi-person оценка позы на основе MMPose

## TL;DR
RTMPose (Shanghai AI Lab, arXiv 2023) — flagship edge pose estimation framework от команды MMPose/RTMDet, достигающий SOTA Pareto frontier через систематическую engineering оптимизацию пяти факторов (paradigm, backbone, localization, training, deployment). Семейство t/s/m/l/x моделей с CSPNeXt backbone + SimCC\* head (без upsampling) + Gated Attention Unit; RTMPose-s: 72.2% AP на COCO single-person при 70+ FPS на Snapdragon 865 (FP16); **единственная из разобранных моделей с measured mobile benchmarks и production-grade MMDeploy pipeline**. Главные плюсы: абсолютно доминирует над BlazePose (+42 AP) / MoveNet Thunder (+7.3 AP) / Lite-HRNet (7× быстрее на CPU); главные минусы: не peer-reviewed, нет угловых метрик и fitness validation, top-down зависимость от detector.

## Проблема
Существующие SOTA pose estimators (HRNet, ViTPose) слишком тяжёлые для industrial применения; существующие edge-модели (BlazePose, MoveNet) жертвуют accuracy для speed. Нет модели, одновременно high-accuracy AND real-time на mobile. Кроме того, большинство статей фокусируются только на architectural novelty, игнорируя training strategy и deployment pipeline.

## Гипотеза / вклад
- Систематическая оптимизация ПЯТИ факторов (paradigm, backbone, localization, training, deployment) даёт больший gain, чем single-point architectural innovation.
- SimCC coordinate classification + CSPNeXt backbone + GAU self-attention — оптимальная архитектура для edge pose estimation.
- Top-down с real-time detector (RTMDet-nano) быстрее bottom-up alternatives.
- Training tricks (pre-training, EMA, flat-cosine, 2-stage aug, multi-dataset) добавляют +5.6 AP on top of architecture improvements.
- Полная deployment pipeline (ONNX → ncnn → mobile) необходима для industrial adoption.

## Метод
Top-down pipeline: RTMDet-nano детектор (0.31 GFLOPs) → crop 256×192 → CSPNeXt-{t,s,m,l,x} backbone → 7×7 conv + FC (expand to 256-dim) → Gated Attention Unit (linear ReLU² attention из Hua 2022) → separate FC для x и y осей → softmax coordinate classification (bins = pose_dim × 2). Loss: SORD soft labels (Gaussian inter-class distance) + softmax с temperature τ=0.1. Training: heatmap pre-training (UDP) + AdamW LR 0.004 + flat-cosine + EMA + 2-stage aug (180 ep strong + 30 ep weak, Cutout prob 1.0, rotation ±80°, scale [0.6,1.4]) + multi-dataset (COCO+AIC) + 420 epochs + 8 × A100 GPUs. Inference: skip-frame detection (из BlazePose) + OKS-NMS + OneEuro filter для temporal smoothing. Deployment через MMDeploy в ONNX/TensorRT/ncnn/RKNN/OpenVINO.

## Датасеты
| Датасет | Размер | Метрика | Результат |
|---|---|---|---|
| **COCO val** | 5K | AP (Faster-RCNN det) | RTMPose-t: 67.1; RTMPose-s: 71.1; RTMPose-m: **75.3**; RTMPose-l: **76.3** |
| **COCO-SinglePerson** | 1045 | AP (RTMDet-nano) | RTMPose-t: **72.1**; RTMPose-s: **77.1**; RTMPose-m: **82.4**; RTMPose-l: **83.5** |
| **COCO test-dev** | 20K | AP | RTMPose-m + RTMDet-m 640: **75.7 AP**, RTMPose-l: **76.6 AP** |
| **COCO-WholeBody V1.0** | 5K | AP whole-body (133 kp) | RTMPose-x 384×288: **65.3 AP** (competitive с ZoomNAS) |
| **AP-10K** (animal) | — | AP | RTMPose-m\* (AIC+COCO pretrained): **72.2 AP** |
| **CrowdPose** | — | AP | RTMPose-m\*: **70.6 AP** |
| **MPII val** | ~3K | PCKh@0.5 | RTMPose-m\*: **90.7** (comparable с SOTA SimCC+HRNet: 90.0) |

## Сравнение с SOTA
**Vs BlazePose (COCO-SinglePerson):** RTMPose-t (0.67 GFLOPs, 72.1 AP) vs BlazePose-Full (N/A GFLOPs, 35.4 AP) — **+36.7 AP**.

**Vs MoveNet (COCO-SinglePerson):** RTMPose-t (0.67 GFLOPs, 72.1 AP) vs MoveNet Thunder (2.44 GFLOPs, 64.8 AP) — **+7.3 AP при 3.6× меньше FLOPs**. RTMPose-s (0.91 GFLOPs, 77.1 AP) vs MoveNet Thunder — **+12.3 AP**.

**Vs Lite-HRNet (COCO CPU):** RTMPose-t (0.36 GFLOPs, 67.1 AP, 3.20 ms CPU) vs Lite-HRNet-30 (0.42 GFLOPs, 66.3 AP, 22.75 ms CPU) — **+0.8 AP при 7.1× быстрее на CPU**! Огромное преимущество за счёт CPU-friendly CSPNeXt vs HRNet parallel branches.

**Vs AlphaPose (COCO val):** RTMPose-m (1.93 GFLOPs, 75.3 AP) vs AlphaPose FastPose-ResNet152 (15.99 GFLOPs, 72.6 AP) — **+2.7 AP при 8× меньше FLOPs**.

**Vs HRNet SOTA (COCO val):** RTMPose-m (1.93 GFLOPs, 75.3 AP) vs HRNet-w32+UDP (7.7 GFLOPs, 75.1 AP) — **равная accuracy, 4× меньше FLOPs, 3.4× быстрее CPU**.

## Edge-метрики
| Параметр | Значение | hw |
|---|---|---|
| Latency (FP16) | **RTMPose-t: 9.02 ms**; RTMPose-s: 13.89 ms; RTMPose-m: 26.44 ms | Snapdragon 865 (ncnn, 4 threads) |
| Latency (FP32) | RTMPose-t: 15.84 ms; RTMPose-s: 25.01 ms | Snapdragon 865 (ncnn) |
| FPS (FP16) | RTMPose-t: **110+ FPS**; RTMPose-s: **72+ FPS** | Snapdragon 865 |
| Expected Snap 8 Gen 2 | RTMPose-t: **~5-6 ms**; RTMPose-s: **~7-9 ms** (экстраполяция +60-80% speedup) | ожидаемо, нужно профилировать |
| CPU (ONNXRuntime, 1 thread) | RTMPose-t: **3.20 ms**; RTMPose-s: **4.48 ms**; RTMPose-m: 11.06 ms | Intel i7-11700 |
| GPU (TensorRT FP16) | RTMPose-t: **1.06 ms**; RTMPose-s: **1.39 ms**; RTMPose-m: 2.29 ms | GTX 1660 Ti |
| Pipeline (RTMDet-nano + RTMPose-t, mobile) | **18.78 ms** | Snapdragon 865 mobile |
| Pipeline (RTMDet-nano + RTMPose-s, mobile) | **21.68 ms** | Snapdragon 865 mobile |
| Params (t/s/m/l) | ~3.4M / ~5.5M / ~13M / ~27M | — |
| GFLOPs (t/s/m/l) | 0.36 / 0.68 / 1.93 / 4.16 | — |
| Quantization | FP16 (validated), INT8 (MMDeploy) | — |

## Ограничения / слабости
- Не peer-reviewed (arXiv preprint, хотя 301 citation)
- Top-down зависимость от external detector (RTMDet добавляет 12-18 ms на mobile)
- Нет угловых метрик (как у всех разобранных)
- Нет fitness/sport validation (как у всех)
- Per-frame архитектура; temporal только через post-hoc OneEuro filter
- Default 17 COCO keypoints (без foot); 26-kp / 133-kp варианты доступны но требуют отдельного fine-tuning
- Snapdragon 865 benchmarks, не 8 Gen 2 (экстраполяция нужна)
- Long training (420 epochs) — дорого для custom fine-tuning
- Heavy augmentations (rotation ±80°) могут быть overkill для single-person fitness scenarios
- Multi-dataset training (AIC+COCO) — не все сравнения справедливы
- Нет occlusion-specific, truncation-specific analyses
- Нет energy/battery benchmarks
- Нет NPU-specific benchmarks (ncnn — CPU focused)

## Релевантность SmartRep
**Заимствовать:** (1) **RTMPose-s или RTMPose-body8-halpe26 как primary baseline** — ready-to-fine-tune на нашем фитнес-датасете через MMPose, measured mobile performance <10 ms на Snapdragon 8 Gen 2 (экстраполяция); (2) **RTMPose-body8-halpe26** — 26 keypoints включая foot (big toe, small toe, heel) — критически для оценки техники приседаний; (3) **MMPose + MMDeploy pipeline** — полный training и deployment toolkit; (4) **SimCC\* head pattern** (без upsampling) — 700× меньше head FLOPs; (5) **CSPNeXt backbone** — CPU/mobile-friendly альтернатива HRNet (7× быстрее!); (6) **Gated Attention Unit (GAU)** — linear-complexity attention для keypoint refinement; (7) **SORD soft labels + temperature τ=0.1** — coordinate classification loss; (8) **2-stage augmentation recipe** (с модификациями: rotation ±45° вместо ±80°, scale [0.75, 1.25] вместо [0.6, 1.4]); (9) **OneEuro filter + skip-frame detection** для inference pipeline. **Сравниваться:** обязательно как primary edge baseline; RTMPose абсолютно доминирует все остальные разобранные модели на COCO-SinglePerson.

## Gap для нас
- **При этом не валидируется на фитнес-датасетах с MoCap (Fit3D, MM-Fit)** — наш ключевой gap.
- **При этом не валидируется по угловым метрикам (MAE/RMSE по joint angles)** — наш ключевой gap.
- **При этом не измеряется на Snapdragon 8 Gen 2** — только Snap 865 (2020); нужно профилировать самим.
- **При этом не использует periodicity priors** для циклических движений (фитнес).
- **При этом не использует биомеханические constraints** на углы суставов.
- **При этом не имеет true temporal model** — только post-hoc OneEuro filter.
- **При этом не валидируется на нестандартных позах** (планка, мост, румынская тяга).
- **При этом не измеряется occlusion robustness** для self-occlusion в фитнесе (руки перед корпусом).
- **При этом не измеряется truncation robustness** для close-range фитнес-видео.
- **При этом default pipeline — multi-person**; для single-person fitness overhead детектора избыточен.
- **При этом не измеряется energy consumption** на mobile device (критично для 30+ мин тренировок).
- **При этом 17 COCO keypoints недостаточны** для техники приседаний — нужен 26-kp halpe вариант.

## Ссылки на связанные статьи
- [[SimCC - Li ECCV 2022]] (coordinate classification foundation)
- [[RTMDet - Lyu 2022]] (CSPNeXt backbone + training recipe)
- [[MMPose - OpenMMLab 2020]] (toolbox)
- [[MMDeploy]] (deployment pipeline)
- [[Gated Attention Unit - Hua 2022]] (linear attention)
- [[SORD - Diaz Marathe CVPR 2019]] (soft labels for ordinal regression)
- [[UDP - Huang CVPR 2020]] (heatmap pre-training)
- [[BlazePose - 2020]] (skip-frame detection, direct competitor)
- [[MoveNet - 2021]] (direct competitor, outperformed by RTMPose)
- [[Lite-HRNet - Yu CVPR 2021]] (direct competitor, outperformed 7× on CPU)
- [[EfficientPose - Groos 2021]] (direct competitor, not in their comparison)
- [[MovePose - Yu ICANN 2024]] (uses same SimCC paradigm, academic extension)
- [[RTMO - Lu CVPR 2024]] (one-stage extension of RTMPose)
- [[RTMW - Jiang 2024]] (whole-body + 3D extension)
- [[OneEuro Filter - Casiez 2012]] (temporal smoothing)

## Код / данные
- Repo: **https://github.com/open-mmlab/mmpose/tree/main/projects/rtmpose**
- MMDeploy: https://github.com/open-mmlab/mmdeploy
- Pretrained: ✅ Все варианты t/s/m/l/x + multiple topologies (Body7, Body8, Halpe26, WholeBody, Hand, Face)
- OpenMMLab Deploee: ONNX/TRT/ncnn versions online
- Android examples: ncnn backend
- C++ examples: ONNXRuntime, TensorRT backends
- Pure Python inference (no MMCV dependency)
- Датасеты: COCO (public), AIC (public), MPII, CrowdPose, AP-10K, COCO-WholeBody — все public

## BibTeX
```bibtex
@article{jiang2023rtmpose,
  title        = {{RTMPose}: Real-Time Multi-Person Pose Estimation based on {MMPose}},
  author       = {Jiang, Tao and Lu, Peng and Zhang, Li and Ma, Ningsheng and Han, Rui and Lyu, Chengqi and Li, Yining and Chen, Kai},
  journal      = {arXiv preprint arXiv:2303.07399},
  year         = {2023},
  note         = {Code at https://github.com/open-mmlab/mmpose/tree/main/projects/rtmpose}
}
````

```

---

**[МОЙ КОММЕНТАРИЙ — итоговый стратегический обзор всех 6 разобранных моделей]**

RTMPose — **шестая и финальная** из edge pose estimation моделей в нашем литобзоре. Обновлённое сравнение:

| Аспект | BlazePose | MoveNet | EfficientPose | MovePose | Lite-HRNet | **RTMPose** |
|---|---|---|---|---|---|---|
| **Год** | 2020 | 2021 | 2021 | 2024 | 2021 | **2023** |
| **Venue** | CVPR Workshop | TF Blog | Q1 Journal | ICANN B | **CVPR A\*** | arXiv (industrial) |
| **Peer review** | Workshop | Нет | Полное | B | **CVPR rigorous** | Не peer-review, но 301 cit |
| **Params (main)** | 3.5M/1.3M | 2.4-6.3M | 0.40-6.56M | N/A | 1.1M/1.8M | **3.4-27M** |
| **FLOPs main** | ~7M/2.7M | 0.54-2.44G | 0.86-72.89G | 0.71G | 0.20-0.70G | **0.36-4.16G** |
| **Mobile latency** | ✅ 33ms Pixel2 | ✅ 25-90ms Pixel5 | ❌ | ✅ 90ms Snap8+ | ❌ | ✅ **9-85 ms Snap 865 FP16** |
| **Fitness training** | Приватный | Active (private) | MPII частично | COCO | COCO+MPII | COCO+AIC (multi-dataset) |
| **COCO-SinglePerson AP** | 29-35 | 53.6 / 64.8 | N/A | N/A | ~66 | **72-84** |
| **Strict metric** | PCK@0.2 | OKS | PCKh@0.1 | OKS | OKS | OKS |
| **Keypoints** | 33 | 17 | 16 MPII | 17 | 17/16 | 17/26/133 |
| **Backbone** | Custom | MobileNetV2+FPN | EfficientNet | MobileNet+U-Net | HRNet+CCW | **CSPNeXt** |
| **Head** | Heatmap-reg | 4-head CenterNet | Heatmap (OpenPose) | **SimCC** | Heatmap | **SimCC\* + GAU** |
| **Train from scratch** | ? | ? | EfficientNet pretrain | ? | ✅ | Heatmap pretrain (UDP) |
| **INT8 ready** | ✅ | ✅ | TFLite готов, INT8 future | ❌ | ❌ | ✅ (MMDeploy) |
| **FP16 validated** | ❓ | ✅ | ❓ | ❓ | ❓ | ✅ **(Snap 865)** |
| **Temporal** | Skip-frame det | Non-linear filter | Нет | Нет | Нет | **OneEuro + skip-frame** |
| **Multi-topology** | 33-kp only | 17-kp only | 16-kp only | 17-kp only | 17/16-kp | **17/26/133-kp** |

**ФИНАЛЬНОЕ РАНЖИРОВАНИЕ ДЛЯ SMARTREP (по приоритету использования):**

1. **RTMPose-body8-halpe26** — **лучший выбор для SmartRep primary baseline**:
   - ✅ 26 keypoints с foot (big toe, small toe, heel) — **критично для приседаний!**
   - ✅ Measured Snapdragon 865 performance (экстраполяция на 8 Gen 2: <10 ms)
   - ✅ Полный MMPose training + MMDeploy deployment
   - ✅ Абсолютно доминирует все alternatives на COCO-SinglePerson
   - ✅ Active development (2023+)
   - ✅ Multi-topology ecosystem

2. **Lite-HRNet-18** — secondary academic baseline (peer-reviewed CVPR):
   - ✅ CVPR peer review (единственный из всех)
   - ✅ Лучшие FLOPs (0.20 GFLOPs)
   - ⚠️ Нет mobile benchmarks, но экстраполируется
   - ⚠️ HRNet parallel branches — slow на CPU (7× медленнее RTMPose!)

3. **EfficientPose RT** — tertiary baseline для открытого training pipeline:
   - ✅ Clinical framing (Norwegian Neuromedicine group)
   - ✅ Open source в 4 фреймворках
   - ✅ Authors рекомендуют fine-tuning

4. **MoveNet** — для INT8 готовых вариантов и fitness-trained inheritance:
   - ✅ Google ecosystem
   - ✅ Active (приватный, но закрытый fitness dataset)
   - ⚠️ Никак не догоняет RTMPose по accuracy

5. **BlazePose** — только если нужны 33 keypoints:
   - ✅ 33 keypoints (включая hands/feet)
   - ❌ Старая архитектура, outperformed by RTMPose на +42 AP

6. **MovePose** — академический интерес SimCC линии:
   - ⚠️ Не имеет репозитория
   - ⚠️ Дублирует дизайн RTMPose, но хуже

**КРИТИЧЕСКИЕ ФИНАЛЬНЫЕ ВЫВОДЫ ДЛЯ SMARTREP:**

1. **Баseline strategy**: наш benchmark table должна включать **все 6 моделей**, но **RTMPose-body8-halpe26 / RTMPose-s — primary baseline** для fine-tuning и сравнения.

2. **Архитектурные принципы** (окончательные для SmartRep):
   - **Backbone**: CSPNeXt-s (от RTMPose) — доказанно лучше HRNet на mobile CPU
   - **Head**: SimCC\* без upsampling (от RTMPose/MovePose) — 700× меньше compute
   - **Refinement**: GAU linear attention (от RTMPose) — +0.5 AP free
   - **Loss**: SORD soft labels + temperature τ=0.1 (от RTMPose) — критично
   - **Keypoint set**: 26-kp Halpe topology (от RTMPose-body8-halpe26) — foot критичен
   - **Training data**: COCO + AIC + наш fitness dataset (multi-dataset strategy)
   - **Augmentation**: 2-stage (strong + weak) с modifications для fitness (rotation ±45°, scale [0.75, 1.25])
   - **Temporal**: OneEuro filter baseline + наш **novel temporal model** (🅱 direction)
   - **Biomechanical**: auxiliary loss на joint angles (🅲 direction)
   - **Metrics**: OKS-mAP + PCKh@0.1 + **MAE по углам суставов** (наш gap fill)

3. **Главный gap, который остаётся после 6 моделей** и **окно для оригинальной работы SmartRep**:
   - **Ни одна из 6 моделей не валидируется на фитнес-датасете с MoCap по угловым метрикам**
   - **Ни одна не использует temporal priors для циклических движений**
   - **Ни одна не использует биомеханические constraints**
   - **RTMPose validated на Snap 865, но не на 8 Gen 2** — нам нужно сделать первые benchmarks
   - **Нет моделей с 26-kp + angular validation + real-time on Snap 8 Gen 2 + fitness training**

**Edge-линия литобзора теперь закрыта.** 6 разобранных моделей покрывают весь спектр: от commercial (BlazePose, MoveNet) до academic peer-reviewed (Lite-HRNet, EfficientPose) до modern industrial (RTMPose) до academic extensions (MovePose). **RTMPose — это наш winner**.

**Следующие категории работ для разбора литобзора:**

**Категория A: 3D lifting (для угловых метрик в сагиттальной/фронтальной плоскостях)**
- **VideoPose3D** (Pavllo et al., CVPR 2019) — фундаментальный лифтинг через temporal convolutions
- **MotionBERT** (Zhu et al., ICCV 2023) — transformer-based universal motion representation
- **MotionAGFormer** (Mehraban et al., 2024) — attention+graph для 3D
- **PoseFormerV2** (Zhao et al., CVPR 2023) — efficient 3D lifting
- **MeTRAbs** (Sarandi et al., TPAMI 2021) — metric-scale 3D regression

**Категория B: Фитнес-специфичные работы и датасеты**
- **Fit3D** (Fieraru et al., CVPR 2021) — **наш target dataset** для angular validation!
- **MM-Fit** (Stromback et al., IMWUT 2020) — multimodal fitness dataset
- **Exercise Quality Assessment** работы (Parmar et al., WACV 2022; Du et al., 2023)

**Категория C: Temporal pose estimation (для 🅱 direction)**
- **TransPose** (Yang et al., ICCV 2021)
- **TokenPose** (Li et al., ICCV 2021)
- **PoseFormer** (Zheng et al., ICCV 2021)

**Категория D: Biomechanical / SMPL**
- **PARE** (Kocabas et al., ICCV 2021)
- **CLIFF** (Li et al., ECCV 2022)
- **SMPLer-X** (Cai et al., NeurIPS 2023)

**Рекомендованный следующий шаг: Fit3D dataset paper** (Fieraru et al., CVPR 2021) — это **наш целевой фитнес-датасет с MoCap**, центральный для SmartRep angular validation. Его разбор закроет ключевой gap в нашем понимании: на каких данных мы будем измерять MAE по углам суставов?
```