Этот репозиторий содержит среду RL, основанную на игровом процессе с открытым исходным кодом Футбол.
Он был создан командой Google Brain для исследовательских целей.
Полезные ссылки:
- (Новинка!) GRF Kaggle competition - примите участие в соревновании, играя в игры против других, выиграйте призы и станьте чемпионом GRF!
- GRF Game Server-бросьте вызов другим исследователям!
- Бегите в Colab-начните тренировку менее чем за 2 минуты.
- Google Research Football Paper
- Сообщение в блоге GoogleAI
- Google Research Football on Cloud
- Список рассылки - пожалуйста, используйте его для связи с нами (комментарии / предложения / идеи функций)
Для непубличных вопросов, которые вы хотели бы обсудить непосредственно с командой GRF, пожалуйста используйте google-research-football@google.com.
Мы хотели бы поблагодарить Бастиана Конингса Шуйлинга, который является автором и открытым исходным кодом оригинальной версии этой игры.
быстрый старт
В Колабе
Откройте наш пример Colab, который позволит вам начать обучение вашей модели менее чем за 2 минуты.
Этот метод не поддерживает рендеринг игры на экране - если вы хотите увидеть запущенную игру, пожалуйста, используйте приведенный ниже метод.
Использование Docker
Это рекомендуемый способ избежать несовместимых версий пакетов. Инструкции доступны здесь.
На вашем компьютере
1. Установите необходимые пакеты
Линукс
sudo apt-get install git cmake build-essential libgl1-mesa-dev libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-gfx-dev libboost-all-dev libdirectfb-dev libst-dev mesa-utils xvfb x11vnc libsdl-sge-dev python3-pip
Mac OS X
Сначала установите заварку. Он должен автоматически устанавливать инструменты командной строки. Далее установите необходимые пакеты:
brew install git python3 cmake sdl2 sdl2_image sdl2_ttf sdl2_gfx boost boost-python3
Для настройки pygame
Также требуется установить более старые версии SDL:
brew install sdl sdl_image sdl_mixer sdl_ttf portmidi
2a. из пакета PyPi
pip3 install gfootball
2b. установка из исходных текстов с использованием репозитория GitHub
git clone https://github.com/google-research/football.git cd football
При желании вы можете использовать виртуальную среду:
python3 -m venv football-env source football-env/bin/activate
Последний шаг-это создание окружающей среды:
pip3 install .
Эта команда может выполняться в течение нескольких минут, так как она компилирует среду C++ в фоновом режиме.
3. Пора играть!
python3 -m gfootball.play_game --action_set=full
Обязательно ознакомьтесь с отображениями клавиатуры. Чтобы выйти из игры, нажмите Ctrl+C в терминале.
Обучение агентов игре GRF
Тренировка бега
Чтобы запустить обучение TF, установите дополнительные зависимости (или альтернативно используйте предоставленное изображение Docker):
- Обновите PIP, чтобы tensorflow 1.15 был доступен:
python3 -m pip install --upgrade pip setuptools
- Тензорный поток:
pip3 install tensorflow==1.15.*
илиpip3 install tensorflow-gpu==1.15.*
, в зависимости от того, хотите ли вы процессор или Версия GPU; - Сонет:
pip3 install dm-sonnet==1.*
; - Базовые Линии OpenAI:
pip3 install git+https://github.com/openai/baselines.git@master
.
Затем:
- Чтобы запустить пример PPO-эксперимента по
academy_empty_goal
сценарию, выполнитеpython3 -m gfootball.examples.run_ppo2 --level=academy_empty_goal_close
- Чтобы запустить
academy_pass_and_shoot_with_keeper
сценарий, выполнитеpython3 -m gfootball.examples.run_ppo2 --level=academy_pass_and_shoot_with_keeper
Чтобы тренироваться с сохранением хороших повторов, бегите python3 -m gfootball.examples.run_ppo2 --dump_full_episodes=True --render=True
Для того чтобы воспроизвести результаты PPO из статьи, пожалуйста, обратитесь к:
- gfootball/examples/repro_checkpoint_easy.sh
- gfootball/examples/repro_scoring_easy.sh
Играем в эту игру
Обратите внимание, что игра осуществляется через среду, поэтому игроки, управляемые человеком, используют тот же интерфейс, что и агенты. Одним из важных следствий является то, что существует одно действие на 100 мс, сообщаемое окружающей среде, которое может вызвать эффект задержки при воспроизведении.
Сопоставления клавиатуры
Игра определяет следующее отображение клавиатуры (для keyboard
типа игрока):
ARROW UP
- беги наверх.ARROW DOWN
- беги на дно.ARROW LEFT
- беги налево.ARROW RIGHT
- беги направо.S
- короткий пас в режиме атаки, давление в режиме обороны.A
- высокий проход в режиме атаки, скольжение в режиме защиты.D
- выстрел в режиме атаки, давление команды в режиме обороны.W
- длинный пас в режиме атаки, давление вратаря в режиме обороны.Q
- переключите активного игрока в режим защиты.C
- дриблинг в режиме атаки.E
- спринт.
Играть против встроенного искусственного интеллекта
Беги python3 -m gfootball.play_game --action_set=full
. По умолчанию он запускается базовый сценарий и левый игрок управляются с помощью клавиатуры. Различный поддерживаются типы игроков (геймпад, внешние боты, агенты...). Для возможного параметры запущены python3 -m gfootball.play_game -helpfull
.
Играть против предварительно обученного агента
В частности, можно играть против агента, обученного run_ppo2
сценарию с помощью следующая команда (обратите внимание, что флаг action_set отсутствует, так как агент PPO использует значение по умолчанию набор действий): python3 -m gfootball.play_game --players "keyboard:left_players=1;ppo2_cnn:right_players=1,checkpoint=$YOUR_PATH"
Обученные контрольно-пропускные пункты
Мы предоставляем обученные контрольные точки PPO для следующих сценариев:
Чтобы увидеть, как играют контрольные точки, бегите python3 -m gfootball.play_game --players "ppo2_cnn:left_players=1,policy=gfootball_impala_cnn,checkpoint=$CHECKPOINT" --level=$LEVEL
, где $CHECKPOINT
находится путь к загруженной контрольной точке.
Чтобы тренироваться против контрольной точки, вы можете передать аргумент 'extra_players' в функцию create_environment. Например, extra_players= 'ppo2_cnn:right_players=1, policy=gfootball_impala_cnn, checkpoint=$CHECKPOINT'.
Частые Проблемы И Решения
Рендеринг вне экрана (на сервере без дисплея / без графического процессора)
Можно сделать программный рендеринг с помощью MESA. Для этого, прежде чем начать среда, в которой необходимо создать виртуальный дисплей (при условии, что вы используете разрешение по умолчанию):
Xvfb :1 -screen 0 1280x720x24+32 -fbdir /var/tmp & export DISPLAY=:1
Обратите внимание, что рендеринг программного обеспечения значительно увеличивает загрузку процессора и работает медленно.