You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+22-17Lines changed: 22 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,14 @@
1
1
# Procgen OOD Benchmark
2
2
3
3
4
-
ProcgenOOD is an extension of the standard [Procgen benchmark environment](https://github.com/openai/procgen) that evaluates on configurable level generation variables out-of-distribution. These predefined variables are called *holdout types* and correspond to random generation of an asset or value within the Procgen games. See [[#Holdout Types]] below for specific types and game support for each.
4
+
ProcgenOOD is an extension of the standard [Procgen benchmark environment](https://github.com/openai/procgen) that evaluates on configurable level generation variables out-of-distribution. These predefined variables are called *holdout types* and correspond to the random generation of an asset or value within the Procgen games. See [Holdout Types](#Holdout-Types) below for specific types and game support for each.
5
5
6
-
Like the original be, ProcgenOOD contains 16 procedurally generated [gym](https://github.com/openai/gym) environments that run fast.
6
+
Like the original, ProcgenOOD contains 16 procedurally generated [gym](https://github.com/openai/gym) environments that run efficiently.
7
7
8
-
This README describes our extension and changes to the original repo, along with basic installation and usage information to fit most users' needs. For more information on original game descriptions and issues,
8
+
This README describes our extension and changes to the original repository, along with basic installation and usage information to fit most users' needs. For more information on the original game descriptions and known issues, please refer to the [Procgen's README](https://github.com/openai/procgen/blob/master/README.md).
9
9
10
-
> [!todo]
11
-
> The associated training repository containing the (future) paper's experimental results has yet to be open-sourced.
10
+
> NOTE:
11
+
> The associated training repository containing the (future) paper's experimental results will be open-sourced later.
The supported holdout types during training and/or evaluation are `all`, `background`, `enemy`, `platform`, and `none` . In addition to holdout types, a holdout fraction value is supported to provide finer control over the amount of data held out. These are further specified with holding out during training or evaluation. The predefined holdout types are:
55
54
56
-
*`all` - Hold out all supported types (see following table).
57
-
*`background` - Hold out background images.
58
-
*`enemy` - Hold out enemy sprites.
59
-
*`platform` - Hold out platforming level difficulties.
60
-
*`none` - Disable hold out. Along with `--num-levels=500`, this replicates the original Procgen benchmark.
55
+
Holdout types can be used to withhold certain aspects of the level generation during training and/or evaluation. The holdout types are predefined and can be set using the `--train-holdout-type` and `--eval-holdout-type` command line arguments, or through the environment options in code.
61
56
62
-
|\#| Game \\ Supports Holdout Type | agent | enemy | platform | background | all |
57
+
In addition to holdout types, a *holdout fraction* value is supported to provide finer control over the amount of held-out data. These settings can be applied during training and/or evaluation. The predefined holdout types are:
58
+
59
+
* "agent" - Hold out player sprites.
60
+
* "enemy" - Hold out enemy sprites.
61
+
* "platform" - Hold out platforming level difficulties.
62
+
* "background" - Hold out background images.
63
+
* "all" - Hold out all supported types (see following table).
64
+
* "none" - Disable hold out. Along with `--num-levels=500`, this replicates the original Procgen benchmark.
65
+
66
+
|\#| Game | agent | enemy | platform | background | all |
@@ -78,8 +82,8 @@ The supported holdout types during training and/or evaluation are `all`, `backgr
78
82
||~~chaser~~||||||
79
83
||~~plunder~~||||||
80
84
81
-
> [!NOTE]
82
-
> The behavior of holdout type "all" is **game specific!** Holdout type "all" independently samples all other supported types.
85
+
> NOTE:
86
+
> The behavior of holdout type "all" is **game specific!** Holdout type `all` independently samples all other supported types.
83
87
> - E.g., `coinrun` with holdout type "all" will independently sample each of \["background", "agent", "enemy", "platform"\] variables using the accompanying `--[train/eval]-holdout-frac 0.1` argument.
84
88
> In contrast, `bigfish` only supports randomizing over "enemy" & "background".
85
89
> - As seen in the table above, `chaser` and `plunder` do not support any holdout types.
@@ -93,7 +97,7 @@ These options from the base environment are relevant for testing OOD with this c
93
97
94
98
*`env_name` - Name of environment, or comma-separate list of environment names to instantiate as each env in the VecEnv.
95
99
*`num_levels=0` - The number of unique levels that can be generated. Set to 0 to use unlimited levels.
96
-
*`start_level=0` - The lowest seed that will be used to generated levels. 'start_level' and 'num_levels' fully specify the set of possible levels.
100
+
*`start_level=0` - The lowest seed that will be used to generated levels. `start_level` and `num_levels` fully specify the set of possible levels.
97
101
*`debug=False` - Set to `True` to use the debug build if building from source.
98
102
*`debug_mode=0` - A useful flag that's passed through to procgen envs. Use however you want during debugging.
99
103
@@ -121,7 +125,8 @@ env = gym.make(
121
125
)
122
126
```
123
127
124
-
> [!NOTE] NOTE: Since the gym environment is adapted from a gym3 environment, early calls to `reset()` are disallowed and the `render()` method does not do anything.
128
+
> NOTE:
129
+
> Since the gym environment is adapted from a gym3 environment, early calls to `reset()` are disallowed and the `render()` method does not do anything.
125
130
> - To render the environment, pass `render_mode="human"` to the constructor, which will send `render_mode="rgb_array"` to the environment constructor and wrap it in a `gym3.ViewerWrapper`.
126
131
> - If you just want the frames instead of the window, pass `render_mode="rgb_array"`.
127
132
@@ -142,4 +147,4 @@ This project contains two different licenses for different parts of the code:
142
147
143
148
To cite this project in your work, please use the following Bibtex:
0 commit comments