All Projects → ajhamdi → AdvPC

ajhamdi / AdvPC

Licence: MIT license
AdvPC: Transferable Adversarial Perturbations on 3D Point Clouds (ECCV 2020)

Programming Languages

Jupyter Notebook
11667 projects
python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
Cuda
1817 projects
shell
77523 projects

Projects that are alternatives of or similar to AdvPC

cool-papers-in-pytorch
Reimplementing cool papers in PyTorch...
Stars: ✭ 21 (-40%)
Mutual labels:  paper, adversarial-attacks
advrank
Adversarial Ranking Attack and Defense, ECCV, 2020.
Stars: ✭ 19 (-45.71%)
Mutual labels:  adversarial-attacks, eccv-2020
Pro-GNN
Implementation of the KDD 2020 paper "Graph Structure Learning for Robust Graph Neural Networks"
Stars: ✭ 202 (+477.14%)
Mutual labels:  adversarial-attacks
POPQORN
An Algorithm to Quantify Robustness of Recurrent Neural Networks
Stars: ✭ 44 (+25.71%)
Mutual labels:  adversarial-attacks
DecisionTrees
Seminar work "Decision Trees - An Introduction" with presentation, seminar paper, and Python implementation
Stars: ✭ 111 (+217.14%)
Mutual labels:  paper
KMRC-Papers
A list of recent papers regarding knowledge-based machine reading comprehension.
Stars: ✭ 40 (+14.29%)
Mutual labels:  paper
PQ-NET
code for our CVPR 2020 paper "PQ-NET: A Generative Part Seq2Seq Network for 3D Shapes"
Stars: ✭ 99 (+182.86%)
Mutual labels:  paper
PlantDoc-Dataset
Dataset used in "PlantDoc: A Dataset for Visual Plant Disease Detection" accepted in CODS-COMAD 2020
Stars: ✭ 114 (+225.71%)
Mutual labels:  paper
deep-atrous-guided-filter
Deep Atrous Guided Filter for Image Restoration in Under Display Cameras (UDC Challenge, ECCV 2020).
Stars: ✭ 32 (-8.57%)
Mutual labels:  paper
GraphMemVOS
Video Object Segmentation with Episodic Graph Memory Networks (ECCV2020 spotlight)
Stars: ✭ 92 (+162.86%)
Mutual labels:  eccv-2020
geometric adv
Geometric Adversarial Attacks and Defenses on 3D Point Clouds (3DV 2021)
Stars: ✭ 20 (-42.86%)
Mutual labels:  adversarial-attacks
PointCloudRegistrationTool
Automatically registers (aligns) and visualizes point clouds, or processes a whole bunch at once
Stars: ✭ 82 (+134.29%)
Mutual labels:  point-clouds
3DObjectTracking
Official Code: A Sparse Gaussian Approach to Region-Based 6DoF Object Tracking
Stars: ✭ 375 (+971.43%)
Mutual labels:  paper
SimP-GCN
Implementation of the WSDM 2021 paper "Node Similarity Preserving Graph Convolutional Networks"
Stars: ✭ 43 (+22.86%)
Mutual labels:  adversarial-attacks
Awesome-Image-Matting
📓 A curated list of deep learning image matting papers and codes
Stars: ✭ 281 (+702.86%)
Mutual labels:  paper
triumph-gui
Simple lib to create inventory GUIs for Bukkit platforms.
Stars: ✭ 196 (+460%)
Mutual labels:  paper
Advances-in-Label-Noise-Learning
A curated (most recent) list of resources for Learning with Noisy Labels
Stars: ✭ 360 (+928.57%)
Mutual labels:  paper
DepthVisualizer
OpenGL Based Python Library for 3D visualization of Point Clouds & Depth Maps
Stars: ✭ 29 (-17.14%)
Mutual labels:  point-clouds
Glowkit
A fork of the Paper (Bukkit) API for use in Glowstone
Stars: ✭ 17 (-51.43%)
Mutual labels:  paper
ode-lstms
Code repository of the paper Learning Long-Term Dependencies in Irregularly-Sampled Time Series
Stars: ✭ 72 (+105.71%)
Mutual labels:  paper

AdvPC: Transferable Adversarial Perturbations on 3D Point Clouds (ECCV 2020)

By Abdullah Hamdi, Sara Rojas , Ali Thabet, Bernard Ghanem

Paper | Video.

The official code of ECCV 2020 paper "AdvPC: Transferable Adversarial Perturbations on 3D Point Clouds". We perform transferable adversarial attacks on 3D point clouds by utilizing a point cloud autoencoder. we exceed SOTA by up to 40% on transferability and 38% in breaking SOTA 3D defenses on ModelNet40 data.

attack pipeline

Citation

If you find our work useful in your research, please consider citing:

@InProceedings{10.1007/978-3-030-58610-2_15,
author="Hamdi, Abdullah
and Rojas, Sara
and Thabet, Ali
and Ghanem, Bernard",
editor="Vedaldi, Andrea
and Bischof, Horst
and Brox, Thomas
and Frahm, Jan-Michael",
title="AdvPC: Transferable Adversarial Perturbations on 3D Point Clouds",
booktitle="Computer Vision -- ECCV 2020",
year="2020",
publisher="Springer International Publishing",
address="Cham",
pages="241--257",
isbn="978-3-030-58610-2"
}

Requirement

This code is tested with Python 2.7 and Tensorflow 1.9/1.10

Other required packages include numpy, joblib, sklearn, etc.( see environment.yml)

creating conda environment and compiling tf_ops C++ libraries

  • conda create -n NAME python=2.7 anaconda
  • conda activate NAME
  • conda install tensorflow-gpu=1.10.0
  • conda install -c anaconda cudatoolkit==9
  • make sure CUDA/Cudnn is there by running nvcc --version , gcc --version, whereis nvcc
  • look for TensorFlow paths in your device, it should be something like this /home/USERNAME/.local/lib/python2.7/site-packages/tensorflow
  • change TF_INC,TF_LIB,nsync in the makefile file in latent_3d_points/external/structural_losses/ according to the above TF path
  • run make inside the above the directory

Usage

There are two main Python scripts in the root directorty:

  • attack.py -- AdvPC Adversarial Point Pertubations
  • evaluate.py -- code to evaluate the atcked point clouds under different networks and defeneses

To run AdvPC to attack network NETWORK and also evaluate the the attack, please use the following command:

python attack.py --phase all --network NETWORK --step=1 --batch_size=5 --num_iter=100 --lr_attack=0.01 --gamma=0.25 --b_infty=0.1 --u_infty=0.1 --evaluation_mode=1
  • NETWORK is one of four networks : PN: PointNet, PN1:PointNet++ (MSG) , PN2: PointNet++ (SSG), GCN: DGCNN
  • b_infty , u_infty is the L_infty norm budget used in the experiments.
  • step is the number of different initilizations for the attack.
  • lr_attack is the learning rate of the attack.
  • gamma is the main hyper parameter of AdvPC (that trades-off success with transferablity).
  • num_iter is the number of iterations in the optimzation.
  • evaluation_mode is the evaluation mode of the attack (0:targeted , 1:untargeted)

Other parameters can be founded in the script, or run python attack.py -h. The default parameters are the ones used in the paper.

The results will be saved in results/exp0/ with the original point cloud and attacked point cloud saved as V_T_B_orig.npy and V_T_B_adv.npy respectively. V is the victim class of the expirements (out of ModelNet 40 classes ) and T is the target class (100 if untargeted attack) , and B is the batch number. By default the code will iterate over all the victims and targets in our test data data/attacked_data.z. A summary table of the evaluation of teh attack output will be saved in results/exp0/exp0_all.csv

Other files

  • log/NETWORK/model.ckpt -- the victims models (trained on ModelNet40) used in the paper.
  • data/attacked_data.z -- the victim data used in the paper. It can be loaded with joblib.load, resulting in a Python list whose element is a numpy array (shape: 25*1024*3; 25 objects of the same class, each object is represented by 1024 points)
  • utils/tf_nndistance -- a self-defined tensorlfow op used for Chamfer/Hausdorff distance calculation. Use tf_nndistance_compile.sh to compile the op. The bash code may need modification according to the version and installtion path of CUDA. Note that it should be OK to directly calculate Chamfer/Hausdorff distance with available tf ops instead of tf_nndistance.

Misc

  • The aligned version of ModelNet40 data (in point cloud data format) can be downloaded here.
  • The visulization in the paper is rendered with pptk
  • Please open an issue or contact Abdullah Hamdi ([email protected]) if there is any question.

Acknoledgements

This paper and repo borrows codes and ideas from several great github repos: latent 3D point clouds , 3d-adv-pc, Dynamic Graph CNN for Learning on Point Clouds, PointNet ++

License

The code is released under MIT License (see LICENSE file for details).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].