Yipu Chen*, Haotian Xue*, Yongxin Chen @Georgia Tech
Install conda environment on a Linux machine with Nvidia GPU. You also need the following dependencies to make MuJoCo work:
sudo apt install -y libosmesa6-dev libgl1-mesa-glx libglfw3 patchelfCreate Conda environment:
mamba env create -f conda_environment.yamlActivate the conda environment and install kornia with:
pip install kornia --no-deps
pip install kornia-rs --no-depsSome RoboSuite source files are needed to enable patch attack support.
Download training data and checkpoints from https://diffusion-policy.cs.columbia.edu/data. Note that DP-Attacker only works with the image based Diffusion Policies. You also need to download the corresponding datasets while performing offline attacks. The final data folder looks like1this:
.
├── experiments
│   └── image
│       ├── can_mh
│       │   ├── diffusion_policy_cnn
│       │   └── diffusion_policy_transformer
│       ├── can_ph
│       │   ├── diffusion_policy_cnn
│       │   └── diffusion_policy_transformer
│       ├── lift_mh
│       │   ├── diffusion_policy_cnn
│       │   └── diffusion_policy_transformer
│       ├── lift_ph
│       │   ├── diffusion_policy_cnn
│       │   └── diffusion_policy_transformer
│       ├── pusht
│       │   ├── diffusion_policy_cnn
│       │   └── diffusion_policy_transformer
│       ├── square_mh
│       │   ├── diffusion_policy_cnn
│       │   └── diffusion_policy_transformer
│       ├── square_ph
│       │   ├── diffusion_policy_cnn
│       │   └── diffusion_policy_transformer
│       ├── tool_hang_ph
│       │   ├── diffusion_policy_cnn
│       │   └── diffusion_policy_transformer
│       ├── transport_mh
│       │   ├── diffusion_policy_cnn
│       │   └── diffusion_policy_transformer
│       └── transport_ph
│           ├── diffusion_policy_cnn
│           └── diffusion_policy_transformer
├── pusht
│   └── pusht_cchi_v7_replay.zarr
│       ├── data
│       │   ├── action
│       │   ├── img
│       │   ├── keypoint
│       │   ├── n_contacts
│       │   └── state
│       └── meta
│           └── episode_ends
└── robomimic
    └── datasets
        ├── can
        │   ├── mh
        │   └── ph
        ├── lift
        │   ├── mh
        │   └── ph
        ├── square
        │   ├── mh
        │   └── ph
        ├── tool_hang
        │   └── ph
        └── transport
            ├── mh
            └── ph
The hydra config files that relates performing attacks are located in attack_configs/eval_attack_config. 4 different types of attack are available:
- No Attack
- Random Noise
- Global Online
- Global Offline (pre-gen attack)
- Patched Offline (patch attack)
To run an attack, you need to specify the attack config file (see attack_configs/eval_attack_config/attack), and a checkpoint file (see attack_configs/eval_attack_config/ckpt).
An example is like this:
python eval_generic.py --config-name=attack_config attack=c_untargeted_ddpm_full ckpt=lift_ph_tf_bestFor offline attacks, you need to train an attack noise/patch. The following section shows how to do this.
To train a global offline attack noise. Use the following script:
python train_attack_img.py --config-name=c_pgd_0.03_targeted  ckpt=can_ph_tf_best You need to specify the checkpoint ckpt and the training parameters --config-name. See attack_configs/train_attack_config/ folder for details. After training, you should be able to find the corresponding trained .npy file in the data/outputs/attack_train folder.
To train a global offline attack noise. Use the following script:
python train_physical_attack.py --config-name=lift_ph_tf_best                                                See attack_configs/train_physical_attack_config/ folder for details. After training, you should be able to find the corresponding trained .png file in the data/outputs/physical_attack_train folder.
Online attacks are implemented in diffusion_policy/policy/diffusion_transformer_hybrid_image_policy.py and diffusion_policy/policy/diffusion_unet_hybrid_image_policy.py.
- predict_action_attacked: our online global attack algorithm.
Offline attacks are implemented as workspaces:
- diffusion_policy/workspace/train_adversary_workspace.py: Offline patched attack.
- diffusion_policy/workspace/train_adversary_workspace.py: Offline global attack.




