en license:mit region:us
---
'[object Object]': null
license: mit
language:
- en
---

# Model Card for 3D Diffuser Actor

<!-- Provide a quick summary of what the model is/does. -->

A robot manipulation policy that marries diffusion modeling with 3D scene representations.
3D Diffuser Actor is trained and evaluated on [RLBench](https://github.com/stepjam/RLBench) or [CALVIN](https://github.com/mees/calvin) simulation.
We release all code, checkpoints, and details involved in training these models.

## Model Details

The models released are the following:

| Benchmark | Embedding dimension | Diffusion timestep |
|------|------|------|
| [RLBench (PerAct)](https://huggingface.co/katefgroup/3d_diffuser_actor/blob/main/diffuser_actor_peract.pth) | 120 | 100 |
| [RLBench (GNFactor)](https://huggingface.co/katefgroup/3d_diffuser_actor/blob/main/diffuser_actor_gnfactor.pth) | 120| 100 |
| [CALVIN](https://huggingface.co/katefgroup/3d_diffuser_actor/blob/main/diffuser_actor_calvin.pth) | 192 | 25 |

### Model Description

<!-- Provide a longer summary of what this model is. -->


- **Developed by:** Katerina Group at CMU
- **Model type:** a Diffusion model with 3D scene 
- **License:** The code and model are released under MIT License
- **Contact:** ngkanats@andrew.cmu.edu


### Model Sources [optional]

<!-- Provide the basic links for the model. -->

- **Project Page:** https://3d-diffuser-actor.github.io
- **Repository:** https://github.com/nickgkan/3d_diffuser_actor.git
- **Paper:** [Link]()

## Uses

<!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->

### Input format
3D Diffuser Actor takes the following inputs:

1. `RGB observations`: a tensor of shape (batch_size, num_cameras, 3, H, W).  The pixel values are in the range of [0, 1]
2. `Point cloud observation`: a tensor of shape (batch_size, num_cameras, 3, H, W).
3. `Instruction encodings`: a tensor of shape (batch_size, max_instruction_length, C).  In this code base, the embedding dimension `C` is set to 512.
4. `curr_gripper`: a tensor of shape (batch_size, history_length, 7), where the last channel denotes xyz-action (3D) and quarternion (4D).
5. `trajectory_mask`: a tensor of shape (batch_size, trajectory_length), which is only used to indicate the length of each trajectory.  To predict keyposes, we just need to set its shape to (batch_size, 1).
6. `gt_trajectory`: a tensor of shape (batch_size, trajectory_length, 7), where the last channel denotes xyz-action (3D) and quarternion (4D).  The input is only used during training.

### Output format
The model returns the diffusion loss, when `run_inference=False`, otherwise, it returns pose trajectory of shape (batch_size, trajectory_length, 8) when `run_inference=True`.

### Usage 
For training, forward 3D Diffuser Actor with `run_inference=False`
```
> loss = model.forward(gt_trajectory,
                       trajectory_mask,
                       rgb_obs,
                       pcd_obs,
                       instruction,
                       curr_gripper,
                       run_inference=False)
```

For evaluation, forward 3D Diffuser Actor with `run_inference=True`
```
> fake_gt_trajectory =  torch.full((1, trajectory_length, 7), 0).to(device)
> trajectory_mask = torch.full((1, trajectory_length), False).to(device)
> trajectory = model.forward(fake_gt_trajectory,
                             trajectory_mask,
                             rgb_obs,
                             pcd_obs,
                             instruction,
                             curr_gripper,
                             run_inference=True)
```

Or you can forward the model with `compute_trajectory` function
```
> trajectory_mask = torch.full((1, trajectory_length), False).to(device)
> trajectory = model.compute_trajectory(trajectory_mask,
                                        rgb_obs,
                                        pcd_obs,
                                        instruction,
                                        curr_gripper)
```


## Evaluation

<!-- This section describes the evaluation protocols and provides the results. -->
Our model trained and evaluated on RLBench simulation with the PerAct setup:

| RLBench (PerAct) | 3D Diffuser Actor | [RVT](https://github.com/NVlabs/RVT) |
| --------------------------------- | -------- | -------- |
| average | 81.3 | 62.9 |
| open drawer | 89.6 | 71.2 |
| slide block | 97.6 | 81.6 |
| sweep to dustpan | 84.0 | 72.0 |
| meat off grill | 96.8 | 88 |
| turn tap | 99.2 | 93.6 |
| put in drawer | 96.0 | 88.0 |
| close jar | 96.0 | 52.0 |
| drag stick | 100.0 | 99.2 |
| stack blocks | 68.3 | 28.8 |
| screw bulbs | 82.4 | 48.0 |
| put in safe | 97.6 | 91.2 |
| place wine | 93.6 | 91.0 |
| put in cupboard | 85.6 | 49.6 |
| sort shape | 44.0 | 36.0 |
| push buttons | 98.4 | 100.0 |
| insert peg | 65.6 | 11.2 |
| stack cups | 47.2 | 26.4 |
| place cups | 24.0 | 4.0 |


Our model trained and evaluated on RLBench simulation with the GNFactor setup:

| RLBench (PerAct) | 3D Diffuser Actor | [GNFactor](https://github.com/YanjieZe/GNFactor) |
| --------------------------------- | -------- | -------- |
| average | 78.4 | 31.7 |
| open drawer | 89.3 | 76.0 |
| sweep to dustpan | 894.7 | 25.0 |
| close jar | 82.7 | 25.3 |
| meat off grill | 88.0 | 57.3 |
| turn tap | 80.0 | 50.7 |
| slide block | 92.0 | 20.0 |
| put in drawer | 77.3 | 0.0 |
| drag stick | 98.7 | 37.3 |
| push buttons | 69.3 | 18.7 |
| stack blocks | 12.0 | 4.0 |

Our model trained and evaluated on CALVIN simulation (train with environment A, B, C and test on D):

| RLBench (PerAct) | 3D Diffuser Actor | [GR-1](https://gr1-manipulation.github.io/) | [SuSIE](https://rail-berkeley.github.io/susie/) |
| --------------------------------- | -------- | -------- | -------- |
| task 1 | 92.2 | 85.4 | 87.0 |
| task 2 | 78.7 | 71.2 | 69.0 |
| task 3 | 63.9 | 59.6 | 49.0 |
| task 4 | 51.2 | 49.7 | 38.0 |
| task 5 | 41.2 | 40.1 | 26.0 |



## Citation [optional]

<!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->

**BibTeX:**

```
@article{,
  title={Action Diffusion with 3D Scene Representations},
  author={Ke, Tsung-Wei and Gkanatsios, Nikolaos and Fragkiadaki, Katerina}
  journal={Preprint},
  year={2024}
}
```



## Model Card Contact

For errors in this model card, contact Nikos or Tsung-Wei, {ngkanats, tsungwek} at andrew dot cmu dot edu.