Implémentation d'un lecteur IA pour le jeu vidéo League of Legends basé sur la reconnaissance d'images à l'aide de PyTorch
Vidéo de démonstration : https://youtu.be/iB4PoNJuXzc
Attention : L'ancienne version utilisant Tensorflow se trouve dans la branche "LeagueAI_2017".
Attention : Ce projet est encore en développement, les jeux de données que je génère et les poids de détection d'objets YOLOv3 que j'ai entraînés seront bientôt disponibles !
Il s'agit d'une version plus récente de l'ancienne implémentation et fournira un cadre qui vous permettra de créer vos propres applications basées sur la détection d'objets dans le jeu. À titre d'exemple, je vais implémenter l'ancien bot LeagueAI 2017 sur ce framework. Vidéo de démonstration de la mise en œuvre de Tensorflow à partir de 2017 : https://www.youtube.com/watch?v=KRWFCaXfOTk
La tâche est de créer un agent capable de jouer à des jeux d'arène de combat en ligne (MOBA) massivement multijoueurs à la 3ème personne comme League of Legends, Dota 2 et Heroes of the Storm avec la même contribution qu'un joueur humain, à savoir la vision. Étant donné que League of Legends ne fournit pas d'interface au jeu, la détection d'objets est utilisée. Dans ce projet, une implémentation python du détecteur d'objets Yolo v3 et un moyen de générer aléatoirement une quantité infinie de données d'entraînement sont introduits.
Pour plus d'informations sur le détecteur d'objets, reportez-vous à mon rapport technique sur : https://arxiv.org/abs/1905.13546 ou directement sur le site YOLOv3 [2]
FAIRE
Créer de grands ensembles de données à partir de zéro peut demander beaucoup de travail. Pour la première mise en œuvre de LeageAI, environ 700 images étiquetées à la main ont été utilisées. L'étiquetage de 700 images a nécessité environ 4 jours de travail et ne comprenait que 4 objets de jeu (1 modèle de champion, des serviteurs alliés et ennemis et des tours ennemies). Par conséquent, le nouvel ensemble de données a été créé en générant automatiquement des données d’entraînement basées sur des modèles 3D extraits du jeu.
pyFrameExporter.py
pour extraire des images individuelles des clips. Pour les minions j'ai utilisé Adobe After Effects pour ajouter un fond vert aux vidéos des minions et des tours (tous les objets dont je ne trouvais pas les modèles 3D). Pour chacun des objets exportés, j'ai utilisé le script pyExportTransparentPNG.py
. Le script supprime l'arrière-plan vert/violet des captures d'écran individuelles et vous laisse avec le png masqué d'un objet. De plus, le script recadre les images en fonction du contenu et supprime l'espace transparent en excès.Cela me laisse environ 1000 images masquées de chaque objet qui peuvent ensuite être utilisées pour générer de fausses captures d'écran étiquetées du jeu.
Pour générer une grande variété de captures d'écran, le script peut être ajusté pour :
En utilisant cette méthode, un ensemble de données de plusieurs milliers de fausses captures d’écran différentes étiquetées peut être généré en quelques heures.
Une description complète du processus de génération d'ensembles de données et de leur évaluation par rapport aux données étiquetées manuellement peut être trouvée dans la publication suivante : https://arxiv.org/pdf/1905.13546.pdf
Pour citer, veuillez utiliser :
@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}
}
FAIRE
[1] Implémentation de la détection d'objets Yolov3 à partir de zéro : https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch
[2] Pour la formation : https://pjreddie.com/darknet/yolo/, Yolov3 : An Incremental Improvement, J. Redmond et A. Farhadi, 2018