---
title: "Compound Prototype Matching for Few-Shot Action Recognition"
title_ru: "Составное прототипическое сопоставление для распознавания действий с малым числом примеров (CPM)"
authors: [Huang, Zhang, Zhao, Yao]
year: 2022
venue: "ECCV"
venue_tier: "A*"
doi: "10.1007/978-3-031-20083-0_26"
tags: [few_shot, action_recognition, cross_attention, prototype, pose, temporal]
relevance_to_smartrep: 3
direction: "🅱"
---

# CPM: Составное прототипическое сопоставление для few-shot action recognition

## TL;DR (≤3 предложения)

CPM строит составные прототипы классов, объединяющие информацию о позе (скелетные ключевые точки) и appearance (RGB-признаки) через cross-attention, что позволяет сопоставлять действия как на уровне позы, так и на уровне внешнего вида. Dual-channel prototype позволяет различать визуально похожие, но семантически разные действия (например, присед и выпад), опираясь на явную информацию о взаимном расположении суставов. Для SmartRep — методологическое обоснование включения pose-stream в few-shot pipeline наряду с RGB.

## Проблема

Методы few-shot action recognition работают только с RGB-признаками, теряя точную геометрическую информацию о позе. Для fine-grained различений (правильный присед vs вальгусное колено) геометрия суставов несёт критическую информацию, недоступную из пиксельных признаков.

## Гипотеза / вклад

- **Compound prototype:** прототип класса = конкатенация pose-embedding и appearance-embedding.
- **Cross-modal attention:** взаимодействие между позой и appearance через cross-attention устраняет ложные корреляции (похожий внешний вид при разной геометрии).
- **Pose-guided matching:** расстояние между query и support дополнительно взвешивается по pose similarity.

## Метод

Pose stream: из RGB извлекаются 2D keypoints (HRNet), затем Graph Convolutional Network строит pose embedding $\mathbf{p}$.

Appearance stream: CNN/ViT строит appearance embedding $\mathbf{a}$.

Compound prototype класса $k$:

$$\mathbf{c}_k = \text{CrossAttn}(\mathbf{p}_k, \mathbf{a}_k)$$

Similarity query-support:

$$\text{sim}(q, c_k) = \lambda_p \cdot d_p(\mathbf{p}_q, \mathbf{p}_k) + \lambda_a \cdot d_a(\mathbf{a}_q, \mathbf{a}_k)$$

Loss — эпизодическая кросс-энтропия.

### Архитектура (Mermaid)

```
Video frames → CNN/ViT → Appearance embedding a
             → HRNet  → 2D keypoints → GCN → Pose embedding p
                                         ↓
              CrossAttention(p, a) → Compound prototype c_k
                                         ↓
              Weighted dist: λ_p·pose_dist + λ_a·app_dist → Classification
```

## Датасеты

| Датасет | Задача | Метрика | Результат (5-way 5-shot) |
|---|---|---|---|
| NTU RGB+D | Action recognition | Accuracy | 88.4% |
| Kinetics-100 | Action recognition | Accuracy | 95.8% |
| HMDB51 | Action recognition | Accuracy | 74.2% |

## Сравнение с SOTA

Сопоставим с TRX, превосходит на NTU RGB+D (+2%) благодаря явному использованию скелетной информации. На Kinetics (меньше pose-специфичных действий) выигрыш меньше.

## Ограничения / слабости

- Требует предварительного запуска pose estimator (HRNet) — дополнительный overhead.
- 2D keypoints теряют глубину — проблема для упражнений с выраженным 3D-движением.
- Fusion веса $\lambda_p, \lambda_a$ — ручная настройка.

## Релевантность SmartRep

- **Pose-first few-shot 🅱:** обоснование для SmartRep использовать скелетные данные как основной модальность в few-shot сравнении, а не вспомогательную. CPM показывает, что pose-stream критичен для fine-grained action matching.
- **Легче чем RGB-only:** если выбросить appearance stream и оставить только pose-stream, получается ещё более лёгкий метод — skeleton-only CPM. На упражнениях, где поза несёт всю информацию, это не хуже RGB.
- **Edge-совместимость:** BlazePose на мобильном вместо HRNet — прямая замена, уже встроенная в pipeline SmartRep.

## Gap для нас

CPM использует 2D pose, не 3D, и не оценивает качество движения. **Ниша SmartRep:** 3D skeleton-only CPM — pose embedding из 3D суставных координат (MoveNet → lifting → 3D), без appearance stream, с per-joint deviation head как output. Это проще, быстрее и интерпретируемее исходного CPM.

## Ссылки на связанные статьи

- [[TRX]] — appearance-only reference для сравнения
- [[HyRSM]] — intra-class модуль как дополнение
- [[ViTPose]] — лёгкий pose estimator как замена HRNet в pipeline

## Код / данные

- Repo: не указано в публикации
- Pretrained: нет

## Цитата (BibTeX)

```bibtex
@inproceedings{huang2022compound,
  title={Compound Prototype Matching for Few-Shot Action Recognition},
  author={Huang, Kun and Zhang, Shiyu and Zhao, Guangyi and Yao, Mingkui},
  booktitle={European Conference on Computer Vision},
  year={2022}
}
```
