PyTorch를 사용한 이미지 인식 기반 리그 오브 레전드 비디오 게임용 AI 플레이어 구현
데모 영상: https://youtu.be/iB4PoNJuXzc
주의: Tensorflow를 사용하는 이전 버전은 "LeagueAI_2017" 브랜치에서 찾을 수 있습니다.
주의: 이 프로젝트는 아직 개발 중입니다. 제가 생성한 데이터 세트와 제가 훈련한 YOLOv3 객체 감지 가중치가 곧 제공될 예정입니다!
이는 이전 구현의 최신 버전이며 게임에서 개체 감지를 기반으로 자신만의 애플리케이션을 구축할 수 있는 프레임워크를 제공합니다. 예를 들어 이 프레임워크에 이전 2017 LeagueAI 봇을 구현하겠습니다. 2017년 Tensorflow 구현 데모 비디오: https://www.youtube.com/watch?v=KRWFCaXfOTk
임무는 리그 오브 레전드, 도타 2, 히어로즈 오브 더 스톰과 같은 3인칭 MOBA(대규모 멀티플레이어 온라인 전투 경기장) 게임을 인간 플레이어와 동일한 입력, 즉 비전으로 플레이할 수 있는 에이전트를 만드는 것입니다. 리그 오브 레전드는 게임에 대한 인터페이스를 제공하지 않기 때문에 객체 감지가 사용됩니다. 이 프로젝트에서는 Yolo v3 객체 감지기의 Python 구현과 무한한 양의 훈련 데이터를 무작위로 생성하는 방법이 소개됩니다.
객체 감지기에 대한 자세한 내용은 내 기술 보고서(https://arxiv.org/abs/1905.13546)를 참조하거나 YOLOv3 웹사이트를 직접 참조하세요[2]
TODO
대규모 데이터 세트를 처음부터 만드는 것은 작업 집약적일 수 있습니다. 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}
}
TODO
[1] 처음부터 Yolov3 객체 감지 구현: https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch
[2] 교육용: https://pjreddie.com/darknet/yolo/, Yolov3: 점진적 개선, J. Redmond 및 A. Farhadi, 2018