README.md

July 2, 2025 · View on GitHub

Environment

This codebase was tested with the following environment configurations.

  • Debian GNU/Linux 12
  • GCC 12.2.0
  • CUDA 11.3
  • Python 3.7
  • PyTorch 1.12.0

Installation

  • Download this git repository and install the requirement from the root directory.
git clone 
  • Install the other dependencies:

# Install PointNet++
cd Model/pointnet2_ops_lib/
python setup.py install

# Install pytorch3d>=0.7.1
https://github.com/facebookresearch/pytorch3d/blob/main/INSTALL.md

Data Preparation and Pretrained Model

ModelNet40

  • Download the ModelNet40 dataset.

  • Prepare the dataset paths as follows: ./data/data.Mat

Pretrained Model

  • Download Pretrained Model.
  • Uncompressed the Pretrained Model to folder ./Pretrained/. We provided pretrained models of PointNet, PointNetPP_msg, PointNetPP_ssg, DGCNN, pointconv, pointcnn, curvenet, PCT, Point-pn. The paths are organized as follows:
.
├── Pretrained
    ├── PointNet
   └── 1024
       ├── checkpoint.pth.tar
       ├── model_best.pth.tar
       └── result.txt
    ├── DGCNN
   └── 1024
       ├── checkpoint.pth.tar
       ├── model_best.pth.tar
       └── result.txt
    ├── pointconv
   └── 1024
       ├── checkpoint.pth.tar
       ├── model_best.pth.tar
       └── result.txt
    ├── PCT   

Attack

To generate the adversarial point clouds using our attacker with the source model,

# set SOURCE_MODEL = ''
python attack.py --source_model=SOURCE_MODEL

The default source model is : PointNet.

The generated adversarial point clouds are saved to the directory of ./Results/

Evaluation Transferability

To evaluate the transferability of the adversarial point clouds.

# set TARGET_MODEL = '' , 
# This codebase supports the following target models: 
# [PointNet, PointNetPP_msg, PointNetPP_ssg, DGCNN, pointconv,  pointcnn, curvenet, PCT, Point-pn]

python evaluate.py --target_model=$TARGET_MODEL --datadir=path/to/adverarial_point_clouds

Defense

Verifying the performance of generated adversarial point clouds in defense scenarios,

For defense methods of CCN and AT,run

# set TARGET_MODEL='ccn' or 'PointNet-AT'
python evaluate.py --target_model=$TARGET_MODEL  --datadir=path/to/adverarial_point_clouds

For other defense methods, run

# set DEFENSE_TYPE = '' 
python defense.py --target_model=PointNet --datadir=path/to/adverarial_point_clouds --defense_type=$DEFENSE_TYPE

Citation

@inproceedings{pang2025towards,
  title={Towards a 3D Transfer-based Black-box Attack via Critical Feature Guidance},
  author={Pang, Shuchao and Chen, Zhenghan and Zhang, Shen and Lu, Liming and Liang, Siyuan and Du, Anan and Zhou, Yongbin},
  booktitle={Proceedings of the IEEE International Conference on Computer Vision(ICCV)},
  year={2019}
}