编者按:近日,美国的一位计算机视觉爱好者、英雄联盟(LOL)玩家Farza开源了自己的游戏数据集DeepLeague,引起了圈内人士和电子竞技游戏爱好者的广泛关注。据了解,该数据集包含游戏小地图和其上的超过10万个标记图像,所有数据来自正规比赛和作者个人购买的Replay。
首先为各位奉上新鲜的GitHub Repo+数据集地址:github.com/farzaa/DeepLeague。
以下是具体介绍:
想象一下,如果此刻你是一名足球教练,你的球员刚刚输掉了比赛,急于分析失败原因的你会怎么做?一种常规的方法是观看比赛录像,从全局把握赛场上的问题。而正在这时,有人突然塞给你一个计算机程序,它录下了整场比赛,还框出了你的队员的实时位置,如下图所示:
作为一个教练,你会不会觉得这个功能很有用?它帮你省去了一个个找队员的麻烦,让你能更轻松地把握宏观局势,并对队员作出客观、详细的评价。换句话说,这时计算机正在帮你“观看”录像。借助这个工具,如果你想提高球队的防守能力,你可以重点看对手进球时己方球员的位置和状态,并用新战略填补当前弱点。
那么,这样的概念能用于同样需要战略的游戏吗?
答案显然是:YES。
DeepLeague是第一个将深度学习、计算机视觉和LOL结合在一起的算法和数据集,它拥有超过10万幅图像,允许开发者轻松访问经编码的屏幕像素,从而将对整体战略的分析和理解提升到一个新的高度。
输入比赛小地图后,它会用方框框出图像中的英雄,并显示相应名称、坐标和评分。因此,如果你给了DeepLeague一个VOD(其实也就是一堆图像),它会显示这样一幅图:
上图是用了深度卷积神经网络,并在超过10万张经标记的小地图图像上训练后的结果。可以发现,尽管没有其他任何输入,算法还是能标出比赛中每一时刻每一个英雄的实时位置。通过这个输出,我们能做这几件事:
分析各英雄路线。观察某个英雄的运动轨迹:他一开始在哪一路、什么时候去支援、什么时候回来、他在哪一路拿人头了……
分析各英雄操作时机。应该什么时候蹲草丛、什么时候打野、什么时候抱团推进、什么时候打大龙……
分析各路战况。观察哪一路在拆对面的塔、哪一路英雄死了、哪一路需要支援、哪一路破路了、哪路英雄solo死了、哪路英雄传送回家了……
最重要的是,如果你把Faker的VOD输入DeepLeague,你就能从数据角度分析、学习他建立优势的实用技巧,而不用自己凭感觉总结了。
对于LOL玩家来说,这个实时标记的功能可能只是在LoL esport场景中有较大的应用空间,因为只需一个VOD,甚至是随机英雄比赛的VOD,你就能对比不同队伍间的操作、水平差异。但对于深度学习爱好者而言,这个数据集的意义在于数据解读和统计。RTS游戏现在还缺乏判断优势的合理逻辑,很多人为的总结都可能是有失偏颇的,利用DeepLeague,机器能通过大数据找出具有普适性意义的优势特征,为构建AI提供知识积累。
事实上,游戏一直是深度学习的一个理想模拟场景,通过游戏内的博弈,我们能让机器模拟、学习人类智能的复杂性。自从AlphaGo在围棋领域击败李世石后,DeepMind把目标转向了传统RTS游戏星际争霸2,也掀起了一股电子竞技AI的研究热。
截至目前,暴雪已和DeepMind达成合作,推出了星际2 API,Facebook等大型公司和研究机构也纷纷上线了相应大型数据集;Valve一开始就开放了Dota2的API,允许开发者读取数据。但是,LOL的开发者拳头到现在还没有开放任何读取游戏过程信息的API,它的API只提供比赛后的统计数据,如人头、死亡次数等。当然,国内开发者连这个“福利”都没有。
DeepLeague开源的意义更多是统计分析上的。因为目前已经取得研究成果的一些游戏,如雅达利游戏、围棋等,大多属于对称博弈,即参与者的所有条件都是完全相同的,而RTS游戏是即时的,不同英雄/兵种的策略不同,获得的奖励也不同,它是典型的非对称博弈。目前这一块还没有什么突破,如果感兴趣,可以阅读DeepMind的最新论文:非对称博弈的对称分解,了解其中的难点。
因此,DeepLeague最直接的贡献是可以让每一位勤奋刻苦的教练/数据分析师收集、了解致胜之法,然后将这些特征融入实际战略中,无论是实际比赛中的队员,还是处于萌芽期的AI。
在拳头松口之前,LOL客服不会提供比赛数据,一来这违反服务条款,二来数据被加密了,很难破解。即便玩家有心免费贡献自己的VOD,但因为还要手动添加每一秒的信息,这不是大多数人能接受的。所以,在这个背景下,作者自己标记了10万张图(当然用了工具),这本身就值得尊敬。
在LOL中,玩家的视野虽然比第一视角游戏大不少,但还是只停留在局部地区。小地图虽然图形简单,美术细节少,但它囊括了大部分游戏状态信息,能用最简单直观的方式展示对局的复杂性。对于构建数据集,尤其是用于深度学习的数据集,这样的图像质量更好,也能帮助算法缩短学习时间。
小地图上的这些预测边界框是用物体检测DNN实现的,这里我们不具体介绍网络的构建过程。作者本身是自驾车方向的计算机视觉从业人员,有这方面了解的读者可以结合无人驾驶汽车行驶过程中的物体检测方法自行展开,或找论智君聊一聊。
这是一个开源算法和数据集,并非现成工具,如果你想试一试,首先确保你的电脑里有git、conda和brew。以下代码适用于Mac OS,Linux系统用户需要自己做一些调整,主要是用别的方法安装软件包,而不是brew
。如果你是Windows用户,你可以看下逻辑自己写一些,这边没有现成的代码。
$ conda
$ git
$ brew
测试你的计算机能否运行这三个命令,如果可以,则继续。
# get the repo.
$ git clone https://github.com/farzaa/DeepLeague.git
$ cd DeepLeague
$ cd YAD2K
$ conda create -n DeepLeague python=3.6
$ source activate DeepLeague
$ conda install python.app # this install python as a framework for mat plot lib.
# bunch if packages you need.
# if you are using ubuntu, use this instead https://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/
# instead of opencv-python.
$ pip install opencv-python youtube_dl
$ conda install -c menpo ffmpeg
$ pip install numpy h5py pillow matplotlib
$ pip install tensorflow
$ pip install keras
# get the supporting files for the neural net.
$ brew install wget
$ brew install ffmpeg --with--libvpx # this may take a while.
$ wget http://pjreddie.com/media/files/yolo.weights
$ wget https://archive.org/download/DeepLeagueWeights/trained_stage_3_best.h5
$ wget https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolo.cfg
$ pythonw yad2k.py yolo.cfg yolo.weights model_data/yolo.h5 # we need to use pythonw when calling DeepLeague!
最后一个命令很重要,它可能会出现一些bug。如果出现了,你可以Google一下解决方法,可能和你的系统和硬件有关系。
处理完后,下载这个文件:
drive.google.com/file/d/1-r4Ex3OC-MTcTwNE7xJkdpiSz3rb8A/view
并放进/YAD2K里,DeepLeague就可以运行了。
这个repo有一些小功能,但如果你想做的是分析一个VOD的话,用test_deep_league.py
。这是作者制作的一个小命令行工具,它支持三种VOD路径:YouTube链接、本地MP4路径和图像路径。需要注意的是,视频必须是1080P!1080P!1080P!,因为DeepLeague只在1080P的视频上做过训练。
输入命令:
pythonw test_deep_league.py -out output youtube -yt https://www.youtube.com/watch?v=vPwZW1FvtWA -yt_path /output -start 0:00:30 -end 0:01:00
DeepLeague开始下载:
DeepLeague开始预测边界框:
如果你想用本地mp4,输入以下命令:
pythonw test_deep_league.py -out output mp4 -mp4 /Volumes/DATA/data/data/C9_CLG_G_2_MARCH_12_2017/vod.mp4
最后,DeepLeague是完全免费+开源的,为了感谢作者的贡献,如果有读者认识国内外大型竞赛组织的高层人员(建议非韩),且他们有意向制作LOL版AI,请向他们推荐Farza,作者希望能找到这方面的工作。
原文地址:medium.com/farzatv/deepleague-leveraging-computer-vision-and-deep-learning-on-the-league-of-legends-mini-map-giving-d275fd17c4e0