Генерация данных для обработки изображений

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

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

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

введите описание изображения здесь

Всего 1 ответ


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

  1. Сначала создайте набор данных игроков с ограничивающими рамками (около 500-1k, затем используйте увеличение, чтобы заработать еще несколько тысяч). Вы можете использовать следующие инструменты для аннотирования:

https://github.com/developer0hye/Yolo_Label (отлично работает, но только для Windows)

https://github.com/AlexeyAB/Yolo_mark

https://github.com/heartexlabs/label-studio (это более сложный инструмент аннотации для многих других задач)

С этими инструментами аннотирование данных не должно занимать более нескольких часов.

Есть много инструментов, таких как - https://github.com/mdbloice/Augmentor

https://github.com/wagonhelm/rotation_augment (если вы хотите использовать вращение на изображениях)

  1. Поскольку игроки будут двигаться, вам нужно что-то с хорошим FPS, а также с разумной картой. Из моих экспериментов со многими моделями обнаружения объектов я обнаружил, что yolov3 (darknet) является наиболее стабильным.

Я бы посоветовал перейти на darknet YOLO, который написан на C ++, вам не нужно писать какой-либо основной код, он будет быстрым и точным.

https://pjreddie.com/darknet/yolo/

Используйте этот репозиторий, если вы работаете в Linux https://github.com/pjreddie/darknet

Используйте этот, если вы находитесь в Windows https://github.com/AlexeyAB/darknet

  1. Перед тренировкой вам нужно найти оптимальный размер привязки для вашего набора данных. Я написал простое k-средство, чтобы найти размер привязки в любом yolo-совместимом наборе данных.

https://github.com/zabir-nabil/yolov3-anchor-clustering

  1. Я выполнил небольшую настройку (например, отправку OpenCV / numpy массивов непосредственно в модель), чтобы ускорить запуск API-интерфейса darknet на сервере (сервер модели tenorflow с REST и gRPC). Я также написал фляж-сервер для этого. Вы можете найти это здесь -

https://github.com/zabir-nabil/tf-model-server4-yolov3

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


Есть идеи?

10000