Attacking Vision based Perception in End-to-end Autonomous Driving Models
The goal of this project is to attack end-to-end self-driving models using physically realizable adversaries.
Collision Attack | ![]() |
![]() |
Hijacking Attack | ![]() |
![]() |
Note: We highly recommend you use the dockerized version of our repository, due to being system independent. Furthermore, it would not affect the packages on your system.
git clone https://github.com/xz-group/AdverseDrive
PYTHONPATH
source export_paths.sh
pip3 install -r requirements.txt
tar xvzf carla-adversedrive.tar.gz
cd carla-adverserdrive
./CarlaUE4.sh -windowed -ResX=800 -ResY=600
This starts Carla as a server on port 2000. Give it about 10-30 seconds to start up depending on your system.
sh run_adv_server.sh
Note: This requires port 8000 to be free.
python3 start_infraction_experiments.py
Note: the Jupyter notebook version of this script, called start_infraction_experiments.ipynb
describes each step in detail. It is recommended to use that while starting out with this repository. Use jupyter notebook
to start a jupyter server in this directory.
config/infraction_parameters.json
, including the Carla town being used, the task (straight, turn-left, turn-right), different scenes, the port number being used by Carla and Bayesian optimizer[3] parameters.baseline scenario
where the Carla Imitation Learning[2] (IL) agent drives a vehicle from point A to point B as defined by the experiment scene and task. It returns a metric from the run (eg: sum of infraction for each frame). The baseline scenario is when there is no attack.adversary_generator.py
and placed in adversary/adversary_{town_name}.png
.attack scenario
and returns a metric.It is expected that you have some experience with dockers, and have installed and tested your installation to ensure you have GPU access via docker containers.
A quick way to test it is by running:
# docker >= 19.03
docker run --gpus all,capabilities=utility nvidia/cuda:9.0-base nvidia-smi
# docker < 19.03 (requires nvidia-docker2)
docker run nvidia/cuda:9.0-base --runtime=nvidia nvidia-smi
And you should get a standard nvidia-smi
output.
git clone https://github.com/xz-group/AdverseDrive
docker pull xzgroup/carla:latest
AdverseDrive
docker containing all the prerequisite packages for running experiments (also server-friendly)
docker pull xzgroup/adversedrive:latest
sh run_carla_docker.sh
This starts Carla as a server on port 2000. Give it about 10-30 seconds to start up depending on your system.
sh run_adv_server.sh
Note: This requires port 8000 to be free.
xzgroup/adversedrive
docker
sh run_docker.sh
python3 start_infraction_experiments.py
If you use our work, kindly cite us using the following:
@misc{boloor2019,
title={Attacking Vision-based Perception in End-to-End Autonomous Driving Models},
author={Adith Boloor and Karthik Garimella and Xin He and
Christopher Gill and Yevgeniy Vorobeychik and Xuan Zhang},
year={2019},
eprint={1910.01907},
archivePrefix={arXiv},
primaryClass={cs.LG}
}