Bollywood HungamaSalman Khan returns to playback singing after 11 years with ‘Teri Sexy Beauty’ from MaatrubhumiCNN TürkVedat Muriqi kafasını kullandı! Fenerbahçe'den müthiş geri dönüşPunchFULL LIST: Como join Liverpool, Madrid in Champions League victory record한겨레공군 1호기 탑승자 명단 유출… 외교부 보안 용역업체 가능성InquirerSpeaker Dy defends congressional budget tweaks amid public scrutinyZDF heuteAktuelle Pressemitteilungen des ZDFPremium TimesNGF ​‌‌‍​‌‍⁠⁠‍‌⁠‍​‍​‌​‌​advocates coordinated data-driven solutions to bridge rice production deficitSözcüSibirya soğukları Türkiye'yi esir aldı: Cuma sabahı herkes böyle uyanacakCapital FMDPP Opposes Bail for Dusit D2 Terror Attack Convict Pending AppealSRF NewsFinanzielle Massnahmen – So will der Bundesrat die Invalidenversicherung sanierenDaily MailTrump purge BEGINS: Insiders name scapegoat who the president has already decided will take blame for midterms... as Susie Wiles' devious plot that will ignite Cabinet civil war leaks... and JD Vance sparks a West Wing squabbleCumhuriyetCeltic - Beşiktaş maçı ne zaman, saat kaçta, hangi kanalda? Şifresiz mi?
The Daily Newsstand · Free, Always
Thursday, November 5, 2026

Анализ волейбольного видео: фиксируем и классифицируем игровые действия

Translate

Ранее я рассказывал о своих попытках написать модель для детекции игроков на волейбольной площадке. Следующий шаг — научиться определять, когда игрок касается мяча и какое действие выполняет.

Определение касания игрока

После того как система научилась находить игроков на площадке, возник следующий вопрос: как автоматически распознавать их игровые действия?

Для начала я остановился на четырёх классах:

  • подача — serve;

  • приём — receive;

  • пас — set;

  • атака — attack.

Терминология оказалась не самой удачной: я смешал назначение действия в розыгрыше и технику его выполнения.

Приём подачи, защита после атаки и передача партнёру — это разные игровые задачи. Чтобы различать их, нужно учитывать контекст: откуда прилетел мяч, что происходило до касания и куда игрок его направил. При этом первое касание не обязательно выполняется снизу, а второе не обязательно является пасом под атаку.

На текущем этапе я использую упрощённую классификацию, в которой названия классов условные:

  • Receive — обработка мяча преимущественно двумя руками снизу.

  • Set — передача мяча преимущественно двумя руками сверху.

  • Attack — атакующий удар по мячу, обычно одной рукой выше головы.

  • Serve — ввод мяча в игру подачей.

Атака не обязательно выполняется в прыжке, а подача бывает не только верхней. Поэтому положение рук само по себе не позволяет однозначно определить класс. Для подачи, например, особенно важен контекст начала розыгрыша.

Первый вариант решения был основан на геометрии. Зная рамки игроков и траекторию мяча, можно искать предполагаемые моменты касания, а затем определять тип действия по взаимному положению мяча и игрока.

Например, если мяч находится у верхнего края рамки, считаем это кандидатом на передачу сверху. Если ближе к середине — на приём снизу. Касание, с которого начинается розыгрыш, рассматриваем как кандидата на подачу.

Точность такого подхода оставляет желать лучшего. Многое зависит от подобранных порогов, качества рамок игроков и точности траектории мяча.

Есть и принципиальное ограничение: близость мяча к рамке на двумерном изображении ещё не означает физического касания. Игроки могут перекрывать друг друга, а мяч — пролетать перед человеком или за ним.

Подбираешь параметры под одно видео — на нём всё выглядит неплохо. Открываешь другое, с новым ракурсом или масштабом игроков, — и правила начинают ошибаться.

Нейросети для распознавания действий по видео

Геометрический подход всё же даёт полезную отправную точку: предполагаемый момент касания и область кадра, в которой оно произошло.

Вокруг этого момента можно вырезать короткий видеоклип и передать его модели распознавания действий. Я пробовал MoViNet-A2, R(2+1)D-18 и X3D-S.

Это свёрточные видеомодели: они анализируют последовательность кадров и учитывают как внешний вид объектов, так и их изменения во времени. В R(2+1)D пространственная и временная обработка разделены на последовательные операции.

Сравнение этих моделей — отдельная тема для исследования и, возможно, следующей заметки.

У моделей и их предобученных весов различаются рекомендуемые разрешения, число кадров и шаг между ними. Поэтому одинаковый набор исходных видео ещё не означает одинаковые условия эксперимента.

Если подать всем моделям клипы одного размера и длины, такая конфигурация может лучше подойти одной из них. Но это не означает, что она обязательно победит: результат зависит также от предобучения, подготовки данных и режима дообучения.

В моём случае у этого подхода обнаружилась другая проблема: действие распознаётся, но не всегда приписывается правильному игроку.

Обычный классификатор клипа отвечает на вопрос «что происходит в этом фрагменте?». Привязку действия к конкретному человеку нужно организовать отдельно. Если в вырезанную область попали сразу несколько игроков, например атакующий и блокирующий, модель может распознать действие одного из них, а система — записать его другому.

Своя модель RAVEL для определения касаний и классификации действий

Следующая гипотеза была простой: если модель уже обрабатывает серию кадров, находит игроков и мяч, почему бы не научить её сразу предсказывать касания и типы действий?

В моих экспериментах модель научилась находить касания, но заметно путала их типы. Особенно часто она предсказывала attack и set.

На текущем этапе я решил сузить задачу: перестать требовать от модели всего сразу и оставить определение касания без классификации его типа.

Адаптация TTNet для волейбола

В рекомендациях GitHub мне попался репозиторий с неофициальной реализацией TTNet на PyTorch.

TTNet изначально разработана для анализа настольного тенниса. Она совмещает поиск мяча, определение событий — отскоков от стола и касаний сетки — и семантическую сегментацию сцены.

Для поиска мяча используются два этапа:

  • Глобальный: модель обрабатывает уменьшенные кадры и приблизительно определяет положение мяча.

  • Локальный: вокруг найденной позиции вырезается область из кадров исходного разрешения, в которой модель уточняет положение мяча.

Признаки локальной ветви также используются для определения событий. То есть сеть анализирует не только весь кадр, но и более подробную картинку в окрестности мяча.

Возникла мысль: почему бы не адаптировать этот подход для волейбола и вместо отскока от стола не обучить модель определять касание игрока?

Разумеется, это уже другая задача. В волейболе больше игроков, чаще возникают перекрытия, а контакт мяча с руками может быть плохо виден. Кроме того, определение момента касания само по себе ещё не решает задачу классификации действия и выбора игрока, который его выполнил.

В перспективе можно попробовать добавить и касания пола, но сейчас у меня нет соответствующей разметки для обучения.

Используя метод «вайб-ML-обучения», с пятой попытки я получил модель, которая начала предсказывать игровые действия.

Пока это результат эксперимента. По одному демонстрационному ролику нельзя сделать вывод, какой подход точнее: для этого нужен общий независимый тестовый набор.

Проблема данных

Каждая новая задача требует своей разметки.

Например, для поиска мяча и игроков я разметил около 30 000 кадров из 32 разных видео. Но рамки игроков и координаты мяча не говорят, в какой момент произошло касание и какое действие выполнил игрок.

Для обучения и проверки распознавания действий нужна отдельная событийная разметка: момент касания, тип действия и игрок, который его совершил.

Сейчас набор размеченных действий выглядит так:

Тип действия

Количество

Количество игр

Receive

193

32

Attack

94

32

Serve

84

31

Set

42

22

Итого

413

—

Классы представлены неравномерно: примеров receive почти в пять раз больше, чем set. Это нужно учитывать при обучении и оценке качества.

В качестве ближайшего ориентира я планирую собрать по 300 примеров каждого действия для обучения и ещё по 100 — для независимого тестирования.

Для четырёх классов получается:

  • 1 200 событий для обучения;

  • 400 событий для тестирования;

  • 1 600 событий всего.

Как соберу сбалансированную разметку - прогоню эксперимент, кто точнее

Как использую систему?

Нарезка розыгрышей

Визуализация передачи - как критерий стабильности приема у паса у команды

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.