使用 PyTorch 实现基于图像识别的视频游戏英雄联盟 AI 播放器
演示视频:https://youtu.be/iB4PoNJuXzc
注意:使用Tensorflow的旧版本可以在分支“LeagueAI_2017”中找到。
注意:该项目仍在开发中,我生成的数据集和我训练的YOLOv3目标检测权重很快就会发布!
这是旧实现的更新版本,并应提供一个框架,让您可以基于检测游戏中的对象来构建自己的应用程序。作为示例,我将在此框架上实现旧的 2017 LeagueAI 机器人。 2017 年 Tensorflow 实施的演示视频:https://www.youtube.com/watch?v=KRWFCaXfOTk
任务是创建一个代理,能够使用与人类玩家相同的输入(即视觉)来玩《英雄联盟》、《Dota 2》和《风暴英雄》等第三人称大型多人在线竞技场游戏 (MOBA)。由于《英雄联盟》不提供游戏界面,因此使用对象检测。在这个项目中,介绍了 Yolo v3 对象检测器的 Python 实现以及随机生成无限量训练数据的方法。
有关物体检测器的更多信息,请参阅我的技术报告:https://arxiv.org/abs/1905.13546 或直接访问 YOLOv3 网站 [2]
待办事项
从头开始创建大型数据集可能需要大量工作。 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}
}
待办事项
[1] 从头开始实现 Yolov3 目标检测:https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch
[2] 训练:https://pjreddie.com/darknet/yolo/,Yolov3:增量改进,J. Redmond 和 A. Farhadi,2018