Merge pull request #27 from arch-fan/master

Spanish translation and fixed typos
This commit is contained in:
linyiLYi 2023-04-21 20:43:42 +08:00 committed by GitHub
commit 3485b53808
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 102 additions and 4 deletions

View File

@ -1,6 +1,6 @@
# SFighterAI
[简体中文](README_CN.md) | English
[简体中文](README_CN.md) | English | [Español](README_ES.md)
This project is an AI agent trained using deep reinforcement learning to beat the final boss in the game "Street Fighter II: Special Champion Edition". The AI agent makes decisions based solely on the game screen's RGB pixel values. In the provided save state, the agent achieves a 100% win rate in the first round of the final level (overfitting occurs, see the [Running Tests](#running-tests) section for discussion).
@ -87,7 +87,7 @@ tensorboard --logdir=logs/
Open the default Tensorboard service address `http://localhost:6006/` in your browser to view interactive graphs of the training process.
## Acknowledgements
This project uses open-source libraries such as [OpenAI Gym Retro](https://retro.readthedocs.io/en/latest/getting_started.html)、[Stable-Baselines3](https://stable-baselines3.readthedocs.io/en/master/). The contributions of all the developers to the open-source community are appreciated!
This project uses open-source libraries such as [OpenAI Gym Retro](https://retro.readthedocs.io/en/latest/getting_started.html), [Stable-Baselines3](https://stable-baselines3.readthedocs.io/en/master/). The contributions of all the developers to the open-source community are appreciated!
Two papers that had a significant impact on this project:

View File

@ -1,6 +1,6 @@
# SFighterAI
简体中文 | [English](README.md)
简体中文 | [English](README.md) | [Español](README_ES.md)
本项目基于深度强化学习训练了一个用于通关《街头霸王·二冠军特别版》Street Fighter II Special Champion Edition关底 BOSS 的智能 AI 代理。该智能代理完全基于游戏画面RGB 像素值)进行决策,在该项目给定存档中最后一关的第一轮对局可以取得 100% 胜率(实际上出现了“过拟合”现象,详见[运行测试](#running-tests)部分的讨论)。

98
README_ES.md Normal file
View File

@ -0,0 +1,98 @@
# SFighterAI
[简体中文](README_CN.md) | [English](README.md) | Español
Este proyecto es un agente de IA entrenado con aprendizaje por refuerzo profundo para vencer al jefe final en el juego "Street Fighter II: Special Champion Edition". El agente de IA toma decisiones basándose únicamente en los valores de los píxeles RGB de la pantalla del juego. En el estado guardado proporcionado, el agente logra una tasa de victorias del 100% en la primera ronda del nivel final (ocurre sobreajuste, consulte la sección [Ejecución de pruebas](#ejecución-de-pruebas) para ver la discusión).
### Estructura de archivos
```bash
├───data
├───main
│ ├───logs
│ ├───trained_models
│ └───scripts
├───utils
│ └───scripts
```
Los archivos de configuración del juego se almacenan en la carpeta `data/`, y el código principal del proyecto se encuentra en la carpeta `main/`. Dentro de `main/`, la carpeta `logs/` contiene la salida de la terminal y las curvas de datos que registran el proceso de entrenamiento (se pueden ver con Tensorboard), mientras que la carpeta `trained_models/` contiene los pesos del modelo de diferentes etapas. Estos pesos se pueden utilizar para ejecutar pruebas en `test.py` y observar el rendimiento de las estrategias aprendidas por el agente de IA en diferentes etapas de entrenamiento.
## Guía de ejecución
Este proyecto se basa en el lenguaje de programación Python y utiliza principalmente bibliotecas estándar como [OpenAI Gym Retro](https://retro.readthedocs.io/en/latest/getting_started.html) y [Stable-Baselines3](https://stable-baselines3.readthedocs.io/en/master/). La versión de Python utilizada es 3.8.10, y se recomienda utilizar [Anaconda](https://www.anaconda.com) para configurar el entorno de Python. El siguiente proceso de configuración ha sido probado en Windows 11. A continuación se presentan comandos de la consola/terminal.
### Configuración del entorno
```bash
# Crear un entorno conda llamado StreetFighterAI con la versión de Python 3.8.10
conda create -n StreetFighterAI python=3.8.10
conda activate StreetFighterAI
# Instalar bibliotecas de Python
cd [directorio_padre_del_proyecto]/street-fighter-ai/main
pip install -r requirements.txt
# Ejecutar script para localizar la carpeta del juego gym-retro
cd ..
python .\utils\print_game_lib_folder.py
```
Después de que la consola muestre la ruta de la carpeta, cópiela en el explorador de archivos y navegue hasta la ruta correspondiente. Esta carpeta contiene los archivos de datos del juego "Street Fighter II: Special Champion Edition" dentro de gym-retro, incluyendo el archivo de ROM del juego y los archivos de configuración de datos. Copie los archivos `Champion.Level12.RyuVsBison.state`, `data.json`, `metadata.json` y `scenario.json` de la carpeta `data/` de este proyecto en la carpeta de datos del juego, reemplazando los archivos originales (pueden requerirse privilegios de administrador). El archivo `.state` es un estado guardado para el nivel de dificultad más alto del juego, mientras que los tres archivos `.json` son archivos de configuración de gym-retro que almacenan las direcciones de memoria de la información del juego (este proyecto solo usa [agent_hp] y [enemy_hp] para leer los valores de salud de los personajes en tiempo real).
Para ejecutar el programa, también necesitará el archivo de ROM del juego "Street Fighter II: Special Champion Edition", que no es proporcionado por gym-retro y debe obtenerse legalmente por otros medios. Puede consultar este [enlace](https://wowroms.com/en/roms/sega-genesis-megadrive/street-fighter-ii-special-champion-edition-europe/26496.html).
Una vez que haya obtenido legalmente el archivo de ROM del juego, cópielo a la carpeta de datos del juego de gym-retro mencionada anteriormente y cámbiele el nombre a `rom.md`. En este punto, la configuración del entorno está completa.
Nota: Si desea grabar videos del juego del agente de IA, deberá instalar [ffmpeg](https://ffmpeg.org/).
```bash
conda install ffmpeg
```
### Ejecución de pruebas
Una vez configurado el entorno, puede ejecutar `test.py` en la carpeta `main/` para probar y experimentar el rendimiento del agente de IA en diferentes etapas de entrenamiento.
```bash
cd [directorio_padre_del_proyecto]/street-fighter-ai/main
python test.py
```
Los archivos de peso del modelo se almacenan en la carpeta `main/trained_models/`. El modelo predeterminado utilizado en `test.py` es `ppo_ryu_2500000_steps_updated.zip`, que tiene una buena generalización y es capaz de vencer el último nivel de Street Fighter II: Special Champion Edition. Si desea ver el rendimiento de otros modelos, puede cambiar la variable `model_path` en `test.py` a la ruta de otro archivo de modelo. El rendimiento observado de los modelos en varias etapas de entrenamiento es el siguiente:
* ppo_ryu_2000000_steps_updated: Comenzando a entrar en el estado de sobreajuste, generalizable pero no del todo capaz.
* ppo_ryu_2500000_steps_updated: Acercándose al estado de sobreajuste final, no puede dominar la primera ronda pero parcialmente generalizable. Alta probabilidad de vencer la etapa final.
* ppo_ryu_3000000_steps_updated: Cerca del estado de sobreajuste final, casi domina la primera ronda pero apenas generalizable.
* ppo_ryu_7000000_steps_updated: Sobreajustado, domina la primera ronda pero no es generalizable.
### Entrenamiento del modelo
Si deseas entrenar tu propio modelo, puedes ejecutar `train.py`en la carpeta `main/`.
```bash
cd [directorio_padre_del_proyecto]/street-fighter-ai/main
python train.py
```
### Visualización de las curvas de entrenamiento
El proyecto incluye gráficos de Tensorboard del proceso de entrenamiento. Puedes usar Tensorboard para ver datos detallados. Se recomienda usar el complemento integrado de Tensorboard en VSCode para ver los datos directamente. El método de visualización tradicional se muestra a continuación:
```bash
cd [directorio_padre_del_proyecto]/street-fighter-ai/main
tensorboard --logdir=logs/
```
Abre la dirección predeterminada del servicio Tensorboard `http://localhost:6006/` en tu navegador para ver gráficos interactivos del proceso de entrenamiento.
## Reconocimientos
Este proyecto utiliza bibliotecas de código abierto como [OpenAI Gym Retro](https://retro.readthedocs.io/en/latest/getting_started.html), [Stable-Baselines3](https://stable-baselines3.readthedocs.io/en/master/). Se agradece la contribución de todos los desarrolladores a la comunidad de código abierto.
Dos artículos que tuvieron un impacto significativo en este proyecto:
[1] [DIAMBRA Arena A New Reinforcement Learning Platform for Research and Experimentation](https://arxiv.org/abs/2210.10595)
El resumen valioso de la experiencia en la configuración de hiperparámetros para modelos de aprendizaje profundo por refuerzo en juegos de lucha en este artículo fue de gran ayuda para el proceso de entrenamiento de este proyecto.
[2] [Mitigating Cowardice for Reinforcement Learning](https://ieee-cog.org/2022/assets/papers/paper_111.pdf)
El mecanismo de "decaimiento de penalización" propuesto en este artículo resolvió eficazmente el problema de "cobardía" (siempre evitando a los oponentes y sin atreverse a intentar movimientos de ataque).