Генерация данных для обработки изображений - PullRequest
0 голосов
/ 23 марта 2020

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

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

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

enter image description here

1 Ответ

1 голос
/ 24 марта 2020

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

  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 (Если вы хотите использовать вращение на изображения)

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

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

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

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

Используйте этот режим, если вы используете Windows https://github.com/AlexeyAB/darknet

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

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

Я сделал небольшую настройку (например, отправил массивы OpenCV / numpy напрямую в модель), чтобы ускорить работу API dar knet python на сервере (сервер модели tenorflow с REST и gRP C). Я также написал flask сервер для него. Вы можете найти его здесь -

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

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

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