Implementasi AI Player untuk videogame League of Legends berdasarkan Pengenalan Gambar menggunakan PyTorch
Video Demo: https://youtu.be/iB4PoNJuXzc
Perhatian: Versi lama yang menggunakan Tensorflow dapat ditemukan di cabang "LeagueAI_2017".
Perhatian: Proyek ini masih dalam pengembangan, kumpulan data yang saya hasilkan dan bobot deteksi objek YOLOv3 yang saya latih akan segera tersedia!
Ini adalah versi yang lebih baru dari implementasi lama dan akan menyediakan kerangka kerja yang memungkinkan Anda membangun aplikasi Anda sendiri berdasarkan pendeteksian objek dalam game. Sebagai contoh saya akan mengimplementasikan bot LeagueAI lama 2017 pada kerangka ini. Video demo implementasi Tensorflow mulai tahun 2017: https://www.youtube.com/watch?v=KRWFCaXfOTk
Tugasnya adalah membuat agen yang mampu memainkan game arena pertempuran online multipemain masif (MOBA) orang ke-3 seperti League of Legends, Dota 2, dan Heroes of the Storm dengan masukan yang sama dengan pemain manusia, yaitu visi. Karena League of Legends tidak menyediakan antarmuka ke dalam game, deteksi objek digunakan. Dalam proyek ini diperkenalkan implementasi python dari detektor objek Yolo v3 dan cara menghasilkan data pelatihan dalam jumlah tak terbatas secara acak.
Untuk informasi lebih lanjut tentang pendeteksi objek, lihat laporan teknis saya di: https://arxiv.org/abs/1905.13546 atau langsung ke situs web YOLOv3 [2]
TODO
Membuat kumpulan data besar dari awal bisa menjadi pekerjaan yang sangat intensif. Untuk implementasi pertama LeageAI, sekitar 700 gambar berlabel tangan digunakan. Pelabelan 700 gambar memakan waktu sekitar 4 hari kerja dan hanya mencakup 4 objek permainan (1 model juara, minion sekutu dan musuh, serta menara musuh). Oleh karena itu, kumpulan data baru dibuat dengan secara otomatis menghasilkan data pelatihan berdasarkan model 3D yang diekstraksi dari game.
pyFrameExporter.py
untuk mengekstrak gambar satu per satu dari klip. Untuk minion saya menggunakan Adobe After Effects untuk menambahkan latar belakang hijau ke video minion dan menara (semua objek yang model 3Dnya tidak dapat saya temukan). Untuk setiap bingkai objek yang diekspor saya menggunakan skrip pyExportTransparentPNG.py
. Skrip ini menghapus latar belakang hijau/ungu dari masing-masing tangkapan layar dan memberi Anda png bertopeng dari suatu objek. Selanjutnya, skrip memotong gambar ke konten dan menghilangkan kelebihan ruang tembus pandang.Ini memberi saya sekitar 1000 gambar bertopeng dari setiap objek yang nantinya dapat digunakan untuk menghasilkan tangkapan layar game yang diberi label palsu.
Untuk menghasilkan berbagai macam tangkapan layar, skrip dapat disesuaikan menjadi:
Dengan menggunakan metode ini, kumpulan data ribuan tangkapan layar palsu berlabel berbeda dapat dihasilkan dalam hitungan jam.
Penjelasan lengkap tentang proses pembuatan dan evaluasi dataset dibandingkan dengan data berlabel tangan dapat ditemukan di publikasi berikut: https://arxiv.org/pdf/1905.13546.pdf
Untuk mengutip silakan gunakan:
@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] Menerapkan deteksi objek Yolov3 dari awal: https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch
[2] Untuk pelatihan: https://pjreddie.com/darknet/yolo/, Yolov3: An Inkremental Improvement, J. Redmond dan A. Farhadi, 2018