diff --git a/README.md b/README.md index da3af1c..dee4764 100644 --- a/README.md +++ b/README.md @@ -19,53 +19,28 @@ The INTERACTION dataset contains a two folders which should be copied into a fol - the contents of `recorded_trackfiles` should be copied to `./InteractionSimulator/datasets/trackfiles` - the contents of `maps` should be copied to `./InteractionSimulator/datasets/maps` -## Processing, saving, and loading expert demos -Once the repository has been set up, you can process and save expert track demonstrations with: +## Processing and saving expert demos +Once the repository has been set up, you need to generate two separate sets of expert demos for tracks 0-4. The first command generates true joint and individual states and actions necessary for evaluating, saving them in `expert_data/`. The second command generates trajectory rollouts according to individual agent observations, which is later used as expert data for the learning models. ``` -python src/expert_data.py --loc [LOCNUM] --track [TRACKNUM] -``` -You can (and should) process all tracks at once at location 0 with: -``` -python src/expert_data.py --all-tracks -``` - -You can then train a default behavior cloning policy with the following. Be sure to check help for main.py for running options. -``` -python src/main.py --train -``` -You can run tensorboard by running the following and opening `localhost:6006` (or alternatively port-forwarding 6006 from the remote server) -``` -tensorboard --logdir output/ -``` -You can then test the learned policy with the following, and see the animation file in `output/`: -``` -python src/main.py --test +python -m src.expert --locs='[DR_USA_Roundabout_FT]' --tracks='[0,1,2,3,4]' +python -m intersimple-expert-rollout-setobs2 --tracks='[0,1,2,3,4]' ``` -You can load the experts actions manually -``` -from src import expert_data -observations, actions = expert_data.load_expert_data(loc = [LOCNUM], track = [TRACKNUM]) -for (s, a) in zip (observations, actions): - # do some imitation learning -``` +## Tuning hyperparameters and training finalized models +To tune models, we use `ray[tune]` grid searches. You can run see the commands we used to train in the top half of `train_models.sh`, as well as the hyperparameters we search over in `bc-experiment.py`, `gail-experiment.py`, and `shail-experiment.py`. After training the models, configurations get saved in `best_configs/` (the best SHAIL confg gets copied to a HAIL config, with the appropriate environment parameters changed for ablation). However, upon manual inspection of the training runs, we note some better performance than the automatically-set configs at earlier epochs, so we adjust the `best_configs` manually. + +After the `best_configs/` are set, we rerun each configuration with multiple seeds. The commands to do so are in the bottom half of `train_models.sh`. This saves different learned policy files to `test_policies/`. + + +## Evaluating models +To evaluate the learned policies, we rerun each model in particular setting, evaluate all our metrics, and average over different trained model seeds. The commands to do so are in `evaluate_models.sh`. ## Package Structure ``` InteractionImitation -|- demos -|- algorithms - |- BC - |- AdVIL -|- nets - |- Encoder - |- DeepSet - |- Decoder -|- policies -|- discriminators -|- demo_generators +|- TODO ``` ## Type Definitions