GithubHelp home page GithubHelp logo

shiyi-zh0408 / gnfactor Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yanjieze/gnfactor

0.0 0.0 0.0 358.27 MB

[CoRL 2023 Oral] GNFactor: Multi-Task Real Robot Learning with Generalizable Neural Feature Fields

Home Page: https://yanjieze.com/GNFactor/

License: MIT License

Shell 1.15% Python 98.85%

gnfactor's Introduction

GNFactor: Multi-Task Real Robot Learning with Generalizable Neural Feature Fields

CoRL 2023 Oral

Yanjie Ze* · Ge Yan* · Yueh-Hua Wu* · Annabella Macaluso · Yuying Ge · Jianglong Ye · Nicklas Hansen · Li Erran Li · Xiaolong Wang

Logo
method.mp4

💻 Installation

See INSTALL.md for installation instructions.

See ERROR_CATCH.md for error catching I personally encountered during installation.

Note: Due to the usage of RLBench and its physics engine PyRep, a lof of potential bugs during installing the environment could occur. These could be hard to address for people that are not familiar with the environment. If you encounter any problems during installation, please feel free to open an issue.

🧾 Brief Introduction to our Pipeline

Our setting is multi-task behavior cloning. The pipeline is generally as:

  1. Generate demonstrations.
  • We study 10 RLBench tasks and each task uses 20 demonstrations.
  • We do not provide demonstration files on the cloud server, because of large file size (~92GB).
  • We directly provide the scripts to generate demonstrations.
  1. Train a policy.
  • We use 2 gpus (~24G each) and train 100k iterations for one policy.
  • It is ok to use only 1 gpu, if you only have one. But the results would be worse.
  1. Evaluate the policy.
  • For solid results, we evaluete 25 episodes for each task across each saved checkpoint.
  • In our paper, we report the results of the final checkpoint across 3 seeds.
  • But, we also find that our method could get a better number if we take the best checkpoint (see our paper appendix for results).

Don't worry about these complex illustrations and parameters! we provide all scripts to use just with one click.

🛠️ Usage

We provide scripts to generate demonstrations, train and evaluate policies, and draw results based on the evaluation results.

We also provide the results (*.csv files, 3 seeds) of our paper in GNFactor_results/. Researchers could directly compare their own algorithm with these results under the similar setting.

🦉 Generate Demonstrations

In this work, we select 10 challenging tasks from RLBench:

tasks=[close_jar,open_drawer,sweep_to_dustpan_of_size,meat_off_grill,turn_tap,slide_block_to_color_target,put_item_in_drawer,reach_and_drag,push_buttons,stack_blocks]

We also encourage users to explore more other tasks.

For each task, we generate 20 demonstrations for training and 25 demonstrations for evaluation. To explain more, the demonstrations for evaluation are only to make sure the trajectory is feasible (see this issue).

To generate demonstrations for a task, run:

bash scripts/gen_demonstrations.sh YOUR_TASK_NAME

For example, running bash scripts/gen_demonstrations.sh close_jar will generate demonstrations for the task close_jar under the folder data/.

To generate demonstrations for all 10 tasks, just simply run this command for different tasks.

📈 Training and Evaluation

We use wandb to log some curves and visualizations. Login to wandb before running the scripts.

wandb login

Then, to run GNFactor, use the following command:

bash scripts/train_and_eval.sh GNFACTOR_BC

We also provide the baseline PerAct in our repo. To run PerAct, use the following command:

bash scripts/train_and_eval.sh PERACT_BC

By default we use two gpus to train.

Considering the possible gpu resource limitations, if you only have one gpu, you could use the following command to run with only one gpu:

bash scripts/train_and_eval_with_one_gpu.sh GNFACTOR_BC
bash scripts/train_and_eval_with_one_gpu.sh PERACT_BC

But this means the batch size is 1 and the results would be worse.

Configurations for training and evaluation are in GNFactor/conf/. You could change the parameters in these files for your own setting.

📊 Analyze Evaluation Results

For the users' convenience, we provide the results (*.csv files, 3 seeds) of our paper in GNFactor_results/.

We also provide a python script scripts/compute_results.py to compute the average success rates from the *.csv files (generated during the evaluation). An example to compute success rates given our provided csv files:

python scripts/compute_results.py --file_paths GNFactor_results/0.csv GNFactor_results/1.csv GNFactor_results/2.csv --method last

In our main paper, we only report the results of the last checkpoint for fairness. We also find that our method could get a better number if we take the best checkpoint. You can use method=best to view the results:

python scripts/compute_results.py --file_paths GNFactor_results/0.csv GNFactor_results/1.csv GNFactor_results/2.csv --method best

🆕 Pre-Trained Checkpoints

We provide the pre-trained checkpoints for users' convenience. You could download from the google drive here. Then, unzip this file into REPO_DIR/GNFactor/logs/. The overall file structure should be like this:

docs/
GNFactor/
    logs/
        GNFACTOR_BC_released/ # our provided files
GNFactor_results/

After this, use our script to evaluate the checkpoints (remember to generate the evaluation demonstrations first):

bash scripts/eval.sh GNFACTOR_BC released

🏷️ License

This repository is released under the MIT license. See LICENSE for additional details.

🙏 Acknowledgement

Our code is built upon PerAct, RLBench, pixelNeRF, ODISE, and CLIP. We thank all these authors for their nicely open sourced code and their great contributions to the community.

📝 Citation

If you find our work useful, please consider citing:

@article{Ze2023GNFactor,
  title={Multi-Task Real Robot Learning with Generalizable Neural Feature Fields},
  author={Yanjie Ze and Ge Yan and Yueh-Hua Wu and Annabella Macaluso and Yuying Ge and Jianglong Ye and Nicklas Hansen and Li Erran Li and Xiaolong Wang},
  journal={CoRL}, 
  year={2023},
}

gnfactor's People

Contributors

yanjieze avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.