farzaa/DeepLeague

Epanding training data to include all champions

gerrod3 opened this issue · 4 comments

The biggest current limitation of DeepLeague's AI is the lack of training data available for all champions due to the presence of limited champion pools from LCS games. A solution to expand and balance the data set to include all champions in the game is to alter the existing data set by changing the icons of each frame to the desired champions missing currently. Since the current data contains the positions of each icon on the map along with their corresponding champion a simple script could be created to alter the icons of each frame and corresponding champion name to a new champion icon and name. With this solution the training data could easily be doubled/tripled in size in order to include sufficient enough data for each champion. Another benefit is that the training data can be easily balanced without reducing the current amount of data by changing the icons of champions that appear too often in the current data.

The main issue with implementing this solution is keeping intact the current layering of overlap for champion icons when they are close together on the minimap(IE drawing the correct icon on top of the others). Luckily League's minimap follows a simple set of rules when deciding the layering of icons. Looking at a traditional LCS styling scoreboard with Blue side at the top and Red side on the bottom and player ordering following Top->Jungle->Mid->Bot->Sup, the minimap draws the icons from the top of the scoreboard to the bottom. So Blue top icon is drawn first followed by Blue jungle etc... with Red support being the last icon drawn. The only exception to this rule is when a player is backing shown by the blue or red circle around their icon. When a player backs, their icon becomes the first icon drawn regardless of where they fell in the previous list. The latest person to back is always the first icon drawn.

Hope this suggestion can help improve DeepLeague.

To summarize what gerrod3 is saying,

  • take the current output of DeepLeague
  • based on where it says the champion is, replace this champs icon with ANOTHER champs icon.
  • this would allow us to create a lot of artificial data.

So, I really like this idea and want to make one change to it. Why not just take the data about champion data being thrown out by the web socket, and altering THAT data.

DeepLeague is not perfect, it'll make mistakes. Its not a good idea to train another net using the output of one net (usually!). So what I say is to combine these ideas.

  • take the output of the LoL WebSocket Data which gives us the 100% accurate champion positional data.
  • based on the rule's gerrod mentioned, we can automatically replace the icons! So if Graves is at (12,167) we can replace his icon on the actual image with Gnar and have created data for Gnar.

This is something I very much like. Curious if people would be into working on it.

Why not generate data in simulation directly?
Several empty minimaps, randomly choose champions and their positions.
One drawback is the mismatch between champions and fog. But i think it won't hurt the performance much. The original data can be used to fine-tune.

This is exactly what would need to be done. And really not all that difficult either :).

And good point on fine tuning near the end, that is sure to help a ton.

Anyone ever done anything in this field ?
I am planning to dig into (jl1914 approach) this and if anyone stumbled upon any rocks i'd be thankfull ;)