翻譯 | 曹永勝 校對 | 李振 整理 | 凡江
深度聯盟(DeepLeague):在英雄聯盟(League of Legends)的小地圖上應用機器視覺和深度學習,並給出了超過10萬個的標記圖像,用於後續的電競(esports)研究。
GitHub Repo + Dataset:https://github.com/farzaa/DeepLeague
作者注1:所有這些都是免費和開源的。我在這篇文章的第2部分解釋了所有的技術細節,你可以在這裡找到。如果您有任何問題,請隨時與我聯繫。
作者注2:如果你是一個LCS團隊(The League of Legends Championship Series,LCS。英雄聯盟冠軍系列賽),請雇傭我!我將幫助你打敗韓國 Overlords。在Twitter上聯繫我吧。
DeepLeague正在工作。 我輸入的只是一個LCS遊戲的VOD(Video-On-Demand,VOD,點播視頻),通過分析VOD的像素,DeepLeague可以告訴我們每個冠軍是如何在地圖上移動的。 厲害!
暫時想象自己是一名足球隊教練,有人給你提供了一個程序。它可以播放足球比賽的視頻,並在比賽的每一個時刻輸出你球隊球員的坐標。 如果我們將數據可視化,它看起來就像下面的GIF圖片,你可以看到藍色團隊的玩家們有一個小盒子,上面畫著程序生成的程序。程序替我們「監控」比賽。
通過哪些藍色隊員身上的邊界框(the bounding boxes),可以看出我們的程序在監控比賽的視頻
你可以看出這個信息將對一個足球教練多麼有用么?有了這些數據,你可以對你的球員運動做無數的分析。例如,如果想提高自己球隊的防守能力,可以分析每個球員的運動。不論是對方球隊進了1個球時,或是你想創造1個新的策略來彌補缺陷時,都可以使用。
那麼,這個概念可以應用到視頻遊戲中嗎?
答案是肯定的,我可以展示給你看。
DeepLeague是什麼?
DeepLeague是第一個將計算機視覺、深度學習和英雄聯盟結合在一起的算法和數據集(超過100,000個圖像),通過讓開發人員能夠輕鬆訪問遊戲中像素的數據,將LoL分析提升到下一個級別。給定一個關於英雄聯盟小地圖的圖片,它可以為冠軍選手預測邊界框和標籤。所以,你給DeepLeague的是一個VOD(基本上只是一堆圖像),它會輸出這樣的東西:
跟着Rengar !對DeepLeague(左)的輸入僅僅是一張迷你地圖的圖像,沒有別的。輸出描述了比賽中所有冠軍的坐標和冠軍的名字。厲害!
它使用深度卷積神經網絡,並在一個非常大的數據集上進行訓練,這個數據集大約有10萬個標記的迷你地圖圖像(見下圖),我以編程方式創建並免費贈送修改為我編了個程序完成了標註工作,並免費發佈給大家。硅谷AI公司花了很多錢來獲得標籤上的數據。我沒有錢,但有時把錢扔在一個問題上不一定是最好的解決辦法。有時候你只是需要一點小聰明!
然後是數據集本身,我給出了我創建數據集的實際方法,你可以在第2部分中讀到。我想要AI在esports方面的研究成長起來,並且開始有開發支持它的開發人員。我希望通過提供數據集/方法,人們會變得更感興趣。
Regi』s 在我給他看了 DeepLeague之後的反應。
DeepLeague 「監控」着小地圖,然後在沒有任何其他輸入的情況下,告訴你,每個冠軍選手在每個時刻的位置。
所以,只要有一段視頻,你就可以在比賽的每一秒內聚集冠軍和冠軍的位置。這方面有很多用例,特別是在LoL esport場景中,這些數據非常有用,因為你需要給DeepLeague提供一個玩家遊戲的VOD。這意味着它適用於scrims、solo-q遊戲和其他個人遊戲,其中所有需要的都是一個簡單的VOD(甚至ARAM! )
在DeepLeague之前,沒有辦法得到這種遊戲內的數據,因為Riot API只提供post遊戲分析。
當你拿到DeepLeague的輸出數據后,可以做的事情:
分析一下打野的路徑,他在哪裡開始他的路線,當他在哪裡,當他回來的時候,他在什麼時候,施加了最大的壓力。
分析團隊什麼時候拿「龍」,當他們決定拿「龍」的時候,他們是如何在地圖上以團隊的形式輪換的,作為一個團隊,他們是如何拿下男爵的的。
分析什麼時候一路會崩,什麼時候他們受到其他路想的壓力時,什麼時候他們會失去一條線路,什麼他們被單殺,什麼時候他們離開推進的線路。
當然. 你可以在Faker的VODs上運行DeepLeague,來收集關於他如何操作和真正學習的數據。
讓我們討論一下。
我為什麼做這個?
這個GIF圖片沒有任何用途,我就是喜歡這兩個人
我已經在電子競技系統工作了大約四年了,其中最有趣的事情之一就是做一個支持團隊的幕後工作。球員會得到教練、分析師、廚師、健身教練、心理學家等方面的瘋狂支持,而球員們除了比賽本身沒什麼可擔心的。 但是,這個行業剛剛興起,目前使用的方法可能不是最好的。 為了說明這一點,我想談談一個全職英雄聯盟分析師的一些主要職責:
觀察相當長時間的不同地區的比賽視頻,比如歐洲和韓國。在比賽水平提升前,抓住其中重要的元素,使自己隊伍處於領先地位。
對那些似乎在特定的補丁上過度使用的冠軍做筆記,這樣他們就可以在自己的遊戲中利用這些「力量選擇」。
記錄下無數其他的事情,比如:守衛分佈,叢林路線,團隊拿龍的時候,團隊聚集在一起的時機,團隊蹲人的時機,玩家死亡的地方,他們推進的地方等等。
當你想成為一名分析師的時候,閱讀了職位描述時
這適用於每一位辛勤工作的教練/分析師。確保你的團隊有最好的獲勝機會的唯一方法是,先收集所有這些信息,理解它,然後弄清楚如何將信息反饋給那些在遊戲中處於主導位置的玩家。我相信你可以看到,沒有教練或分析師的英雄聯盟球隊是少數!
但是,分析師的工作聽起來很痛苦。最糟糕的是,因為這個行業是新興的,目前對分析師來說最好的工具就是微軟的Excel。
現在,您已經了解了一些幕後發生的事情,讓我來談談為什麼更有用的工具不存在 。
要理解的最重要的事情之一是,Riot Games沒有任何API,可以讓你知道在遊戲中每秒會發生什麼。他們所提供的只是遊戲后的統計數據,比如死亡,死亡等等。這對人們來說是很糟糕的,就像傳奇隊的職業聯盟一樣,他們會從這些詳細的現場遊戲信息中獲益。這裡有一個非永久性的解決方案,我稍後會解釋,但它只適用於live LCS遊戲。讓我們看一看可能的情況。
Riot聽到這句話「Hey Riot! 你是否會給我們一個API,給我們開發者更多的實時數據,這樣我們就可以改進分析,創建其他工具來幫助玩家變得更好?「時的反應
讓我們假設TSM是另一個團隊,比如Cloud 9。玩家們將在各自的遊戲房間里玩他們的個人電腦。遊戲結束后,沒有辦法弄清楚到底發生了什麼,而又不去看VOD。他死在哪裡?在哪裡他守衛嗎?他從哪裡開始他的打野?所有這些信息都必須手動聚合。有些人可能會說,「為什麼不能直接將數據與客戶端聚合?」,1)這是違反服務條款的,2)它是加密的,尤其難以破解。
小地圖
我馬上就知道我想用小地圖來做這個小項目。它以最簡單的方式提供了關於這個遊戲的最簡單的信息。對於你的數據集來說,這是一種非常好的獲得數據的方式,尤其是在深度學習的時候,因為這意味着你的算法可能會更容易學習。
小地圖還提供了與遊戲狀態相關的驚人數量的信息。如果一個人每分鐘看一次微型地圖,他們就會很清楚地了解誰是贏家,有多少建築被毀,守衛的位置等等。下一步你會搞清楚我是如何通過計算機視覺來收集這些數據的。
我能在小地圖上訓練一個深度神經網絡來預測邊界框,並分類冠軍隊員么?
在過去,我曾使用過深度神經網絡來處理與自動駕駛汽車相關的任務,而且很明顯它們的功能非常強大。我知道這篇文章的一些讀者可能不理解神經網絡是如何工作的或者他們有什麼能力,但是讓我舉個例子來幫助你理解。
下面是我創建的一個神經網絡的小GIF,它是為一輛汽車訓練的,用來預測轉向角度(你可以用自動駕駛汽車來查看我的工作)。我設計了自己的神經網絡體系結構,並在8小時的駕駛數據上訓練了它。
只用了8個小時的數據,神經網絡就神奇地學會了一些基本的規則,而不被告知。黑點就是實際的轉向角。這就是最初控制車輛的司機的角度。紅點是我的神經網絡預測的轉向角度是基於它在圖像中看到的。
你幾乎看不到黑點,因為它通常被紅點覆蓋。這是好!這意味着我們的神經網絡在預測如何以圖像中的像素為基礎來駕駛車輛方面做得很好。 這他tm的笨蛋。
我想再展示更多的經網絡,因為我認為這些概念與DeepLeague背後的思想有很大聯繫。神經網絡也可以用於對象檢測。我見過很多不同的模型,它們專門用於對象檢測,比如SSD、R-CNNs、更快的R-CNN和YOLO9000。對於我的一個項目,我需要在一個大屏幕視頻中實時地執行對象檢測。這意味着當一個人開車時,這個神經網絡會說「嘿,那是一個人」或者「嘿,那是一輛車」。 我決定使用YOLO9000,因為它是最快的探測器,但不需要最高的精確率。
下面是一個GIF,是一個預先訓練的YOLO模型,我用它來實時地從行車記錄儀中檢測對象。
那麼現在的問題是:用於物體檢測的深層神經網絡,是否被訓練用來識別電子遊戲中的物體?
嗯。這是有意義的,對吧?如果我們可以訓練一個神經網絡,來理解在現實世界中複雜場景中的物體是什麼樣的,我們應該能夠在視頻遊戲對象上訓練它!使用此基礎,我開始創建數據集。
未完待續,敬請期待
用深度學習玩LOL,數據集DeepLeague開源(下)
更多文章,關注雷鋒網
添加雷鋒字幕組微信號(leiphonefansub)為好友
備註「我要加入」,To be a AI Volunteer !雷鋒網雷鋒網雷鋒網