Зачин
Как‑то раз двое ML‑щиков решили соединить свою любовь к компьютерному зрению и ракеточным видам спорта. Так родилась идея сделать систему видеоаналитики для падел‑тенниса.
Падел — это игра на стыке большого тенниса и сквоша. От сквоша падел взял стеклянные стены вокруг корта, а от большого тенниса — почти всё остальное, за исключением того, что всегда играют 2 на 2 и «подача мяча» (момент, с которого начинается каждый розыгрыш) выполняется снизу, а в большем теннисе сверху.
Пример того, как выглядит розыгрыш в падел-теннисе: ссылка.
На момент задумки готовых решений для падел-тенниса на рынке и в открытом доступе было не так много. Большинство инструментов покрывали простые применения: реализовывали лишь нарезку активных интервалов и не позволяли игрокам анализировать свой прогресс (например, решение 1 и решение 2). Среди более сложных решений с готовой видеоаналитикой не было абсолютного стандарта и каждое из них было сосредоточено на определённых возможностях применения (например, решение 1, решение 2, решение 3).
У нас был Заказчик, заинтересованный в создании подобного решения, и мы решили сделать прототип системы, которая была бы полезна спортсменам в процессе самостоятельных тренировочных игр.
Бизнес-задача
Задача анализа эффективности игроков в падел-теннисе актуальна как для самих спортсменов, так и для падел-центров.
Со стороны спортсменов: есть большое количество игроков-любителей, тренирующихся самостоятельно. И им хотелось бы получать информацию о характеристиках своей игры, видеть прогресс и в идеале получать точечные рекомендации от тренеров.
В таком случае игроки могут прийти на тренировку, закрепить телефоны на стенках падел-корта для съёмки игры. А дальше система по видеопотоку должна сформировать отчёт по игре каждого из них с понятными и полезными характеристиками, визуализациями.
Со стороны падел-центров: возможность автоматически анализировать тренировочные игры по видео с камер падел-центра — привлекательное преимущество падел-центра. Добавление подобной аналитики можно рассматривать как способ привлечь новых клиентов. И так уже делают некоторые центры: появляется услуга «Аренда корта с ИИ». Пример весёлых комментариев в падел-чатах про подобную услугу, но в любом случае — это вызывает дополнительный интерес:
В данном случае спортсмены падел-центра приходят на тренировку, их игра снимается на закреплённые на стенках корта камеры, после завершения тренировки сформированные системой отчёты можно подгружать в мобильное приложение падел-клуба. А дальше счастливый клиент побежит выкладывать свои отчёты в социальные сети и семейный чатик:)
Уточнение задачи: при разработке решения мы общались с тренером, спортсменами и представителями одного падел-центра. В результате обсуждений были отобраны полезные и реализуемые характеристики для дальнейшего добавления в отчёт по игре:
-
покрытие игроком корта: в каких зонах корта побывал спортсмен за игру?
-
карта ударов: куда попадали мячи после ударов игрока?
-
длина пробега: какое расстояние пробежал игрок?
-
скорость удара игрока;
-
средняя глубина удара: насколько близко к задней линии попадают мячи игрока? Считается, что чем ближе мяч попадает к задней линии, тем сложнее будет сопернику корректно отбить мяч и продолжить игру;
-
стоят ли игроки одной команды так, что их становится сложнее атаковать?
-
процент успешности первой подачи пошёл ли мяч в игру после подачи или игрок подаёт снова?
-
процент двойных ошибок в подачах игрока: двойными ошибками называются ситуации, когда игрок 2 раза подряд промахнулся во время выполнения подачи — не попал в квадрат или попал мячом в сетку. За каждую двойную ошибку соперникам начисляется игровое очко;
-
направление полёта мячей после первого удара после подачи: у каждого игрока своя тактика, полезно её анализировать.
Сразу хочется оговориться для любителей падела: мы понимаем, что, скорее всего, есть еще много интересных показателей, которые хотелось бы считать и показывать, но это — то что вошло в прототип.
Тестирование системы мы также проводили в этом падел-центре.
Поговорим про технику и некоторые нюансы
Кому не очень важна техника, можно сразу перейти к разделу «Пример работы на видео».
Для тех, кто знаком с компьютерным зрением, сейчас может показаться, что задача очень понятная. А именно нужно:
-
обучить детектор игроков и мяча,
-
научиться трекать игроков и мяч,
-
проецировать игроков и мяч на плоскость корта,
Пример проецирования игроков и мяча на корт. Проекции отображены на виде корта сверху в правом верхнем углу -
считать на основании положений проекций во времени заявленные характеристики.
Но, как и во многих прикладных задачах, это только первый взгляд и на деле всё оказывается не так просто.
Наше «нехитрое» решение
Реализованное решение состоит из следующих этапов:
Детектор игроков и мяча обучался на датасете из открытого доступа (ссылка). В этом датасете кадры собраны из видеотрансляций соревнований по падел-теннису: ракурс и качество съёмки на соревнованиях обычно значительно лучше, чем записи с тренировок в падел-центрах. Поэтому этот датасет был дополнен собранными и размеченными вручную видео с YouTube с тренировочными играми в падел с более близкими к реальности ракурсами.
Трекинг. В трекере игроков используется ReID, так как в паделе между геймами спортсмены могут меняться сторонами корта и по визуальной составляющей соотнести треки в таком случае проще. Трекер мяча поддерживает 1 активный трек и берёт на каждом кадре самую уверенную детекцию из находящихся в заданном радиусе от предыдущего положения мяча. Также для более стабильной работы трекера мяча в моменты, когда мяч быстро летит и его сложно детектировать, используется экстраполяция по имеющимся детекциям в треке.
Для проецирования положений игроков и мяча предварительно задаются координаты углов разметки корта. Также выбранные ключевые точки корта полезны для калибровки камеры: исходя из смещения этих точек, например, можно определить, что камера существенно сдвинулась и нужно её поправить. Сдвиг камеры, например, может произойти, если в неё прилетит мяч.
Распознавания ударов и подач реализованы как эвристики на информации о положениях игроков и мяча. Идея распознавания ударов по мячу в том, что при ударе игрока мяч меняет направление по оси Y, а для подач — перед подачей есть время без активной игры, когда мяч находится только на одной из половин корта, и в момент подачи 3 из 4 игроков стоят за задней линией. В итоге подача распознаётся, если в течение последних секунд мяч был на одной и той же стороне корта и 3 игрока находятся за задней линией.
Характеристики, связанные с расстояниями на корте, рассчитываются исходя из заданных углов корта и стандартных размеров корта и его разметки. Для определения успешности подач осуществляется проверка того, что сразу после подачи мяч долго не задерживался на одной из сторон корта, а вошёл в активную игру.
Пример работы на видео
Результаты трекинга игроков и мяча (обозначены зелёным и красным цветами соответственно), проекции положения игроков и мяча на вид корта сверху (в правом верхнем углу) и распознавания моментов ударов (обозначены синим цветом): ссылка.
Система по видео тренировочной падел-игры формирует отчёт и показывает характеристики по игре каждого спортсмена. Пример отчёта:
Подводные камни на пути
-
если используется только одна камера, то в дальней половине корта всё плохо видно
-
даже если закрепить камеру на верхней части стенки корта, есть слепые зоны по углам, куда забегают спортсмены в моменты подач:
Пример ракурса со слепыми зонами, куда во время подач забегают спортсмены -
внутри падел-центра может быть много кортов рядом и в ракурс камеры неизбежно будут попадать мячи и игроки с других кортов: в таком случае помогает предварительно задать маску целевого корта, внутри которой будут детектироваться игроки и мячи:
Падел-центр со множеством кортов рядом (источник) -
мяч быстрый и небольшой, детектору и трекеру бывает сложно его отследить
-
игроки могут использовать одновременно очень много мячей вместо 1 активного: при промахе доставать из кармана следующий мяч и делать новую подачу. Из-за этого не всегда очевидно, за каким мячом следить
-
игроки могут прийти в одинаковой одежде — это путает ReID внутри трекера:
Пример одинаковой формы у игроков одной команды -
корты могут быть очень разнообразных цветов, из страшного бывают неоновые игры в падел. Как детектировать мяч и игроков в таком случае? Мы понимаем, что это исключительная ситуация, но и такое бывает:)
Тяжёлый случай: корт в неоновых цветах в темноте
Идеи на будущее
В завершение несколько идей по дальнейшему развитию системы:
-
распознавать сложных типов ударов (смэш, бандеха, чикита и т.п.) с помощью подходов к распознаванию действий на видео (Action Recognition);
-
выделять для каждого игрока клипы с лучшими и худшими моментами их игры;
-
формировать общий рейтинг по игрокам для возможности сравнить результаты в играх с другими спортсменами.
Концовка
Вот и сказочке конец, а кто слушал и появились вопросы-предложения, добро пожаловать в комментарии 🙂
ссылка на оригинал статьи https://habr.com/ru/articles/937768/
Добавить комментарий