Artifacts from "Invisible but Detected: Physical Adversarial Shadow Attack and Defense on LiDAR Object Detection"
Description
README
This repository contains the data and code from our paper, "Invisible but Detected: Physical Adversarial Shadow Attack and Defense on LiDAR Object Detection," accepted to USENIX Security 2025.
We hope these resources will facilitate a deeper understanding of our research and support further exploration in this field.
Contents
Data
This repository provides various types of point cloud data used in our research. These datasets include both physical and simulation environments, as outlined below:
flat.zip
:- Corresponds to Section 4 of the paper, it is point cloud data obtained in an environment free of surrounding objects, utilized for optimizing the shadow shape.
section5.zip
:- Corresponds to Section 5 of the paper, containing measurement point clouds (pcd) for each Shadow Material placed at various distances from the LiDAR.
section6.x.zip
:- Corresponds to Section 6 of the paper, including measurement point clouds (pcd) from all experiments (see below).
- Section 6.1: Evaluates the effective attack range and analyzes the impact of the distance between the Shadow Material and LiDAR on the attack success rate.
- Section 6.2: Assesses the robustness of the attack against diverse surrounding environments (different scenes).
- Section 6.3: Evaluates the impact of the attack on various object detection models (PointPillars, SECOND-IoU, PointRCNN).
- Section 6.4: Analyzes the attack’s effect on different LiDAR sensors (OS1-64, VLS-128, Pandar 40P).
- Section 6.5: Evaluates the impact of changes in the spatial relationship between the LiDAR and the Shadow Material.
- Section 6.6: Verifies the feasibility of the attack in real-world scenarios.
Code
To support the replication and further development of our research, we will provide the code used in our simulations and for replicating the Shadow Hack.
The code includes components such as scripts for simulation setup, attack evaluation, and defense evaluation, as outlined below:
optimization.py
:- Optimization code for Shadow Material shapes running on OpenPCDet (Python).
defense.py
:- Code for BBValidator running on OpenPCDet (Python).
TrapezoidPlane.cs, texture_intensity.png, shadow_ws
:- Code for reproducing Shadow Material (materials not detectable by LiDAR) in AWSIM (C#), ROS2 node (Python).
Demo
All point cloud data used in the experiments throughout the paper are stored in the /SectionXX folder, which corresponds to the subsection numbers in our paper. These folders contain all the point cloud data collected during the experiments described in each subsection. All data are in a binary format compliant with the KITTI dataset.
These data can be used to obtain inference results by inputting them into OpenPCDet following the steps below.
Requirements
- Ubuntu 20.04 or 22.04
- Python 3.6+
- PyTorch 1.1 or higher
- CUDA 9.0 or higher
- spconv v1.0 (commit 8da6f96) or spconv v1.2 or spconv v2.x
(Our Setup)
- Ubuntu 20.04
- Pytorch 2.3.1
- CUDA 12.4
- spconv 2.3.6
Install OpenPCDet
Follow this document.
https://github.com/open-mmlab/OpenPCDet/blob/master/docs/INSTALL.md
- Clone the repository.
git clone https://github.com/open-mmlab/OpenPCDet.git
- Move to the directory.
cd OpenPCDet
- Install pcdet libraly.
python3 setup.py develop
- 4. Install Open3D
pip3 install open3d
Download Models
Download models from OpenPCDet repository.
https://github.com/open-mmlab/OpenPCDet/tree/master?tab=readme-ov-file#model-zoo
Get Results
- Move to the directory.
cd OpenPCDet/tools
- Run the inference.
python3 demo.py --cfg_file cfgs/kitti_models/{MODEL NAME}.yaml --ckpt {DOWNLOADED MODEL} --data_path {POINT_CLOUD_DATA}
Optimizing Shadow Shape & BBValidator Demo
The optimization.py and defense.py files in the code folder work with OpenPCDet. Complete the setup as described in the Demo section, and move optimization.py and defense.py to OpenPCDet/tools.
Optimizing Shadow Shape
- Download flat/0.bin. This is a point cloud data collected in an empty environment for optimization purposes.
- Run the optimization
python3 optimize.py --cfg_file cfgs/kitti_models/{MODEL NAME}.yaml --ckpt {DOWNLOADED MODEL} --data_path "~/data/flat/0.bin"
BBValidator Demo
Similar to the Demo section, you can run the inference to perform it with the defense method enabled. You can specify $N_{thresh}$ and $dh$ as options.python3 defense.py --cfg_file cfgs/kitti_models/{MODEL NAME}.yaml --ckpt {DOWNLOADED MODEL} --data_path {POINT_CLOUD_DATA} --threshold 8 --dh 0.05
Shadow Hack Simulation on AWSIM
With the steps described so far, you can reproduce the results of the paper. However, if you wish to conduct similar simulation experiments using AWSIM, please follow the steps below.
AWSIM Setup
Following below tutorial, set up a AWSIM Unity project.
https://tier4.github.io/AWSIM/GettingStarted/SetupUnityProject/
Shadow Material Setup
- Create a 3D object plane in the AWSIM environment.
- Attach texture_intensity.png and TrapezoidPlane.cs on the plane.
- In new terminal, download shadow_ws and build it runnining this command.
colcon build
- Run this command.
source install/setup.bash
- Run this command.
ros2 run point_cloud_filter point_cloud_filter_node
- Run your AWSIM project. You can get point clouds on the ROS2 topic /sensing/lidar/top/pointcloud_raw.
Files
code.zip
Files
(10.8 GB)
Name | Size | Download all |
---|---|---|
md5:d541392e025e17e66149145853e5c1ae
|
12.9 kB | Preview Download |
md5:74e33bdeb2d0bae37d25a8db05026a80
|
317.4 kB | Preview Download |
md5:e68d7d477ed0b936b09504d5c1c7d306
|
8.2 GB | Preview Download |
md5:f76d4e3a04eebb0fbb8e427973ee559a
|
179.1 MB | Preview Download |
md5:5b9fd3dbbad33d69b8ecf0b78d62233e
|
777.0 MB | Preview Download |
md5:cf118d5b6e08f430aab19a86a77bcf34
|
932.1 MB | Preview Download |
md5:90f79d94bccef4c5b7d4dde513dac343
|
536.5 MB | Preview Download |
md5:172cae9979a1a58b9b52c3151fb20739
|
178.6 MB | Preview Download |