SlideShare a Scribd company logo
1 of 24
Применение компьютерного зрения для
анализа спортивных соревнований
1
Руслан Байкулов @romul
Сергей Мушинский @cepera_ang
Николай Фалалеев @nikolasent
Москва
2017
Анализ спортивных соревнований
2
Анализ игры в настольный теннис
3
План презентации
4
• Схема системы
• Распознание судейского табло
• Сбор данных
• Аугментация тренировочного набора
изображений
• Детекция табло
• OCR счета с судейского табло
• Определение положения стола
• Детекция и отслеживание мяча
• Детекция мяча
• Предсказание траектории
• Определение игровых событий
Инструмены
5
Hardware:
• Intel i7 7700K
• Nvidia GTX 1080 Ti
• RAM 64 GB
Software
• OpenCV
• PyTorch
• Docker
Схема обработки видеопотока
6
Грубая
детекция мяча
Точная
детекция мяча
Детекция
табло
OCR табло
Определение
счета
(x,y)табло
(счет на
табло)
(счет)
Детекция
стола
Грубый фильтр
положения
~(x,y)мяч (x,y)стол
~(x,y)мяч
Точный фильтр
положения
(x,y)мяч
(x(t),y(t))мяч
Детектор
игровых событий
(счет по анализу игры)
Распознание счета на табло
7
Грубая
детекция мяча
Точная
детекция мяча
Детекция
табло
OCR табло
Определение
счета
(x,y)табло
(счет на
табло)
(счет)
Детекция
стола
Грубый фильтр
положения
~(x,y)мяч (x,y)стол
~(x,y)мяч
Точный фильтр
положения
(x,y)мяч
(x(t),y(t))мяч
Детектор
игровых событий
(счет по анализу игры)
Тренировочный набор изображений
8
Всего ~750 реальных изображений 27*27*7*7*5 = 178 605
синтетических изображений
Аугментации изображений
9
• Подстановка случайного фона
• Случайные геометрические
преобразования:
• Поворот
• Перспективные искажения
• Масштабирование
• Вырезание произвольного фрагмента
• Случайные преобразования цвета:
• Яркость и контраст
• Гауссов шум
• Размытие по Гауссу
• Случайный блик
Детекция табло
10
Каскад Хаара;
• Тренируется и работает на
CPU
• Быстрый
• Реализован в OpenCV
+ ФНЧ предсказаний между
кадрами
OCR счета на судейском табло
11
Conv64@3x3
Conv64@3x3
Conv128@3x3
Conv128@3x3
Conv256@3x3
Conv256@3x3
MaxPool2x2
MaxPool2x2
Dropout(p=0.25)
MaxPool2x2
MaxPool2x2
Dropout(p=0.25)
MaxPool2x2
MaxPool2x2
Dropout(p=0.25)
FC256
Dropout(p=0.25)
FC68
Conv: padding = 1, stride = 1,
ReLU
Adam
Loss: Softmax, cross entropy
Feature extractor
OCR счета на судейском табло
12
Детекция стола
13
Грубая
детекция мяча
Точная
детекция мяча
Детекция
табло
OCR табло
Определение
счета
(x,y)табло
(счет на
табло)
(счет)
Детекция
стола
Грубый фильтр
положения
~(x,y)мяч (x,y)стол
~(x,y)мяч
Точный фильтр
положения
(x,y)мяч
(x(t),y(t))мяч
Детектор
игровых событий
(счет по анализу игры)
Детекция стола
14
Детекция ограничивающего
прямоугольника
Семантическая сегментация
Поиск четырехугольников
Детекция стола
15
Feature extractor
FC 256
Dropout (p=0.25)
FC 4
Детекция ограничивающих
прямоугольников стола
Семантическая сегментация
Постобработка:
• Выделение контуров больше пороговой
площади
• Поиск четырехугольников среди
контуров
1500 изображений
Аугментации: поворот, отражение, шум,
перспективные искажения, сдвиг цветов
Детекция и отслеживание мяча
16
Грубая
детекция мяча
Точная
детекция мяча
Детекция
табло
OCR табло
Определение
счета
(x,y)табло
(счет на
табло)
(счет)
Детекция
стола
Грубый фильтр
положения
~(x,y)мяч (x,y)стол
~(x,y)мяч
Точный фильтр
положения
(x,y)мяч
(x(t),y(t))мяч
Детектор
игровых событий
(счет по анализу игры)
Положение мяча
17
Разность между кадрами (от 1 до 3)
Область уточняющего детектора
Положение мяча
18
Feature extractor
FC 4*(X+Y)
Dropout (p=0.25)
FC 2*X
Dropout (p=0.25)
FC X
sigmoid
FC 2*Y
Dropout (p=0.25)
FC Y
sigmoid
Behnke, S., Sheh, R., Sariel, S., Lee, D.D. Ball Localization for Robocup Soccer using
Convolutional Neural Networks, RoboCup’2016
Положение мяча
19
20
Точность: грубый детектор: 18 px, точный 2 px
Игровые события
21
Грубая
детекция мяча
Точная
детекция мяча
Детекция
табло
OCR табло
Определение
счета
(x,y)табло
(счет на
табло)
(счет)
Детекция
стола
Грубый фильтр
положения
~(x,y)мяч (x,y)стол
~(x,y)мяч
Точный фильтр
положения
(x,y)мяч
(x(t),y(t))мяч
Детектор
игровых событий
(счет по анализу игры)
Пороговый фильтр по изменению направления и величины вектора скорости
0,33x
22
23
Спасибо за внимание!
24

More Related Content

What's hot

презентация
презентацияпрезентация
презентация
LIANA180
 
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
yaevents
 

What's hot (19)

Правильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон КорзуновПравильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
 
Что API Карт забыл на сервере — Антон Корзунов
Что API Карт забыл на сервере — Антон КорзуновЧто API Карт забыл на сервере — Антон Корзунов
Что API Карт забыл на сервере — Антон Корзунов
 
презентация
презентацияпрезентация
презентация
 
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
 
Highload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексыHighload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексы
 
Python. Введение
Python. ВведениеPython. Введение
Python. Введение
 
Progr labrab-4-2013-c++
Progr labrab-4-2013-c++Progr labrab-4-2013-c++
Progr labrab-4-2013-c++
 
Кастомная кнопка: взгляд изнутри
Кастомная кнопка: взгляд изнутриКастомная кнопка: взгляд изнутри
Кастомная кнопка: взгляд изнутри
 
Кирилл Аверьянов — Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов —  Кастомная кнопка: взгляд изнутриКирилл Аверьянов —  Кастомная кнопка: взгляд изнутри
Кирилл Аверьянов — Кастомная кнопка: взгляд изнутри
 
Продолжаем говорить о микрооптимизациях .NET-приложений
Продолжаем говорить о микрооптимизациях .NET-приложенийПродолжаем говорить о микрооптимизациях .NET-приложений
Продолжаем говорить о микрооптимизациях .NET-приложений
 
Highload. Создание специализированных высокопроизводительных индексов
Highload. Создание специализированных высокопроизводительных индексовHighload. Создание специализированных высокопроизводительных индексов
Highload. Создание специализированных высокопроизводительных индексов
 
Komarov borba za-miesto-urfu_2013
Komarov borba za-miesto-urfu_2013Komarov borba za-miesto-urfu_2013
Komarov borba za-miesto-urfu_2013
 
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
 
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
 
Поговорим о микрооптимизациях .NET-приложений
Поговорим о микрооптимизациях .NET-приложенийПоговорим о микрооптимизациях .NET-приложений
Поговорим о микрооптимизациях .NET-приложений
 
Повышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JSПовышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JS
 
Дуров Р. - Cocos2d
Дуров Р. - Cocos2dДуров Р. - Cocos2d
Дуров Р. - Cocos2d
 
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
 

More from AvitoTech

Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)
AvitoTech
 

More from AvitoTech (20)

Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)
Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)
Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)
 
Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)
Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)
Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)
 
AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)
AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)
AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)
 
Yandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоYandex Tank - Арсений Фомченко
Yandex Tank - Арсений Фомченко
 
Migro - Юрий Богомолов
Migro - Юрий БогомоловMigro - Юрий Богомолов
Migro - Юрий Богомолов
 
TableKit - Максим Соколов
TableKit - Максим СоколовTableKit - Максим Соколов
TableKit - Максим Соколов
 
Jsonwire Grid - Михаил Подцерковский (Avito)
Jsonwire Grid - Михаил Подцерковский (Avito)Jsonwire Grid - Михаил Подцерковский (Avito)
Jsonwire Grid - Михаил Подцерковский (Avito)
 
SimplePEG - Алексей Охрименко
SimplePEG - Алексей ОхрименкоSimplePEG - Алексей Охрименко
SimplePEG - Алексей Охрименко
 
Как перестать бояться и начать контрибьютить - Алексей Кудрявцев
 Как перестать бояться и начать контрибьютить - Алексей Кудрявцев Как перестать бояться и начать контрибьютить - Алексей Кудрявцев
Как перестать бояться и начать контрибьютить - Алексей Кудрявцев
 
"Анонимизация фото с помощью Vision", Хомутников Тимофей, Avito
"Анонимизация фото с помощью Vision",  Хомутников Тимофей, Avito"Анонимизация фото с помощью Vision",  Хомутников Тимофей, Avito
"Анонимизация фото с помощью Vision", Хомутников Тимофей, Avito
 
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
 
"ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb...
"ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb..."ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb...
"ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Ramb...
 
ASO for iOS 11
ASO for iOS 11ASO for iOS 11
ASO for iOS 11
 
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)
 
Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...
Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...
Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...
 
Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)
Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)
Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)
 
Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)
Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)
Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)
 
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...
 
Конкурс Авито-2017 - Решение 2ое место - Василий Рубцов
Конкурс Авито-2017 - Решение 2ое место - Василий РубцовКонкурс Авито-2017 - Решение 2ое место - Василий Рубцов
Конкурс Авито-2017 - Решение 2ое место - Василий Рубцов
 
Конкурс Авито-2017 - Решение 3ое место
Конкурс Авито-2017 - Решение 3ое местоКонкурс Авито-2017 - Решение 3ое место
Конкурс Авито-2017 - Решение 3ое место
 

Применение компьютерного зрения для анализа спортивных соревнований (Николай Фалалеев, Constanta)

  • 1. Применение компьютерного зрения для анализа спортивных соревнований 1 Руслан Байкулов @romul Сергей Мушинский @cepera_ang Николай Фалалеев @nikolasent Москва 2017
  • 3. Анализ игры в настольный теннис 3
  • 4. План презентации 4 • Схема системы • Распознание судейского табло • Сбор данных • Аугментация тренировочного набора изображений • Детекция табло • OCR счета с судейского табло • Определение положения стола • Детекция и отслеживание мяча • Детекция мяча • Предсказание траектории • Определение игровых событий
  • 5. Инструмены 5 Hardware: • Intel i7 7700K • Nvidia GTX 1080 Ti • RAM 64 GB Software • OpenCV • PyTorch • Docker
  • 6. Схема обработки видеопотока 6 Грубая детекция мяча Точная детекция мяча Детекция табло OCR табло Определение счета (x,y)табло (счет на табло) (счет) Детекция стола Грубый фильтр положения ~(x,y)мяч (x,y)стол ~(x,y)мяч Точный фильтр положения (x,y)мяч (x(t),y(t))мяч Детектор игровых событий (счет по анализу игры)
  • 7. Распознание счета на табло 7 Грубая детекция мяча Точная детекция мяча Детекция табло OCR табло Определение счета (x,y)табло (счет на табло) (счет) Детекция стола Грубый фильтр положения ~(x,y)мяч (x,y)стол ~(x,y)мяч Точный фильтр положения (x,y)мяч (x(t),y(t))мяч Детектор игровых событий (счет по анализу игры)
  • 8. Тренировочный набор изображений 8 Всего ~750 реальных изображений 27*27*7*7*5 = 178 605 синтетических изображений
  • 9. Аугментации изображений 9 • Подстановка случайного фона • Случайные геометрические преобразования: • Поворот • Перспективные искажения • Масштабирование • Вырезание произвольного фрагмента • Случайные преобразования цвета: • Яркость и контраст • Гауссов шум • Размытие по Гауссу • Случайный блик
  • 10. Детекция табло 10 Каскад Хаара; • Тренируется и работает на CPU • Быстрый • Реализован в OpenCV + ФНЧ предсказаний между кадрами
  • 11. OCR счета на судейском табло 11 Conv64@3x3 Conv64@3x3 Conv128@3x3 Conv128@3x3 Conv256@3x3 Conv256@3x3 MaxPool2x2 MaxPool2x2 Dropout(p=0.25) MaxPool2x2 MaxPool2x2 Dropout(p=0.25) MaxPool2x2 MaxPool2x2 Dropout(p=0.25) FC256 Dropout(p=0.25) FC68 Conv: padding = 1, stride = 1, ReLU Adam Loss: Softmax, cross entropy Feature extractor
  • 12. OCR счета на судейском табло 12
  • 13. Детекция стола 13 Грубая детекция мяча Точная детекция мяча Детекция табло OCR табло Определение счета (x,y)табло (счет на табло) (счет) Детекция стола Грубый фильтр положения ~(x,y)мяч (x,y)стол ~(x,y)мяч Точный фильтр положения (x,y)мяч (x(t),y(t))мяч Детектор игровых событий (счет по анализу игры)
  • 15. Детекция стола 15 Feature extractor FC 256 Dropout (p=0.25) FC 4 Детекция ограничивающих прямоугольников стола Семантическая сегментация Постобработка: • Выделение контуров больше пороговой площади • Поиск четырехугольников среди контуров 1500 изображений Аугментации: поворот, отражение, шум, перспективные искажения, сдвиг цветов
  • 16. Детекция и отслеживание мяча 16 Грубая детекция мяча Точная детекция мяча Детекция табло OCR табло Определение счета (x,y)табло (счет на табло) (счет) Детекция стола Грубый фильтр положения ~(x,y)мяч (x,y)стол ~(x,y)мяч Точный фильтр положения (x,y)мяч (x(t),y(t))мяч Детектор игровых событий (счет по анализу игры)
  • 17. Положение мяча 17 Разность между кадрами (от 1 до 3) Область уточняющего детектора
  • 18. Положение мяча 18 Feature extractor FC 4*(X+Y) Dropout (p=0.25) FC 2*X Dropout (p=0.25) FC X sigmoid FC 2*Y Dropout (p=0.25) FC Y sigmoid Behnke, S., Sheh, R., Sariel, S., Lee, D.D. Ball Localization for Robocup Soccer using Convolutional Neural Networks, RoboCup’2016
  • 21. Игровые события 21 Грубая детекция мяча Точная детекция мяча Детекция табло OCR табло Определение счета (x,y)табло (счет на табло) (счет) Детекция стола Грубый фильтр положения ~(x,y)мяч (x,y)стол ~(x,y)мяч Точный фильтр положения (x,y)мяч (x(t),y(t))мяч Детектор игровых событий (счет по анализу игры)
  • 22. Пороговый фильтр по изменению направления и величины вектора скорости 0,33x 22
  • 23. 23