Video Understanding
Понимание видео — это способность ИИ интерпретировать происходящее в видео во времени: действия, события и их последовательность. Задачи, семейства моделей и код.
Понимание видео — это область компьютерного зрения, изучающая происходящее в видео во времени: какие объекты и люди присутствуют, что они делают, когда начинаются и заканчиваются события и как одно событие приводит к другому. Распознавание изображений анализирует каждый кадр отдельно, тогда как модели понимания видео анализируют движение и временную последовательность, от которых зависит ответ на многие вопросы. На одном кадре видно, что человек наполовину опустился на стул, и только соседние кадры показывают, садится он или встает. Эта область охватывает задачи от маркировки коротких клипов до ответов на открытые вопросы о многочасовых записях.
Основные задачи#
- Распознавание действий: Присваивает короткому обрезанному клипу одну метку, например «отжимается» или «падает».
- Временная локализация действий: Определяет, когда каждое действие начинается и заканчивается в длинном необрезанном видео; обнаружение действий в пространстве и времени дополнительно ограничивает рамками каждого действующего лица в каждом кадре.
- Отслеживание объектов: Сопровождает каждый объект в последовательности кадров, присваивая ему постоянный ID; это основа подсчета, измерения скорости и анализа траекторий.
- Сегментация видео: Создает пиксельные маски объектов или областей сцены, сохраняющие согласованность от кадра к кадру.
- Создание описаний и ответы на вопросы по видео: Описывает клип текстом или отвечает на вопросы, например «что сделал водитель до остановки машины?»
- Временная привязка: Находит момент, соответствующий предложению, например «вратарь ловит мяч»; эту задачу также называют поиском момента.
- Обнаружение аномалий: Выявляет необычные события, например падение, драку или движение автомобиля по встречной полосе.
Как работают модели для видео#
Модели для видео должны улавливать внешний вид — то, как выглядят объекты, — и движение, то есть их изменения. Двухпоточные сети обрабатывают RGB-кадры и оптический поток в отдельных ветвях; 3D-сверточные нейронные сети (CNN) выполняют свертку одновременно по высоте, ширине и времени; Temporal Shift Module добавляет временное моделирование в 2D CNN без дополнительных вычислений, сдвигая часть каналов каждого слоя на соседние кадры. Видеотрансформеры применяют механизм самовнимания к пространственно-временным фрагментам, а TimeSformer сделал этот подход доступным, разделив внимание на временное и пространственное. Предобучение с самоконтролем на неразмеченном видео позволяет получить мощные универсальные кодировщики: модель Meta V-JEPA 2 обучалась на более чем 1 миллионе часов интернет-видео, предсказывая представления замаскированных областей, и достигла точности top-1 в 77,3% на бенчмарке Something-Something v2, где представлены действия с руками и объектами, различающиеся главным образом движением. Видео-языковые модели выбирают кадры, кодируют каждый из них в визуальные токены и передают их большой языковой модели (LLM), которая отвечает на вопросы текстом.
Выбор семейства моделей во многом зависит от того, какой результат требуется системе:
События на основе траекторий объектов#
Многие практические системы понимают видео, анализируя траектории: детектор находит объекты в каждом кадре, трекер связывает их в траектории, а правила или модели преобразуют траектории в события, например вход в зону, пересечение линии или слишком долгую остановку. Решение Ultralytics для подсчета объектов работает именно так, используя отслеживание с помощью YOLO26: оно считает каждый отслеживаемый объект один раз при пересечении его траекторией линии и определяет направление по положениям объекта в последовательных кадрах:
import cv2
from ultralytics import solutions
# Count people (COCO class 0) crossing a horizontal line through the middle of the 640x360 frame
counter = solutions.ObjectCounter(model="yolo26n.pt", region=[(0, 180), (640, 180)], classes=[0])
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/solutions_ci_demo.mp4")
while True:
success, frame = cap.read()
if not success:
break
results = counter(frame)
# A crossing and its direction come from each person's track, so they exist only across frames
print(f"Crossed moving down: {results.in_count}, moving up: {results.out_count}")Эти два значения описывают события, которые невозможно увидеть в одном кадре: чтобы определить, идет человек вниз или вверх, нужны как минимум два положения одного и того же отслеживаемого человека.
Понимание видео и связанные термины#
- Распознавание изображений: Классифицирует или обнаруживает содержимое отдельных изображений. Запуск такой модели на каждом кадре видео дает результаты для отдельных кадров без учета идентичности объектов, движения или последовательности.
- Отслеживание нескольких объектов (MOT): Один из компонентов систем понимания видео; сохраняет идентичность объектов между кадрами, не интерпретируя их действия.
- Генерация видео: Создает новое видео по тексту или изображениям — это обратное направление, хотя оба подхода используют модели изменений сцены во времени.
- Мультимодальный ИИ: Объединяет видео со звуком, субтитрами или другими данными; это помогает, когда ключевая информация содержится в музыке или речи.
Применение#
- Спортивная аналитика: Отслеживает игроков и мяч для измерения скорости, владения мячом и расстановки игроков, а также поиска ярких моментов в записях матчей целиком.
- Транспорт и умные города: Подсчет транспортных средств и пешеходов, измерение скорости и обнаружение движения по встречной полосе или остановившихся транспортных средств.
- Розничная торговля и мониторинг безопасности: Измерение длины очередей, обнаружение падений в учреждениях по уходу и выявление людей, входящих в зоны ограниченного доступа.
- Медиа и модерация контента: Индексация больших видеотек для поиска и выявление загруженных материалов, нарушающих правила.
- Робототехника и автономные транспортные средства: Прогнозирование дальнейшего движения пешеходов и других транспортных средств.
Сложности#
Видео увеличивает стоимость обработки каждого изображения: одна минута видео с частотой 30 кадров в секунду содержит 1 800 кадров, поэтому модели выбирают кадры с большими интервалами — часто от 8 до 64 кадров на клип — и все равно рискуют пропустить короткие события. Длинные видео требуют много памяти и превышают допустимую длину контекста, а разметка действий с точным временем начала и окончания занимает гораздо больше времени, чем разметка изображений. API Gemini от Google выбирает из видео один кадр в секунду и при стандартном низком разрешении медиа использует около 100 токенов в секунду видео, поэтому модели с контекстным окном в один миллион токенов могут обрабатывать до трех часов видео или один час видео высокого разрешения.










