Русский
Русский
English
Статистика
Реклама

Волейбол

Волейбол глазами компьютера

20.10.2020 16:06:30 | Автор: admin
В прошлой статье я рассказал о своих подходах по распознаванию волейбольного мяча в игре. Задача сама по себе интересная и развивать ее можно в нескольких направлениях.

  • Вариант 1 продолжать исследования (в комментах к прошлой статье мелькали страшные слова SORT, YOLO итд)
  • Вариант 2 найти применение в реальном мире, сделать продукт и показать людям


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

Проблема


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

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

Статистика ведется очень редко и там абсолютный ноль в плане автоматизации.

В идеале хочется, чтобы система:

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

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

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

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

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

Проверка реальностью


Для теста я взял игру со страницы Московской волейбольной лиги.

Розыгрышей оказалось многовато, в этой игре алгоритм насчитал 197 розыгрышей, хотя их на самом деле 28.

Вот это считается за розыгрыш:


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

Нормальные розыгрыши распознаются корректно, это внушает оптимизм.


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



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

Цели и миссия


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

Не могу удержаться, чтобы не процитировать, это прямо про меня.


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

Так что по чеклисту полный провал.

Выпуск


Один из важных пунктов цели и миссии, о которых не принято говорить это возможность (для автора) неограниченно поиграться с технологиями.
На работе приходится в основном таскать рояль, а где еще развенуться с ML, CV и облаками?

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

Платформ для Кубернетеса не так мало, понятно, что в лидерах GKE, AWS и Azure, но многие авторы мелких проектов жалуются на их дороговизну. Я обратил внимание на второй эшелон Digital Ocean и Linode, ценообразование там более гуманное и прозрачное, а решающим фактором в выборе было начилие у Digital Ocean управляемой базы данных ставить постгрес в кубернетес конечно модно, но с точки зрения надежности выглядит не очень.

Еще один большой плюс Digital Ocean бесплатный CDN.
Я развернул сервис в амстердамском датацентре ближе к России ничего не нашлось.

Аудитория и сегментация


Если задуматься, автоматизация волейбола весьма широкая задача.
Волейболов только в официальной версии два варианта (6x6 и 2x2), плюс к этому возможны разные форматы типа 4x4, 3x3, на траве, на снегу.

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

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

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



Ссылки


Подробнее..

Распознавание волейбольного мяча на видео с дрона

14.06.2021 16:14:45 | Автор: admin

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

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

В общем, я это дело подзабросил, но вот весной завел себе дрон и конечно же первым делом приспособил его для волейбольных съемок. Если поднять его на нужную высоту (12-15 метров), в кадр влезает вся площадка, что дает прямо неограниченные возможности для анализа.

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

Шум и никакого мячаШум и никакого мяча

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

Для сравнения - похожая подача при старом подходе выглядит вот так:

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

      gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)      gray = cv.GaussianBlur(gray, (5, 5),0)      mask = cv.Canny(gray, 50, 100)

Если натравить на него детектор контуров - все прекрасно работает, мяч удается зацепить. Дальше подключается детектор траекторий и процесс идет как и в основном алгоритме.

      mask = backSub.apply(frame)      mask = cv.dilate(mask, None)      mask = cv.GaussianBlur(mask, (15, 15),0)      ret,mask = cv.threshold(mask,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU)

И опять же для сравнения - тот же фрагмент с неподвижной камеры с границами:

Как видно, палка имеет два конца - на трясущемся дроне Канни-фильтр дает лучшие результаты, а на статичной камере - генерит лишний фон, на котором теряется мяч.

Но что будет, если эти два подхода совместить? Для видео с дрона Канни сначала оставит только нужные фигуры, а затем, можно удалить фон.

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

Результат - гораздо лучше, шума меньше (но есть еще) и траектория мяча распознается достаточно четко.

Прошлые статьи на эту же тему

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru