Реализация AI Player для видеоигры League of Legends на основе распознавания изображений с использованием PyTorch.
Демо-видео: https://youtu.be/iB4PoNJuXzc
Внимание: Старую версию с использованием Tensorflow можно найти в ветке «LeagueAI_2017».
Внимание: этот проект все еще находится в разработке, наборы данных, которые я генерирую, и веса обнаружения объектов YOLOv3, которые я обучил, скоро станут доступны!
Это более новая версия старой реализации, предоставляющая основу, позволяющую создавать собственные приложения на основе обнаружения объектов в игре. В качестве примера я реализую на этом фреймворке старого бота LeagueAI 2017 года. Демонстрационное видео реализации Tensorflow 2017 года: https://www.youtube.com/watch?v=KRWFCaXfOTk
Задача состоит в том, чтобы создать агента, способного играть в массовые многопользовательские онлайн-игры на боевых аренах от третьего лица (MOBA), такие как League of Legends, Dota 2 и Heroes of the Storm, с теми же входными данными, что и игрок-человек, а именно с видением. Поскольку League of Legends не предоставляет интерфейса игры, используется обнаружение объектов. В этом проекте представлена реализация детектора объектов Yolo v3 на Python и способ случайной генерации бесконечного количества обучающих данных.
Для получения дополнительной информации о детекторе объектов обратитесь к моему техническому отчету по адресу: https://arxiv.org/abs/1905.13546 или непосредственно на веб-сайте YOLOv3 [2].
TODO
Создание больших наборов данных с нуля может оказаться очень трудоемким занятием. Для первой реализации LeageAI было использовано около 700 размеченных вручную изображений. Разметка 700 картинок заняла около 4 дней работы и включала всего 4 игровых объекта (1 модель чемпиона, союзные и вражеские миньоны и вражеские башни). Поэтому новый набор данных был создан путем автоматической генерации обучающих данных на основе 3D-моделей, извлеченных из игры.
pyFrameExporter.py
для извлечения отдельных изображений из клипов. Для миньонов я использовал Adobe After Effects, чтобы добавить зеленый фон к видео миньонов и башен (все объекты, 3D-модели которых мне не удалось найти). Для каждого из экспортируемых объектов я использовал скрипт pyExportTransparentPNG.py
. Скрипт удаляет зеленый/фиолетовый фон с отдельных снимков экрана и оставляет замаскированные PNG объектов. Кроме того, скрипт обрезает изображения по содержимому и удаляет лишнее прозрачное пространство.В результате у меня остается около 1000 замаскированных изображений каждого объекта, которые позже можно использовать для создания помеченных поддельных скриншотов игры.
Для создания большого количества снимков экрана скрипт можно настроить так:
Используя этот метод, за считанные часы можно создать набор данных из многих тысяч различных помеченных поддельных скриншотов.
Полное описание процесса создания набора данных и его оценки по сравнению с данными, размеченными вручную, можно найти в следующей публикации: https://arxiv.org/pdf/1905.13546.pdf.
Для цитирования используйте:
@article{leagueaidatasetgeneration,
title={LeagueAI: Improving object detector performance and flexibility through automatically generated training data and domain randomization},
author={Struckmeier, Oliver},
journal = {arXiv},
year={2019}
}
TODO
[1] Реализация обнаружения объектов Yolov3 с нуля: https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch
[2] Для обучения: https://pjreddie.com/darknet/yolo/, Yolov3: An Incremental Improvement, Дж. Редмонд и А. Фархади, 2018 г.