

---

## title: "Counting Out Time: Class Agnostic Video Repetition Counting in the Wild" title_ru: "Подсчет времени: Классово-независимый подсчет повторений в произвольных видео (RepNet)" authors: [Dwibedi, Aytar, Jathan, Sermanet] year: 2020 venue: "CVPR" venue_tier: "A*" doi: "10.1109/CVPR42600.2020.01343" tags: [rep_counting, temporal_cnn, motion_representation, edge, distillation] relevance_to_smartrep: 5 params: "~26M (Base with ResNet-50)" flops: "не указано (высокая сложность из-за $O(N^2)$ матрицы сходства)"

# Подсчет времени: Классово-независимый подсчет повторений в произвольных видео (RepNet)

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

Статья представляет RepNet — архитектуру для подсчета повторений, основанную на вычислении пофреймовых матриц самоподобия (TSM). Модель обучается предсказывать наличие повторений и длину периода для каждого кадра, что позволяет работать с видео любой длины и переменным темпом. Ключевой результат — создание датасета Countix и достижение SOTA в задачах автоматического подсчета повторений «в диких условиях».

## Проблема

Авторы решают задачу подсчета циклических действий (фитнес, производство, биологические процессы) в неразмеченных видео. Основные сложности: вариативность ракурсов, разный темп выполнения внутри одного видео, отсутствие четких границ начала и конца цикла, а также необходимость универсальности (одна модель для всех типов упражнений).

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

- **Матрицы временного самоподобия (TSM):** Использование попарного сходства признаков между кадрами для визуализации периодичности.
    
- **Классово-независимый подход:** Модель не учит конкретные действия, а ищет саму структуру «повторяемости» в пространстве признаков.
    
- **Синтетические данные:** Обучение на синтетически созданных повторениях (ускорение, замедление, зацикливание обычных видео) позволяет модели обобщаться на реальные данные без огромной ручной разметки.
    
- **Датасет Countix:** Крупнейший на момент выхода датасет для Rep Counting (на основе Kinetics).
    

## Метод (Temporal Modeling)

1. **Как кодируется пространственная информация (spatial)?**
    
    Используется стандартный **ResNet-50**, предобученный на ImageNet или Kinetics. Каждый кадр пропускается через backbone для получения вектора признаков (embedding).
    
2. **Как моделируется время (temporal: GCN, Attention, 1D/3D Conv, SSM)?**
    
    Используется механизм **Temporal Self-Similarity Matrix (TSM)**. Для окна из $N$ кадров вычисляется матрица сходства $N \times N$, где каждый элемент $(i, j)$ — это косинусное расстояние или евклидова метрика между признаками кадра $i$ и кадра $j$. Полученная матрица обрабатывается 2D-свертками, которые распознают диагональные паттерны, характерные для периодических процессов.
    
3. **Как объединяются признаки?**
    
    После сверток над TSM модель использует два заголовка (heads):
    
    - **Per-frame period:** классификация текущей длины периода (в кадрах).
        
    - **Per-frame repetitiveness:** бинарная классификация (является ли текущий момент частью повторения).
        
        Итоговый счет получается интегрированием предсказанной частоты по времени.
        

## Вычислительная сложность и Edge-потенциал

В оригинальном виде RepNet **тяжеловат для Edge**:

- **Backbone:** ResNet-50 потребляет слишком много ресурсов для real-time на Jetson (нужна замена на наш SOFIA или MobileNetV3).
    
- **TSM Bottleneck:** Вычисление матрицы $N \times N$ требует квадратичного времени от длины окна. Для окна в 64 кадра это 4096 вычислений сходства на каждый шаг инференса.
    
- **Оптимизация:** Модель отлично подходит для **дистилляции**. Мы можем использовать RepNet как Teacher для обучения нашей легкой модели на основе Mamba, которая будет имитировать выходы TSM-головы без явного вычисления всей матрицы.
    

## Датасеты и метрики

|**Датасет**|**Домен**|**Метрика**|**Результат модели**|
|---|---|---|---|
|Countix|Общее (фитнес/быт)|OBO (Off-By-One)|0.89|
|Countix|Общее|MAE (Mean Abs Error)|0.42|
|UCF Rep|Спорт/Общее|OBO|0.94|

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

RepNet значительно превосходит методы на основе RNN и оптического потока. Основное преимущество — устойчивость к изменению скорости движения (non-stationary period) за счет того, что свертки над TSM видят локальные изменения темпа.

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

- **Окно наблюдения:** Точность падает, если период повторения больше, чем выбранное окно (напр. очень медленные приседания).
    
- **Дрожание камеры:** Резкие движения камеры могут разрушить матрицу сходства, так как признаки кадров станут слишком разными.
    
- **Отсутствие анализа техники:** Модель считает повторения, но не «понимает», правильное ли это движение с точки зрения биомеханики.
    

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

**Оценка: 5.** Это фундаментальная работа для нашего модуля подсчета повторений.

- **Заимствование:** Мы можем использовать концепцию TSM для визуализации циклов и лосс-функцию для предсказания периода.
    
- **Интеграция:** RepNet может стать частью нашего 3-фазного плана как «золотой стандарт» (Teacher) для обучения Student-модели.
    

## Gap для нас

- **Backbone Gap:** RepNet использует стандартные CNN, которые не учитывают скелетную топологию. Наша ниша — объединить TSM-подход со скелетным GCN (SOFIA).
    
- **Биомеханическая сегментация:** RepNet дает «длину периода», но не разделяет её на **фазу концентрики** и **фазу эксцентрики**. Нам нужно добавить в декодер сегментацию этих под-фаз.
    
- **Edge Efficiency:** Прямой инференс RepNet на Jetson Orin NX не даст 30 FPS при сохранении точности. Требуется переход к линейной сложности по времени (SSM/Mamba).
    

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

- Улучшение точности через трансформеры: [[TransRAC]].
    
- Скелетные подходы: [[PoseRAC]].
    
- Датасеты: [[Countix]], [[Kinetics]].
    

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

- Repo: [https://github.com/google-research/google-research/tree/master/repnet](https://github.com/google-research/google-research/tree/master/repnet)
    
- Pretrained: Да (TensorFlow/Keras).
    
- Отношение к нашим данным: Работает с RGB. Для SmartRep логично подавать на вход не всё изображение, а кроп атлета или даже стек heatmap-ов (как в [[PoseConv3D]]).
    

## Цитата (BibTeX)

Code snippet

```
@inproceedings{dwibedi2020counting,
  title={Counting out time: Class agnostic video repetition counting in the wild},
  author={Dwibedi, Debidatta and Aytar, Yusuf and Jathan, Jonathan and Sermanet, Pierre},
  booktitle={Proceedings of the IEEE/CVF conference on computer vision and pattern recognition},
  pages={10341--10350},
  year={2020}
}
```