Компьютерное зрение

Video Understanding

Ребёнок 4 лет смотрит, как кошка крадётся к птице, и мгновенно понимает: 'охотится'. То же самое видит видеомодель 2014 года - и предсказывает 'sitting cat' с уверенностью 0.7. Разница не в кадрах - они одинаковые. Разница в способности видеть последовательность как историю, а не как набор фотографий. С 2014 по 2023 годы video understanding прошёл от 'усреднения по кадрам' через 3D-свёртки, Two-Stream и SlowFast к Video Transformers с 90%+ точности на Kinetics - и всё ещё далеко от ребёнка.

  • **TikTok content moderation**: каждый загруженный ролик прогоняется через action recognition в реальном времени - детектирование запрещённого контента (насилие, opium use) требует понимания action, а не только объектов в кадре
  • **Спорт-аналитика (Hudl, Stats Perform)**: автоматическая разметка футбольных матчей - тысячи действий ('pass', 'tackle', 'shot') классифицируются и tracking игроков восстанавливает игровую динамику для тренеров
  • **Робототехника и автономные автомобили**: предсказание траектории пешехода требует понимания его текущего действия ('walking' vs 'about to cross') - вход для downstream-планировщиков

Предварительные знания

  • Свёрточные сети и ViT: 2D-свёртки, attention, токенизация патчами
  • Object detection: YOLO/DETR, bounding box, IoU - база для tracking-by-detection
  • Венгерский алгоритм и фильтр Калмана на уровне идеи (для секции трекинга)
  • Понятие градиента яркости и численного интегрирования (для оптического потока)
  • Vision Transformers
  • Object Detection: YOLO, DETR

Десять лет video understanding: от Two-Stream до Video Transformers

Современное распознавание действий началось в 2014 году, когда Karen Simonyan и Andrew Zisserman из Oxford предложили two-stream-сети: одна ветка читает RGB-кадры (что в кадре), вторая - стек оптического потока (как оно движется). В 2015 году Du Tran с соавторами из Facebook представили C3D - первые 3D-свёртки, обучающие пространство и время вместе. Прорыв по данным случился в 2017 году: João Carreira и Andrew Zisserman из DeepMind выпустили I3D вместе с датасетом Kinetics, и приём 'inflation' (раздувание 2D-весов ImageNet в 3D-ядра) задал стандарт на годы. В 2019 году SlowFast от Christoph Feichtenhofer перенёс в архитектуру биологическую идею медленного и быстрого зрительных путей. Наконец, в 2021 году пришли видео-трансформеры - TimeSformer (Facebook) и ViViT (Google) применили self-attention к space-time токенам, а позже VideoMAE довёл точность на Kinetics-400 выше 90% Top-1.

Распознавание действий

Кадр с фигурой человека и поднятой рукой - это машет рукой, бросает мяч или бьёт в волейболе? Один кадр не отвечает на этот вопрос, нужна последовательность из 16-64 кадров. Задача **action recognition** - классифицировать видеоклип по таксономии действий (Kinetics-400 включает 400 классов от 'eating spaghetti' до 'welding'). Базовые архитектуры: (1) 2D CNN кадр за кадром + усреднение - грубо, теряет порядок; (2) Two-stream (Simonyan & Zisserman, 2014) - одна ветка обрабатывает RGB-кадры, вторая - стек оптического потока; (3) 3D CNN (C3D, I3D) - свёртки в трёх измерениях (x, y, t); (4) Video Transformers (TimeSformer, ViViT) - attention по space-time токенам.

Бенчмарки: Kinetics-400/700 (короткие клипы, 10 с, классификация одного действия), Something-Something v2 (учит понимать как именно объект движется - 'putting smth into smth' vs 'taking smth out'), AVA (атомарные действия в кино с временной локализацией). Метрики: Top-1/Top-5 accuracy для классификации, mAP для detection. Современный SOTA на Kinetics-400 - VideoMAE V2 (Masked Autoencoder для видео) >90% Top-1; в 2014 году Two-Stream давал ~65%.

Почему усреднение предсказаний 2D CNN по отдельным кадрам - плохой baseline для action recognition?

Моделирование времени

Главный вопрос видео-архитектур: как смешивать информацию между кадрами. Три семейства подходов. **3D-свёртки** (I3D, C3D) - простой и универсальный путь, но дорогой: 3D-ядро 3x3x3 = 27 параметров, плюс затратно по FLOPs. **Two-Stream** - явное разделение пространства (RGB) и движения (optical flow), требует pre-computed потока. **Video Transformers** (TimeSformer 2021, ViViT 2021) - применяют self-attention на токены space-time. Divided attention: сначала temporal attention для каждой spatial-позиции, затем spatial attention для каждого временного шага - дешевле, чем full joint attention.

SlowFast (Feichtenhofer et al., 2019) - инсайт из биологии: в зрительной системе млекопитающих 80% клеток сетчатки P-клетки (медленные, цветовые) и 20% M-клетки (быстрые, движение). Архитектура: Slow-pathway обрабатывает 4 кадра в секунду с большим числом каналов (детали), Fast-pathway - 32 кадра в секунду с уменьшенным числом каналов (движение). Lateral connections от Fast к Slow на каждом стейдже. SOTA на Kinetics в 2019-2021 при меньших FLOPs, чем чистый I3D.

Почему divided attention в TimeSformer считают компромиссом, а не строгим улучшением full joint attention?

Отслеживание объектов

**Object tracking** - задача поддерживать одинаковый идентификатор для одного и того же объекта через серию кадров. Single-Object Tracking (SOT): дан bounding box на первом кадре, найти этот же объект в каждом следующем. Multi-Object Tracking (MOT): детектировать все объекты на каждом кадре и поддерживать стабильные ID. Канонический подход MOT - **tracking-by-detection**: запустить детектор (YOLO, DETR) на каждом кадре, потом ассоциировать детекции между кадрами через Hungarian algorithm по IoU + appearance embedding.

SORT (Simple Online Realtime Tracking, 2016) - канонический baseline: детектор + Kalman filter для предсказания где объект будет в следующем кадре + Hungarian matching по IoU. Работает на 260 FPS, но плохо переживает occlusions (когда объект скрывается за другим). DeepSORT (2017) добавляет appearance embedding - cosine similarity между ReID-фичами. ByteTrack (2022, ECCV) - инсайт: использовать также low-confidence детекции для матчинга; пропущенный объект часто детектируется со score 0.3 вместо отбрасывания >0.5. ByteTrack SOTA на MOT17/MOT20 при минимальной сложности.

Почему ByteTrack использует low-confidence детекции (score 0.1-0.5) для матчинга, тогда как SORT их отбрасывает?

Оптический поток

**Оптический поток** - вектор смещения каждого пикселя между двумя последовательными кадрами. Для кадра 480x640 пикселей результат - тензор 480x640x2 (dx, dy для каждого пикселя). Классические методы (Lucas-Kanade, Horn-Schunck) формулируют задачу как оптимизацию: найти поток, который минимизирует разность между warped первым кадром и вторым кадром, при ограничении гладкости потока. Современные нейросетевые подходы (FlowNet 2015, RAFT 2020) обучаются end-to-end на синтетических данных (FlyingChairs, Sintel) и достигают качества на порядок выше.

RAFT (Recurrent All-pairs Field Transforms, ECCV 2020 Best Paper) - современный SOTA: (1) считает all-pairs корреляционный объём между фичами кадра 1 и кадра 2; (2) итеративно обновляет flow field через ConvGRU, lookup'я correlation в каждой итерации; (3) ~12 итераций для финального результата. Размер модели ~5M параметров, EPE (End-Point Error) ~1 пиксель на KITTI - в 3-4 раза точнее FlowNet 2.0. Применения: video stabilization, video super-resolution, action recognition (вход для two-stream сетей), robotics (visual odometry).

Оптический поток - это просто разность пикселей между кадрами

Оптический поток - векторное поле перемещений с двумя фундаментальными ограничениями: brightness constancy (один и тот же объект имеет постоянную яркость) и spatial smoothness (соседние пиксели движутся согласованно)

Простая разность кадров детектирует изменения, но не отвечает 'куда переместился пиксель'. Aperture problem (через узкое окно невозможно определить движение однородной области вдоль её края) делает задачу принципиально ill-posed без дополнительных ограничений или нейросетевых priors.

Зачем RAFT использует итеративные обновления flow вместо одного forward-pass предсказания?

Ключевые идеи

  • **Action recognition** требует моделирования времени; усреднение per-frame 2D CNN не отличает 'opening' от 'closing' - нужны 3D-свёртки, Two-Stream или Video Transformers
  • **SlowFast** - биологически-вдохновлённая архитектура с медленной (color) и быстрой (motion) ветками; SOTA при экономии FLOPs
  • **Tracking-by-detection** (SORT, DeepSORT, ByteTrack) - канонический подход MOT; ByteTrack добавляет low-confidence детекции для сохранения ID через короткие occlusions
  • **Оптический поток** даёт плотное векторное поле смещений; RAFT с итеративным обновлением и all-pairs correlation - современный SOTA

Связанные темы

Ребёнок из вступления опознаёт охоту кошки за секунды - и это требует видеть последовательность как связную историю. Video understanding строится поверх классической CV для одиночных кадров, добавляя временную ось, и связан с несколькими направлениями:

  • 3D Reconstruction и NeRF — Neural Radiance Fields и Gaussian Splatting обрабатывают серии фото - близко к видео, но без времени; динамические расширения (D-NeRF, 4DGS) добавляют t как четвёртую координату
  • Object Detection — Tracking-by-detection требует надёжного детектора (YOLO, DETR) на каждом кадре; качество tracking ограничено качеством детекций
  • Attention и Transformers — Video Transformers (TimeSformer, ViViT) - прямое расширение ViT на 4D-токены space-time; divided attention - инженерный приём для квадратичной сложности self-attention

Вопросы для размышления

  • Ребёнок из вступления понимает 'охоту' из 1 секунды видео. Video Transformers требуют 16-64 кадра для хорошей классификации. Что эта разница говорит о текущих ограничениях deep learning?
  • Оптический поток (RAFT) и видео-классификация (TimeSformer) обучаются на разных датасетах: синтетические FlyingChairs vs реальный Kinetics. Можно ли совместить эти задачи через мультитаск-обучение, и какие потенциальные выигрыши/риски?
  • ByteTrack экономит на low-confidence детекциях, чтобы сохранить треки. Какие классы объектов будут систематически терять этот эффект (подсказка: что про детектор?), и как это влияет на real-world применения (autonomous driving)?

Связанные уроки

  • cv-05 — ViT - основа для video transformer (TimeSformer, VideoMAE)
  • cv-15 — Tracking строится поверх video detection из этого урока
  • ml-31-transformers — Temporal attention - расширение spatial attention для video
  • dsp-06 — Optical flow - это дискретная аппроксимация непрерывного поля скорости, как в обработке сигналов
  • la-01-vectors-intro
Video Understanding

0

1

Войти