Зачин
Как‑то раз двое ML‑щиков решили соединить свою любовь к компьютерному зрению и ракеточным видам спорта. Так родилась идея сделать систему видеоаналитики для падел‑тенниса.
Падел — это игра на стыке большого тенниса и сквоша. От сквоша падел взял стеклянные стены вокруг корта, а от большого тенниса — почти всё остальное, за исключением того, что всегда играют 2 на 2 и «подача мяча» (момент, с которого начинается каждый розыгрыш) выполняется снизу, а в большем теннисе сверху.
Пример того, как выглядит розыгрыш в падел-теннисе: ссылка.

На момент задумки готовых решений для падел-тенниса на рынке и в открытом доступе было не так много. Большинство инструментов покрывали простые применения: реализовывали лишь нарезку активных интервалов и не позволяли игрокам анализировать свой прогресс (например, решение 1 и решение 2). Среди более сложных решений с готовой видеоаналитикой не было абсолютного стандарта и каждое из них было сосредоточено на определённых возможностях применения (например, решение 1, решение 2, решение 3).
У нас был Заказчик, заинтересованный в создании подобного решения, и мы решили сделать прототип системы, которая была бы полезна спортсменам в процессе самостоятельных тренировочных игр.
Бизнес-задача
Задача анализа эффективности игроков в падел-теннисе актуальна как для самих спортсменов, так и для падел-центров.
Со стороны спортсменов: есть большое количество игроков-любителей, тренирующихся самостоятельно. И им хотелось бы получать информацию о характеристиках своей игры, видеть прогресс и в идеале получать точечные рекомендации от тренеров.
В таком случае игроки могут прийти на тренировку, закрепить телефоны на стенках падел-корта для съёмки игры. А дальше система по видеопотоку должна сформировать отчёт по игре каждого из них с понятными и полезными характеристиками, визуализациями.

Со стороны падел-центров: возможность автоматически анализировать тренировочные игры по видео с камер падел-центра — привлекательное преимущество падел-центра. Добавление подобной аналитики можно рассматривать как способ привлечь новых клиентов. И так уже делают некоторые центры: появляется услуга "Аренда корта с ИИ". Пример весёлых комментариев в падел-чатах про подобную услугу, но в любом случае - это вызывает дополнительный интерес:

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

Уточнение задачи: при разработке решения мы общались с тренером, спортсменами и представителями одного падел-центра. В результате обсуждений были отобраны полезные и реализуемые характеристики для дальнейшего добавления в отчёт по игре:
покрытие игроком корта: в каких зонах корта побывал спортсмен за игру?
карта ударов: куда попадали мячи после ударов игрока?
длина пробега: какое расстояние пробежал игрок?
скорость удара игрока;
средняя глубина удара: насколько близко к задней линии попадают мячи игрока? Считается, что чем ближе мяч попадает к задней линии, тем сложнее будет сопернику корректно отбить мяч и продолжить игру;
стоят ли игроки одной команды так, что их становится сложнее атаковать?
процент успешности первой подачи пошёл ли мяч в игру после подачи или игрок подаёт снова?
процент двойных ошибок в подачах игрока: двойными ошибками называются ситуации, когда игрок 2 раза подряд промахнулся во время выполнения подачи — не попал в квадрат или попал мячом в сетку. За каждую двойную ошибку соперникам начисляется игровое очко;
направление полёта мячей после первого удара после подачи: у каждого игрока своя тактика, полезно её анализировать.
Сразу хочется оговориться для любителей падела: мы понимаем, что, скорее всего, есть еще много интересных показателей, которые хотелось бы считать и показывать, но это — то что вошло в прототип.
Тестирование системы мы также проводили в этом падел-центре.
Поговорим про технику и некоторые нюансы
Кому не очень важна техника, можно сразу перейти к разделу "Пример работы на видео".
Для тех, кто знаком с компьютерным зрением, сейчас может показаться, что задача очень понятная. А именно нужно:
обучить детектор игроков и мяча,
научиться трекать игроков и мяч,
-
проецировать игроков и мяч на плоскость корта,
Пример проецирования игроков и мяча на корт. Проекции отображены на виде корта сверху в правом верхнем углу считать на основании положений проекций во времени заявленные характеристики.
Но, как и во многих прикладных задачах, это только первый взгляд и на деле всё оказывается не так просто.
Наше "нехитрое" решение
Реализованное решение состоит из следующих этапов:

Детектор игроков и мяча обучался на датасете из открытого доступа (ссылка). В этом датасете кадры собраны из видеотрансляций соревнований по падел-теннису: ракурс и качество съёмки на соревнованиях обычно значительно лучше, чем записи с тренировок в падел-центрах. Поэтому этот датасет был дополнен собранными и размеченными вручную видео с YouTube с тренировочными играми в падел с более близкими к реальности ракурсами.
Трекинг. В трекере игроков используется ReID, так как в паделе между геймами спортсмены могут меняться сторонами корта и по визуальной составляющей соотнести треки в таком случае проще. Трекер мяча поддерживает 1 активный трек и берёт на каждом кадре самую уверенную детекцию из находящихся в заданном радиусе от предыдущего положения мяча. Также для более стабильной работы трекера мяча в моменты, когда мяч быстро летит и его сложно детектировать, используется экстраполяция по имеющимся детекциям в треке.
Для проецирования положений игроков и мяча предварительно задаются координаты углов разметки корта. Также выбранные ключевые точки корта полезны для калибровки камеры: исходя из смещения этих точек, например, можно определить, что камера существенно сдвинулась и нужно её поправить. Сдвиг камеры, например, может произойти, если в неё прилетит мяч.

Распознавания ударов и подач реализованы как эвристики на информации о положениях игроков и мяча. Идея распознавания ударов по мячу в том, что при ударе игрока мяч меняет направление по оси Y, а для подач — перед подачей есть время без активной игры, когда мяч находится только на одной из половин корта, и в момент подачи 3 из 4 игроков стоят за задней линией. В итоге подача распознаётся, если в течение последних секунд мяч был на одной и той же стороне корта и 3 игрока находятся за задней линией.
Характеристики, связанные с расстояниями на корте, рассчитываются исходя из заданных углов корта и стандартных размеров корта и его разметки. Для определения успешности подач осуществляется проверка того, что сразу после подачи мяч долго не задерживался на одной из сторон корта, а вошёл в активную игру.
Пример работы на видео
Результаты трекинга игроков и мяча (обозначены зелёным и красным цветами соответственно), проекции положения игроков и мяча на вид корта сверху (в правом верхнем углу) и распознавания моментов ударов (обозначены синим цветом): ссылка.
Система по видео тренировочной падел-игры формирует отчёт и показывает характеристики по игре каждого спортсмена. Пример отчёта:

Подводные камни на пути
если используется только одна камера, то в дальней половине корта всё плохо видно
-
даже если закрепить камеру на верхней части стенки корта, есть слепые зоны по углам, куда забегают спортсмены в моменты подач:
Пример ракурса со слепыми зонами, куда во время подач забегают спортсмены -
внутри падел-центра может быть много кортов рядом и в ракурс камеры неизбежно будут попадать мячи и игроки с других кортов: в таком случае помогает предварительно задать маску целевого корта, внутри которой будут детектироваться игроки и мячи:
Падел-центр со множеством кортов рядом (источник) мяч быстрый и небольшой, детектору и трекеру бывает сложно его отследить
игроки могут использовать одновременно очень много мячей вместо 1 активного: при промахе доставать из кармана следующий мяч и делать новую подачу. Из-за этого не всегда очевидно, за каким мячом следить
-
игроки могут прийти в одинаковой одежде — это путает ReID внутри трекера:
Пример одинаковой формы у игроков одной команды -
корты могут быть очень разнообразных цветов, из страшного бывают неоновые игры в падел. Как детектировать мяч и игроков в таком случае? Мы понимаем, что это исключительная ситуация, но и такое бывает:)
Тяжёлый случай: корт в неоновых цветах в темноте
Идеи на будущее
В завершение несколько идей по дальнейшему развитию системы:
распознавать сложных типов ударов (смэш, бандеха, чикита и т.п.) с помощью подходов к распознаванию действий на видео (Action Recognition);
выделять для каждого игрока клипы с лучшими и худшими моментами их игры;
формировать общий рейтинг по игрокам для возможности сравнить результаты в играх с другими спортсменами.
Концовка
Вот и сказочке конец, а кто слушал и появились вопросы-предложения, добро пожаловать в комментарии :-)
Комментарии (4)
athmath
16.08.2025 11:46Вы объединили две моих самых больших страсти в жизни - падел и компьютерное зрение. Это очень круто.
Gosha04ye
Классный разбор, видно, что делали с душой. Такие статьи мотивируют взяться за свои проекты, а не только думать о них.
invasion_of_the_racoons Автор
Спасибо большое)