ColabへはGoogle アカウントで入れます。トレーニングするにはKaggleでもできますが、こっちのほうが簡単です。
Colabへ移動します。
環境をセットアップしておきます。
シナリオの実行に関して以下のように説明されています。
GFootball environment supports recording of scenarios for later watching or analysis. Each trace dump consists of a pickled episode trace (observations, reward, additional debug info) and optionally an AVI file with the rendered episode. Pickled episode trace can be played back later on using replay.py script. By default trace dumps are disabled to not occupy disk space.
GFootball 環境は、後で見たり分析したりするためのシナリオの記録をサポートしています。それぞれのトレースダンプは、Pickle化されたエピソードトレース (観測、報酬、追加のデバッグ情報) と、オプションでレンダリングされたエピソードの AVI ファイルで構成されています。Pickle化されたエピソードトレースは、replay.py スクリプトを使って後で再生することができます。デフォルトでは、トレースダンプはディスクスペースを占有しないように無効になっています。
envを修正して、違うシナリオで実行してみます。
デフォルト
env = football_env.create_environment(env_name="academy_empty_goal_close", stacked=False, logdir='/tmp/football', write_goal_dumps=False, write_full_episode_dumps=False, render=False)
デフォルトではacadmy_empty_goal_closeが使われていますが、これはエージェントが無人の至近距離のゴールに対して得点する方法を学習する設定です。別のacademyのシナリオ(academy_run_pass_and_shoot_with_keeper)にしてみます。
シナリオの中身
CB2人 + GK1人 vs CB1人 + GK1人
AddPlayer()の最初の引数2つはポジション(X,Y)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from . import * def build_scenario(builder): builder.config().game_duration = 400 builder.config().deterministic = False builder.config().offsides = False builder.config().end_episode_on_score = True builder.config().end_episode_on_out_of_play = True builder.config().end_episode_on_possession_change = True builder.SetBallPosition(0.7, -0.28) builder.SetTeam(Team.e_Left) builder.AddPlayer(-1.0, 0.0, e_PlayerRole_GK) builder.AddPlayer(0.7, 0.0, e_PlayerRole_CB) builder.AddPlayer(0.7, -0.3, e_PlayerRole_CB) builder.SetTeam(Team.e_Right) builder.AddPlayer(-1.0, 0.0, e_PlayerRole_GK) builder.AddPlayer(-0.75, 0.1, e_PlayerRole_CB) |
write_goal_dumps=False, write_full_episode_dumps=False になっていますが、write_full_episode_dumpsダンプを有効にしておきます(dump_full_episodes:トレーニング時にエピソード全体をディスクにダンプします)。
New
env = football_env.create_environment(env_name="academy_run_pass_and_shoot_with_keeper", stacked=False, logdir='/tmp/football', write_goal_dumps=False, write_full_episode_dumps=True, render=False)
実行
生成されたDumpファイルは、/tmp/football フォルダーにあります。
このDumpファイルをUbuntu 18.04 に Google Research Football Environment をセットアップで作成したContainer で実行してみます。
起動したContainerにDockerコマンドでコピーしておいて以下を実行します。
xxxxは実際のファイル名に置き換え。
1 |
python3 -m gfootball.replay -trace_file='/gfootball/xxxxx.dump' |
replayが終わると、Container の /tmp/football フォルダーに aviとdump の2つのファイルが生成されています。
これをDockerコマンドでhostにコピーして、さらにPCに転送して再生してみます。
なんか、ファイル名はacademy_run_pass_and_shoot_with_keeper となっていますが、画像は、インターセプトからのカウンターアタックみたいです!?
2vs1 with keepers のシチュエーションでのカウンターなので、キーパーと1対1になった時どうするの?というトレーニングか?
ところで、Dumpファイルの解析ってどうやってやるんでしょう?
中身はバイナリなので見てもわかりません。
次回に持ち越しです。
ご注意(Attention!)
このColabの環境で50MStepsを実行するのは無理だと思います。
チャレンジする場合はGoogleのDeep Learning VMなどを考慮します。
でも、有償です。1回のランニングは1万円以下でやれると思いますが、1回で済むわけがないのでここを使うのは十分に経験を積んだ後ですね。
Google Research Football にはコンペもあります(リーグ戦?)。
1_vs_1_easy、11_vs_11_competition、5_vs_5のシナリオでエージェントをトレーニングした対戦のようです。
スコアをクリックすると対戦の様子のaviをダウンロードして見れます。
以下、5_vs_5のとある対戦
フルピッチで5vs5をやるのは大変。広大なスペースがあるので放り込んで後はヨロシクや、1人剥がすと後は単騎一発です。
リアルベイジアンズがボコられてます。
Kaggle competition
KaggleでGoogle Research Football with Manchester City F.C.
reference
Google Research Football Environmentでやってることって何なの?の解説
Leave a Reply