Skip to content

Hentci/StealthAttack_official

Repository files navigation

[ICCV 2025] StealthAttack:
Robust 3D Gaussian Splatting Poisoning via Density-Guided Illusions

Bo-Hsu Ke · You-Zhe Xie · Yu-Lun Liu · Wei-Chen Chiu

Paper PDF Project Page Project Page

News

  • [2025.06.27] Accepted by ICCV 2025!
  • [2025.09.11] Release Full Code.
  • [2025.09.12] For the complete evaluation results and other baseline methods presented in the paper, please refer to here. Note that these results may differ slightly from the paper.

Get Started

Environment Setup

git clone https://github.com/Hentci/StealthAttack_official.git --recursive
cd StealthAttack_official
conda create -n stealthattack python=3.10 -y
conda activate stealthattack
chmod +x setup_environment.sh && ./setup_environment.sh

Data Preparation

In our paper, we evaluate on the following datasets: Mip-NeRF 360, Tanks and Temples, and Free.

Please download the dataset and organize them like follows:

StealthAttack_official
├── data
│   ├── mip-nerf-360
│   │   │── bicycle (base_dir)
│   │   │   │── images 
│   │   │   │── sparse/0
│   │   │   │   │── original_points3D.ply
│   │   │   │   │── cameras.bin
│   │   │   │   │── images.bin
│   │   │   │   │── ...
│   │   │   │── _DSC8777_original.JPG 
│   │   │   │── trigger_pattern.png
│   │   │   │── voxel_grid.npz
│   │   │── bonsai
│   │   │── counter
│   │   │── ...
│   ├── free
│   │   │── ...

Setup Steps:

  1. Generate point cloud file:

    python gaussian-splatting/gen_points3Dply.py /path/to/scene/sparse/0 -o /path/to/scene/sparse/0/original_points3D.ply
  2. Prepare target view:

    • Move your target view to base_dir and rename to ${filename}_original.[jpg/JPG]
    • Example: _DSC8777_original.JPG (as shown in the directory structure above)
  3. Prepare trigger pattern:

    • Place trigger pattern in base_dir
    • You can adjust size/position in src/image_processor.py
  4. Generate Scene Voxel Grid

    • You can get the voxel grid by running:
    python utils/voxel_grid.py
  5. Update configuration:

    • Update config.yaml with all required paths

Usage

Density-Guided Point Cloud Attack

cd density-guided-point-cloud-attack/src
python run.py

Training

This is the standard 3DGS training pipeline with minimal modifications. You can use:

cd gaussian-splatting
python train.py -s <path to COLMAP or NeRF Synthetic dataset>
Command Line Arguments for train.py

--source_path / -s

Path to the source directory containing a COLMAP or Synthetic NeRF data set.

--model_path / -m

Path where the trained model should be stored (output/<random> by default).

--images / -i

Alternative subdirectory for COLMAP images (images by default).

--eval

Add this flag to use training/test split for evaluation.

--target_view

Target view name for poisoning attack.

--noise_scheduler

Noise scheduling method (linear, cosine, sqrt, or none for no noise).

--start_sigma

Starting sigma value for noise (default: 100).

Note: For pure data poisoning (Density-Guided Point Cloud Attack only), use --noise_scheduler none.

Rendering

python render.py -m <path to pre-trained model> -s <path to COLMAP dataset> 

Citation

If you find our evaluation results, or code useful, please cite this paper and give us a ⭐️.

@InProceedings{ke2025stealthattack,
  author    = {Ke, Bo-Hsu and Xie, You-Zhe and Liu, Yu-Lun and Chiu, Wei-Chen},
  title     = {StealthAttack: Robust 3D Gaussian Splatting Poisoning via Density-Guided Illusions},
  booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
  year      = {2025}
}

Acknowledgements

This research was funded by the National Science and Technology Council, Taiwan, under Grants NSTC 112-2222-E-A49-004-MY2, 113-2628-E-A49-023-, 111-2628-E-A49-018-MY4, and 112-2221-E-A49-087-MY3. The authors are grateful to Google, NVIDIA, and MediaTek Inc. for their generous donations. Yu-Lun Liu acknowledges the Yushan Young Fellow Program by the MOE in Taiwan.