Implementación de un AI Player para el videojuego League of Legends basado en Reconocimiento de Imágenes usando PyTorch
Vídeo de demostración: https://youtu.be/iB4PoNJuXzc
Atención: la versión anterior que usa Tensorflow se puede encontrar en la rama "LeagueAI_2017".
Atención: este proyecto aún está en desarrollo, los conjuntos de datos que genero y los pesos de detección de objetos YOLOv3 que entrené estarán disponibles pronto.
Esta es una versión más nueva de la implementación anterior y proporcionará un marco que te permitirá crear tus propias aplicaciones basadas en la detección de objetos en el juego. Como ejemplo, implementaré el antiguo bot LeagueAI de 2017 en este marco. Vídeo de demostración de la implementación de Tensorflow de 2017: https://www.youtube.com/watch?v=KRWFCaXfOTk
La tarea es crear un agente que sea capaz de jugar juegos de campo de batalla en línea (MOBA) multijugador masivo en tercera persona como League of Legends, Dota 2 y Heroes of the Storm con la misma información que un jugador humano, es decir, la visión. Dado que League of Legends no proporciona una interfaz para el juego, se utiliza la detección de objetos. En este proyecto se introduce una implementación en Python del detector de objetos Yolo v3 y una forma de generar aleatoriamente una cantidad infinita de datos de entrenamiento.
Para obtener más información sobre el detector de objetos, consulte mi informe técnico en: https://arxiv.org/abs/1905.13546 o directamente al sitio web de YOLOv3 [2]
HACER
Crear grandes conjuntos de datos desde cero puede requerir mucho trabajo. Para la primera implementación de LeageAI se utilizaron alrededor de 700 imágenes etiquetadas a mano. Etiquetar 700 imágenes tomó alrededor de 4 días de trabajo y solo incluyó 4 objetos del juego (1 modelo de campeón, súbditos aliados y enemigos y torres enemigas). Por lo tanto, el nuevo conjunto de datos se creó generando automáticamente datos de entrenamiento basados en modelos 3D extraídos del juego.
pyFrameExporter.py
para extraer imágenes individuales de los clips. Para los minions utilicé Adobe After Effects para agregar un fondo verde a los videos de los minions y las torres (todos objetos donde no pude encontrar los modelos 3D). Para cada uno de los cuadros de objetos exportados utilicé el script pyExportTransparentPNG.py
. El script elimina el fondo verde/púrpura de las capturas de pantalla individuales y te deja con el png enmascarado de un objeto. Además, el script recorta las imágenes según el contenido y elimina el exceso de espacio transparente.Esto me deja con alrededor de 1000 imágenes enmascaradas de cada objeto que luego pueden usarse para generar capturas de pantalla falsas etiquetadas del juego.
Para generar una gran variedad de capturas de pantalla, el script se puede ajustar a:
Con este método se puede generar en cuestión de horas un conjunto de datos de miles de capturas de pantalla falsas etiquetadas diferentes.
Puede encontrar una descripción completa del proceso de generación y evaluación del conjunto de datos en comparación con los datos etiquetados manualmente en la siguiente publicación: https://arxiv.org/pdf/1905.13546.pdf
Para citar por favor utilice:
@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}
}
HACER
[1] Implementación de la detección de objetos Yolov3 desde cero: https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch
[2] Para capacitación: https://pjreddie.com/darknet/yolo/, Yolov3: An Incremental Improvement, J. Redmond y A. Farhadi, 2018