Skip to content

Commit cb478cf

Browse files
committed
Merge branch 'master' into release_0.1.0
2 parents 06c0076 + 4e8ab06 commit cb478cf

File tree

1 file changed

+22
-17
lines changed

1 file changed

+22
-17
lines changed

README.md

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# Procgen OOD Benchmark
22

33

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.
55

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.
77

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).
99

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.
1212
1313

1414
<img src="https://raw.githubusercontent.com/openai/procgen/master/screenshots/procgen.gif">
@@ -51,15 +51,19 @@ python -m procgen.interactive --env-name coinrun
5151

5252
## Holdout Types
5353

54-
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:
5554

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.
6156

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 |
6367
| --- | ----------------------------- | ----- | ----- | -------- | ---------- | --- |
6468
| 1 | bigfish | || |||
6569
| 2 | bossfight ||| |||
@@ -78,8 +82,8 @@ The supported holdout types during training and/or evaluation are `all`, `backgr
7882
| | ~~chaser~~ | | | | | |
7983
| | ~~plunder~~ | | | | | |
8084

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.
8387
> - 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.
8488
> In contrast, `bigfish` only supports randomizing over "enemy" & "background".
8589
> - 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
9397

9498
* `env_name` - Name of environment, or comma-separate list of environment names to instantiate as each env in the VecEnv.
9599
* `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.
97101
* `debug=False` - Set to `True` to use the debug build if building from source.
98102
* `debug_mode=0` - A useful flag that's passed through to procgen envs. Use however you want during debugging.
99103

@@ -121,7 +125,8 @@ env = gym.make(
121125
)
122126
```
123127

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.
125130
> - 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`.
126131
> - If you just want the frames instead of the window, pass `render_mode="rgb_array"`.
127132
@@ -142,4 +147,4 @@ This project contains two different licenses for different parts of the code:
142147

143148
To cite this project in your work, please use the following Bibtex:
144149

145-
(INSERT CITATION HERE)
150+
(Publication in progress)

0 commit comments

Comments
 (0)