1. Основы видеоаналитики и специфика обработки временных данных в компьютерном зрении
Основы видеоаналитики и специфика обработки временных данных в компьютерном зрении
Если вы покажете человеку фотографию летящего футбольного мяча, он легко определит его положение в пространстве. Но если вы спросите, забьет ли игрок гол, статичного кадра будет недостаточно. Нам нужно знать вектор движения, ускорение и то, как менялась сцена за доли секунды до этого момента. Видеоаналитика — это переход от изучения «существ» к изучению «событий». В компьютерном зрении этот переход сопряжен с драматическим ростом вычислительной сложности: добавление всего одной оси — времени — превращает двумерную задачу в трехмерную, где объем данных растет экспоненциально, а информационная плотность, напротив, падает.
Природа видеоданных: избыточность и структура
Видео — это не просто последовательность картинок. С точки зрения математики и алгоритмов обработки, видеопоток представляет собой четырехмерный тензор размерности , где — временная протяженность (количество кадров), — количество каналов (обычно 3 для RGB), а и — высота и ширина кадра соответственно.
Главная проблема видеоаналитики заключается в колоссальной избыточности. В типичном видео с частотой 30 кадров в секунду (FPS) соседние кадры и практически идентичны. Различия между ними (так называемые межкадровые разности) составляют лишь малую долю от общего объема информации. Если мы будем обрабатывать каждый кадр как независимое изображение с помощью стандартных сверточных сетей (CNN) или Vision Transformers (ViT), мы столкнемся с двумя проблемами:
Для эффективного анализа нам необходимо научиться разделять пространственные признаки (что изображено на кадре: объекты, текстуры, цвета) и временные признаки (как эти объекты перемещаются и трансформируются).
Временные зависимости: Short-term vs Long-term
В видеоаналитике принято разделять временные зависимости на два типа, каждый из которых требует своего архитектурного подхода.
Краткосрочные зависимости (Short-term)
Это изменения, происходящие на масштабе нескольких соседних кадров (от 2 до 16). Они описывают локальное движение: взмах руки, наклон головы, микро-движения объектов. На этом уровне мы работаем с понятием «оптического потока» или локальных деформаций. Для их улавливания традиционно используются: * 3D-свертки (3D CNN): фильтры, которые скользят не только по высоте и ширине, но и по времени. * Оптический поток (Optical Flow): векторное поле, описывающее смещение каждого пикселя между кадрами.Долгосрочные зависимости (Long-term)
Это события, развернутые во времени на секунды или даже минуты. Например, чтобы понять, что человек совершает кражу в магазине, недостаточно увидеть момент, когда рука касается товара. Нужно проследить цепочку: подошел к полке огляделся взял предмет спрятал в карман прошел мимо кассы. Здесь классические свертки бессильны из-за ограниченного рецептивного поля. На помощь приходят рекуррентные структуры (LSTM/GRU), механизмы внимания (Attention) или специализированные графовые модели.Оптический поток и его роль в понимании движения
Оптический поток — это фундаментальная концепция, позволяющая формализовать движение. Математически это вектор для каждой точки , показывающий, куда переместилась эта точка к моменту .
Основное уравнение оптического потока базируется на гипотезе постоянства яркости:
Где — интенсивность пикселя. При разложении в ряд Тейлора и упрощении мы получаем:
Здесь — пространственные градиенты изображения, — временной градиент, а — искомые компоненты скорости.
Однако это уравнение недоопределено (проблема апертуры: мы не можем точно определить движение вдоль однородной кромки). В современных VLM-системах оптический поток редко вычисляется в явном виде из-за его вычислительной дороговизны. Вместо этого модели обучаются извлекать «неявное движение» через разности признаков в латентном пространстве.
Специфика архитектур для видео: от 2D к 3D
Когда мы переходим от анализа изображений к видео, возникает вопрос: как эффективно расширить архитектуру нейросети? Рассмотрим основные подходы, которые легли в основу современных систем, включая те, что используются в VLM.
1. Two-Stream Networks (Двухпотоковые сети)
Это была революционная идея: разделить обработку на два независимых канала. * Spatial Stream (Пространственный поток): принимает на вход одиночные кадры (RGB). Он отвечает за распознавание объектов. * Temporal Stream (Временной поток): принимает на вход стек из нескольких кадров оптического потока. Он отвечает за распознавание движения. На финальном этапе выходы обоих потоков объединяются (fusion). Несмотря на точность, такая схема крайне медленна из-за необходимости предварительного вычисления оптического потока.2. 3D Convolutional Networks (C3D, I3D)
Вместо того чтобы разделять потоки, мы можем превратить стандартные 2D-фильтры в 3D-кубы. Если 2D-ядро имеет размер , то 3D-ядро имеет размер , где — временная глубина. > Важный нюанс: Инфляция весов (Inflation). > > Исследователи обнаружили, что можно взять предобученную на ImageNet 2D-сеть (например, ResNet) и «раздуть» её веса до 3D, просто скопировав их раз и разделив на , чтобы сохранить масштаб активаций. Это позволило использовать мощь накопленных знаний об изображениях для видеоданных.3. (2+1)D Свертки и P3D
3D-свертки очень тяжелы для вычислений. Чтобы оптимизировать процесс, операцию разделяют на две последовательные:Проблема частоты дискретизации и алиасинга в видео
При проектировании систем видеоаналитики критически важно правильно выбрать частоту кадров. Если мы анализируем движение автомобиля, 1 FPS будет недостаточно — возникнет эффект алиасинга (наложение частот), когда объект «телепортируется» из одной точки в другую, и модель не может построить траекторию.
С другой стороны, обработка 60 FPS избыточна для большинства задач классификации действий. Стандартным подходом в современных пайплайнах является Sparse Sampling (разреженная выборка). Вместо того чтобы брать 64 кадра подряд, мы делим видео на 8 сегментов и берем по одному случайному кадру из каждого. Это позволяет модели увидеть структуру всего видео, не перегружая память.
Представление видео в Vision Language Models (VLM)
Современные VLM, такие как Video-LLaVA или аналоги на базе CLIP, сталкиваются с вызовом: как подать видео в языковую модель (LLM), которая привыкла к последовательностям токенов?
Существует три основных метода токенизации видео:
В системах поиска дубликатов, о которых мы будем говорить позже, часто используется гибридный подход: извлечение глобального эмбеддинга видео (Video-level embedding) для быстрого поиска и детальное сопоставление временных отпечатков (Temporal Fingerprinting) для подтверждения копии.
Специфика препроцессинга видеопотоков
Работа с видео требует гораздо более сложного «входа», чем работа с JPEG-картинками. Процесс подготовки данных включает этапы, напрямую влияющие на точность будущей модели.
Декодирование и выборка
Чтение видеофайла — ресурсоемкая операция. Использование CPU для декодирования часто становится бутылочным горлышком (bottleneck), из-за чего GPU простаивает. Современные пайплайны используют аппаратные декодеры (NVDEC в картах NVIDIA) для прямой передачи кадров в видеопамять.Аспекты ресайзинга
В отличие от фото, в видео важно сохранять аспектное соотношение. Резкое изменение пропорций (например, с 16:9 до 1:1) искажает векторы движения. Принято использовать Short-side scaling: изменять размер видео так, чтобы меньшая сторона стала равна, например, 224 пикселям, а затем делать центральный кроп.Цветовая субдискретизация (Chroma Subsampling)
Большинство видео сжато в формате YUV 4:2:0, где информация о цвете имеет меньшее разрешение, чем информация о яркости. При конвертации в RGB для нейросети могут возникнуть артефакты на границах движущихся объектов, что критично для задач сегментации.Трудности и «подводные камни» анализа видео
Переход к видеоаналитике вскрывает проблемы, которые редко встречаются в классическом Image Classification.
* Shot Boundaries (Границы сцен): Резкая смена кадра при монтаже сбивает механизмы временного внимания. Модель может попытаться найти связь между последним кадром в лесу и первым кадром в помещении, что порождает шум в градиентах. * Motion Blur (Размытие при движении): Быстро движущиеся объекты теряют четкость текстур. Модель должна быть устойчива к тому, что на одном кадре объект четкий, а на другом — это «пятно». * Окклюзии (Загораживание): В видео объекты постоянно перекрывают друг друга. Задача Re-Identification (ReID) — одна из сложнейших: как понять, что человек, вышедший из-за столба, — это тот же самый человек, что зашел за него секунду назад?
Метрики: как оценить успех?
Оценка качества видеоаналитики сложнее, чем просто подсчет Accuracy. Во-первых, это mAP (mean Average Precision), но вычисляемая в пространственно-временном домене (ST-mAP). Мы оцениваем не только пересечение рамок (IoU), но и перекрытие временных интервалов.
Во-вторых, это Latency (Задержка). Для систем реального времени (например, детекция инцидентов на дорогах) точность в 99% бесполезна, если обработка одной секунды видео занимает две секунды.
Для задач поиска дубликатов, которые являются фокусом нашего курса, ключевыми становятся: * Recall@k: попал ли оригинал в топ-k результатов поиска. * F1-score на уровне сегментов: насколько точно мы определили границы скопированного фрагмента внутри длинного видео.
Взаимосвязь с поиском дубликатов
Почему основы видеоаналитики так важны для поиска копий (Video Copy Detection)? Потому что «копия» в видео — это не побитовое совпадение файлов. Злоумышленники могут изменить яркость, наложить логотип, обрезать края или изменить частоту кадров. Надежная система поиска дубликатов должна строиться на дескрипторах, которые:
Если мы понимаем, как извлекать признаки движения, мы сможем отличить «зеркальное отражение» того же самого видео от похожего по смыслу, но снятого с другого ракурса.
Резюмируя пройденное
Видеоаналитика сегодня уходит от парадигмы «кадр за кадром» в сторону целостного восприятия пространственно-временного континуума. Мы научились бороться с избыточностью через разреженную выборку, адаптировали 2D-архитектуры через инфляцию весов и начали внедрять механизмы внимания, позволяющие моделям «связывать» события, разделенные во времени. Эти фундаменты необходимы для понимания того, как работают тяжеловесные Vision Language Models и как строятся масштабируемые системы поиска дубликатов, способные обрабатывать миллионы часов контента.
В следующей главе мы детально разберем архитектуры VLM и узнаем, как именно текстовые описания («человек бежит по лесу») связываются с многомерными тензорами видеоданных на уровне архитектуры CLIP и её последователей.