使用 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