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

С чего началось
С этого проекта у нас началось компьютерное зрение вообще. Это помощник судьи по тхэквондо: система смотрит поединок с нескольких камер и в реальном времени фиксирует, кто, чем и куда ударил.
Если коротко, система различает бойцов по цвету защиты, распознаёт удар рукой в голову, удар ногой в корпус и удар ногой в голову, ловит одновременные атаки обоих спортсменов в одном кадре и работает на обычном компьютере в зале, без облака. Архитектура из двух моделей, которую мы заложили здесь, потом перешла в наши промышленные проекты.
Зачем судье помощник
Удар в тхэквондо длится доли секунды. Судья видит поединок под одним углом, решение принимает в моменте, а спортсмены постоянно перемещаются и закрывают друг друга. Отсюда спорные эпизоды, которые потом разбирают по видео, и претензии тренеров, уверенных, что их спортсмен попал, а балл не засчитали.
Электронные жилеты и шлемы с датчиками частично решают проблему на крупных турнирах, но стоят дорого и есть далеко не в каждом клубе. Камеры при этом висят почти в каждом зале. Задача звучала так: использовать обычное видео, чтобы дать судье второе мнение по каждому эпизоду и сохранить размеченную запись для разбора.
Начали с камер
Камеры поставили на штативы по углам зала, каждая смотрит на площадку со своей стороны. Если бойцы закрыли друг друга для одной камеры, с противоположного угла удар, скорее всего, виден.
Объективы широкоугольные, иначе всю площадку в кадр не уместить, поэтому по краям заметна бочкообразная дисторсия. Исправлять её перед подачей в модель не стали: бойцы большую часть времени находятся в центре кадра, где искажения минимальны, а лишнее преобразование каждого кадра съедает время, которого в реальном времени и так немного.
Зрителей и всех, кто попадает в кадр за пределами площадки, система размывает. Для задачи они бесполезны, а публиковать узнаваемые лица детей и родителей мы не хотим.

Что именно распознаём
Правила начисляют баллы по-разному в зависимости от того, чем нанесён удар и куда он пришёлся. Поэтому системе мало сказать «был удар». Ей нужно ответить на три вопроса: какой боец атаковал, какой частью тела и в какую зону соперника.
Бойцов различаем по цвету защиты: один выступает в красном шлеме и перчатках, второй в синем. Цвет экипировки даёт модели устойчивый признак, который не зависит от роста и комплекции. Каждый распознанный удар получает подпись с цветом атакующего и уверенностью модели, а в углу кадра выводится сводка по событиям текущего момента.
Одна модель или две
Можно обучить один детектор, который сразу находит удар и приписывает его бойцу. А можно разделить работу: одна модель ищет и ведёт бойцов, вторая ищет сам удар, после чего удар сопоставляется с ближайшим бойцом.
Одна модель быстрее и проще в эксплуатации, но ей приходится решать две задачи разного масштаба. Боец занимает большую часть кадра и виден постоянно, а удар - короткое событие в небольшой области: кулак у шлема, стопа у корпуса. Когда задачи смешаны, модель тянется к крупному и частому объекту и теряет как раз короткие события. Поэтому мы выбрали связку из двух моделей YOLO: отдельный детектор бойцов и отдельный детектор ударов. Каждая учится на своей задаче, и ошибки одной легче отлаживать, не трогая другую.
Самые неудобные кадры
Кадры, где бойцы стоят боком к камере и бьют в открытую, модель распознаёт легко. Сложности начинаются, когда спортсмены работают вплотную.
Синий бьёт ногой в голову, красный в тот же момент отвечает рукой в голову. Нога синего перекрывает корпус красного, рамки ударов наполовину накладываются, и система всё равно разводит два события и приписывает каждое своему бойцу. Уверенность по удару ногой здесь ниже, около 89%: часть движения закрыта.
В клинче оба бойца наклонились и обмениваются ударами рукой в голову. Шлемы опущены почти до пояса, силуэты слились, и человеку со стороны трудно сразу сказать, кто кого ударил. Модель фиксирует оба удара с уверенностью около 95-96%.
Проценты на кадрах - это уверенность модели в конкретной детекции, а не точность системы в целом. Точность считаем на отложенной выборке со сверкой с решениями судей и опубликуем её, когда закончится проверка на реальных поединках.

Железо
Компьютер и камеры стоят у заказчика в зале, управляем ими удалённо. Чтобы две модели успевали обрабатывать несколько потоков в реальном времени, используем TensorRT: он оптимизирует модели под конкретную видеокарту и заметно ускоряет инференс. Работает он на Linux, и это сразу определило выбор системы. На Windows связка тоже запускается, но медленнее.
В какой-то момент на машине оказалась свежая Ubuntu 26, и всё, что работало, перестало работать: камеры держали связь около двух минут и отваливались, компьютер начал зависать. Часть пакетов, на которых стоит стек, новую версию системы ещё не поддерживала. Решение - откат на Ubuntu 24.
На демо таких ситуаций не бывает, а во внедрении они случаются постоянно, и заметная часть работы уходит на то, чтобы модель стабильно работала на чужом железе.
Итог
Система распознаёт основные классы ударов, различает бойцов, справляется с клинчем и встречными атаками и работает в зале на локальном компьютере. Следующий этап - сверка с судейскими решениями на серии поединков и расширение списка техник.
Связка «детектор объекта плюс детектор короткого события» переносится на производственную линию один в один: вместо бойца там оператор, вместо удара операция, которую нужно засечь и сопоставить с регламентом. Приписывание события участнику по экипировке работает так же, как проверка, в каске человек или без неё. А опыт с оптимизацией инференса и капризным железом пригодился в первом же промышленном пилоте.
Опыт наших клиентов
Мой проект - тематический сайт знакомств. Я оцениваю его как проект высокого уровня сложности: очень непросто найти разработчиков, которые могли бы его реализовать. Я работал с командой Глеба в течение более двух лет с перерывами, которые были связаны исключительно с моим финансовым состоянием. По итогу могу сказать, что вполне доволен проделанной работой. Ребята знают своё дело, с хорошей коммуникабельностью, и всегда помогут советом. В данный момент вся основная работа сделана, сайт находится в рабочем состоянии и набирает пользователей. Есть идеи по добавлению новых функций, и если я решусь на это, то буду реализовывать их и дальше с этой командой.
Команда Глеба была профессиональной, оперативно реагировали на любые возникающие вопросы и шли навстречу в рабочих моментах. В ходе работы с командой были реализованы части и компоненты масштабного сервиса AI LMS платформы.
Мы разрабатывали несколько сервисов, часть из них запускалась в формате MVP: в частности, автоматизировали обработку запросов корпоративных заказчиков на аренду спортивных площадок. Команда проекта была на связи, и мы активно двигались по нашим требованиям. Достаточно оперативно реализовали и запустили продукт. Спасибо команде!
Обращались в YAVVI за доработками нашего сайта pakpakych.ru. Стек у нас не самый простой: Django, GarpixCMS и React SPA. До этого несколько подрядчиков ограничивались общими рекомендациями «в вакууме». Ребята зашли иначе: сначала провели полноценный технический аудит, разобрали каждый из 26 пунктов нашего ТЗ и по каждому написали, что уже реализовано, чего нет и почему. Отдельно ценно, что не стали продавать нам лишние работы, а честно указали, где функционал в проекте уже есть и где два пункта дублируют друг друга. По ходу аудита нашли критичную проблему, о которой мы не подозревали, и одна эта находка окупила всю работу. По каждой задаче была вилка часов и тип работ, никаких «примерно месяц», всё проверялось руками и подтверждалось инструментами. Каждая доработка выведена в админку, это принципиально: мы получили не разовый результат, а инструмент, плюс обучение нашей команды. Рекомендую тем, у кого нетиповой стек и нужен подрядчик, который сначала разберётся, а потом делает. Продолжаем сотрудничество.
Обсудим вашузадачу
Вам необязательно иметь чёткую задачу. Оставьте контакты, и мы разберём ваши текущие бизнес-процессы и честно покажем, где внедрение технологий даст реальный финансовый результат.
Связаться с нами


