Теннис – это вид спорта, в который играют во всем мире. Наблюдая за игрой в теннис, вы можете автоматически обогащать представление количеством подач в центре или в углах, глубиной игры мячом, предпочтениями влево или вправо, в зависимости от того, где находится игрок. Такую статистику могут предоставить такие инструменты, как Hawk-Eye, IBM Slamtracker и так далее.

Hawk-Eye — это сложная система, включающая до десяти высокоскоростных камер, способных с высокой точностью отслеживать мяч, определять его реальное положение и отображать реконструкцию любых отскоков.

IBM Slamtracker, приложение, представляющее результаты и статистику в реальном времени (от 15 до 25 параметров для каждого балла), чтобы расширить возможности болельщиков. Эта система чрезвычайно точна, но также и очень сложна, включает от 8 до 10 высокоскоростных камер (до 1000 кадров в секунду) и чрезвычайно мощный компьютер. Тот факт, что эта технология требует большого количества оборудования, стоит дорого и требует специальных знаний для ее установки на корте, ограничивает ее доступность для крупных площадок крупных турниров.

Наша цель — создать инструмент для анализа видео, который включает в себя отслеживание мяча, отслеживание корта, обнаружение отскоков и отслеживание игроков на основе только одной камеры со скоростью 25–30 кадров в секунду.

Обнаружение в суде

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

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

  1. Обработайте изображение для дальнейших вычислений, извлекая белые пиксели.

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

2. Обнаружьте линии (с преобразованием Хафа) и классифицируйте их как горизонтальные и вертикальные.

3. Сравните полученные строки с эталонной конфигурацией корта.

Мы знаем конфигурацию эталонного корта и то, как линии расположены друг к другу. Мы хотим сравнить бинарную карту с вертикальными и горизонтальными линиями с эталонной конфигурацией. Чтобы определить, как одно изображение может быть спроецировано на другое, мы можем вычислить матрицу проекции (также называемую матрицей гомографии) на основе 4 известных точек из первого изображения и 4 известных точек из проецируемого. Взяв 4 точки пересечения эталонных линий корта и 4 точки пересечения 2 найденных горизонтальных линий и 2 вертикальных найденных линий, можно определить матрицу гомографии, которая проецирует эталонный корт на кадр. [2]

В этом подходе 12 конфигураций в эталонном суде используются для нахождения матрицы гомографии.

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

Этот подход имеет несколько недостатков:

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

2. Низкое качество. Во многих случаях такой детектор не находил линии из-за многочисленных гиперпараметров этого алгоритма.

3. Нестабильность при разных ракурсах, цветах, тенях и тд. Давая хорошие результаты для некоторых судов, этот подход трудно обобщить для всех типов судов.

Подход к глубокому обучению

Основная идея состоит в том, чтобы использовать нейронную сеть для обнаружения 14 ключевых точек теннисного корта. Используя полученные точки, мы можем восстановить всю конфигурацию корта на изображении.

Сбор набора данных

Набор данных был создан полуавтоматическим способом. Видеообзоры с разных турниров продолжительностью от 2 до 3 минут были загружены с YouTube. Кадры из видео извлекались с шагом 50 кадров и обрабатывались классическим алгоритмом компьютерного зрения. Качество существующего алгоритма компьютерного зрения оставляет желать лучшего, поэтому результирующие изображения были отфильтрованы вручную. Разрешение изображений 1280х720. Этот набор данных состоит из 8841 изображения и охватывает все типы кортов (хард, глина, трава).

Модель

Предлагаемая сеть глубокого обучения очень похожа на архитектуру TrackNet. [1]

Основное отличие состоит в том, что входной тензор состоит всего из 1 изображения (вместо 3 в TrackNet), а выходной тензор имеет 15 каналов (14 точек из набора данных и одна дополнительная точка — центр теннисного корта). Мы использовали дополнительную точку для лучшей сходимости. Разрешение входного и выходного изображения 640x360.

Обучение

Набор данных был разделен на обучающий набор (75%) и тестовый набор (25%). Для увеличения скорости обучения все кадры были изменены с 1280х720 на 640х360. Для оптимизации весов сети был применен оптимизатор Adam. Остальные параметры вы можете увидеть в таблице ниже.

Постобработка

Было реализовано 2 типа техники постобработки:

  1. Уточните ключевые моменты с помощью классического компьютерного зрения

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

Если мы обрежем стандартную область вокруг предсказанных точек, мы увидим следующую картину.

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

Если мы применим этот подход ко всем ключевым точкам, мы увидим следующие результаты:

Для большинства из них постобработка работала хорошо. Но в кроп-изображениях с 8,9,12 точками есть сетка, которая может мешать результату, поэтому технику для этих точек мы пропустим. На первом кадрированном изображении у нас 3 линии, поэтому наш алгоритм не сработал.

2. Используйте матрицу гомографии для восстановления сдвинутых ключевых точек.

Главное, что мы можем сравнивать предсказанные точки с эталонными, используя матрицу гомографии. Для определения матрицы гомографии мы используем 4 предсказанных точки и 4 точки из эталонного суда. Результирующая матрица дает нам однозначное соответствие, и мы можем переместить прогнозируемую точку в нужное положение, используя расположение опорных точек. Это может быть полезно, например, в случае окклюзии.

Оценка

Мы будем считать, что ключевая точка обнаружена точно, если евклидово расстояние между предсказанием модели и истинной реальностью меньше 7 пикселей. Основываясь на этом предположении, мы можем рассчитать истинно положительные и ложноположительные показатели. Общая производительность с точки зрения точности, правильности и медианного расстояния (в пикселях) между прогнозируемой точкой и наземной истиной можно увидеть в таблице ниже. Мы также покажем, как методы постобработки влияют на конечные метрики.

В этой таблице Точность = TP/(TP+FP), Точность = (TP+TN)/(TP+TN+FP+FN)

Пример

Реализацию этого метода вы можете найти здесь https://github.com/yastrebksv/TennisCourtDetector

Обнаружение мяча

Другой важной частью нашей работы является обнаружение и отслеживание теннисного мяча во время игры. Для этого мы использовали сеть глубокого обучения TrackNet. Более подробную информацию вы можете найти в оригинальной статье [1]. Я кратко объясню несколько важных частей этой статьи. Если хотите взглянуть на код, вот моя реализация https://github.com/yastrebksv/TrackNet.

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

Набор данных

Доступный набор данных состоит из видеоклипов из 10 транслируемых видео. Каждое видео содержит несколько роликов от подачи мяча к забитому мячу. В наборе данных 19 835 помеченных кадров. Разрешение, частота кадров 1280х720, 30 кадров в секунду соответственно. В файле метки каждый кадр может иметь следующие атрибуты: «Имя кадра», «Класс видимости», «X», «Y» и «Шаблон траектории». «Класс видимости», сокращенно VC, указывает видимость мяча в каждом кадре. Возможные значения: 0, 1, 2 и 3. VC = 0 означает, что мяч не находится в кадре. VC = 1 означает, что мяч можно легко идентифицировать. VC = 2 означает, что мяч находится в кадре, но его нелегко идентифицировать. «Шаблон траектории» указывает типы движения мяча и подразделяется на три категории: полет, удар и отскок.

Обучение

Настоящая правда — это тепловая карта усиленного двумерного распределения Гаусса, расположенная в центре теннисного мяча. Дисперсия распределения Гаусса относится к диаметру изображения теннисного мяча, который, по предположению авторов, составляет около 10 пикселей. Для обучения модели использовалась бинарная перекрестная потеря энтропии. Другие параметры вы можете найти в таблице ниже

Оценка

Диаметр изображений тенниса в видео колеблется от 2 до 12 пикселей, а средний диаметр составляет около 5 пикселей. Поскольку ошибка прогнозирования в пределах единицы размера мяча не вводит в заблуждение при идентификации траектории, авторы определяют спецификацию ошибки позиционирования (PE) как 5 пикселей, чтобы указать, точно ли обнаружен мяч. Детекты с PE больше 5 пикселей относятся к ложным предсказаниям. PE определяется евклидовым расстоянием между предсказанием модели и истинным значением. Авторы предложили следующие метрики для оценки модели:

Где VC1, VC2, VC3 — количество кадров в датасете с соответствующими классами видимости. В таблице ниже вы можете увидеть сравнение метрик между авторами и моей реализацией:

Пример

Обнаружение отказов

Обнаружение отскока — важная часть нашего решения, потому что мы можем определить, в каком кадре мяч коснулся земли. Основываясь на предыдущем разделе, мы можем отслеживать траекторию мяча во время игры. Одним из первых предложений, как с этим бороться, является обнаружение внезапных изменений направления мяча. Благодаря набору данных, используемому для обнаружения теннисного мяча, у нас есть кадры с аннотацией, где мяч коснулся корта. Представим траекторию мяча в координатах x и y во время игры.

На графике выше мы можем видеть траекторию мяча (координаты x и y) во время игры. Зеленые точки обозначают кадры, в которых мяч касается поверхности площадки, коричневые точки — кадры, в которых игроки бьют по мячу.

Не очевидно, как предсказать кадр отскока во время игры, поэтому мы использовали машинное обучение для решения этой проблемы. В частности, для определения точки отскока использовался CatBoostRegressor. Были применены такие функции, как разница между координатами x и y соседних точек, соотношение расстояний между предыдущей и следующей точками шара и другие функции. Для решения этой задачи мы использовали бинарную классификацию (класс 1 — отскок, класс 0 — остальные).

После обработки набора данных в наших данных осталось 18570 выборок, и 518 из них были помечены как точки отскока. Чтобы преодолеть переобучение, мы использовали 10 перекрестных проверок, поскольку у нас есть 10 помеченных игр (9 игр использовались в качестве данных обучения, а оставшаяся игра использовалась в качестве тестовых данных). Кроме того, во время обучения применялся жадный поиск с такими важными параметрами, как итерации, скорость обучения и глубина.

Мы будем оценивать наш метод с точки зрения точности и отзыва. В нашем демо не критично определить точный кадр отскока, можно ошибиться на 1 кадр.

Второй столбец означает, что ошибки нет, если мы предсказали соседнюю точку как отскок. Если мы перед тренировкой отметим соседнюю точку отскока весом 0,5, то получим следующие метрики:

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

Трубопровод

Давайте объединим все методы, которые мы обсуждали ранее, в один конвейер. Начнем с обнаружения судов, для чего используем предварительно обученную нейронную сеть. На этом этапе мы получаем матрицу гомографии для каждого кадра, и теперь мы можем отображать все, что происходит на корте, на эталонную карту корта. На втором этапе мы обнаруживаем теннисный мячик во время игры. Мы используем 3 последовательных кадра, чтобы найти траекторию мяча. На третьем этапе определяем кадры, на которых происходит отскок поверхности корта. Наконец, мы обнаруживаем игроков на основе предварительно обученной нейронной сети Faster RCNN и передаем все движения на эталонную площадку.

Если хотите взглянуть на код, вот моя реализация: https://github.com/yastrebksv/TennisProject

Возможные улучшения

  1. Алгоритм ускорения.

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

2. Объедините обнаружение мяча и обнаружение корта в одну нейронную сеть.

В нашем решении мы используем почти одинаковую архитектуру для обнаружения корта и мяча. Обе задачи можно объединить в одну нейронную сеть. Чтобы решить эту проблему, необходимо разметить оба набора данных и объединить их.

3. Улучшить качество обнаружения мяча.

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

4. Используйте аугментацию при обучении судебному розыску.

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

Заключение

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

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

Рекомендации

  1. https://arxiv.org/abs/1907.03698
    TrackNet: сеть глубокого обучения для отслеживания высокоскоростных и крошечных объектов в спортивных приложениях
  2. https://www.doc.ic.ac.uk/~wjk/publications/vinyes-2018.pdf