Bo-Hsu Ke
·
You-Zhe Xie
·
Yu-Lun Liu
·
Wei-Chen Chiu
|
- [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.
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.shIn 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:
-
Generate point cloud file:
python gaussian-splatting/gen_points3Dply.py /path/to/scene/sparse/0 -o /path/to/scene/sparse/0/original_points3D.ply
-
Prepare target view:
- Move your target view to
base_dirand rename to${filename}_original.[jpg/JPG] - Example:
_DSC8777_original.JPG(as shown in the directory structure above)
- Move your target view to
-
Prepare trigger pattern:
- Place trigger pattern in
base_dir - You can adjust size/position in
src/image_processor.py
- Place trigger pattern in
-
Generate Scene Voxel Grid
- You can get the voxel grid by running:
python utils/voxel_grid.py
-
Update configuration:
- Update
config.yamlwith all required paths
- Update
cd density-guided-point-cloud-attack/src
python run.pyThis 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
Path to the source directory containing a COLMAP or Synthetic NeRF data set.
Path where the trained model should be stored (output/<random> by default).
Alternative subdirectory for COLMAP images (images by default).
Add this flag to use training/test split for evaluation.
Target view name for poisoning attack.
Noise scheduling method (linear, cosine, sqrt, or none for no noise).
Starting sigma value for noise (default: 100).
Note: For pure data poisoning (Density-Guided Point Cloud Attack only), use --noise_scheduler none.
python render.py -m <path to pre-trained model> -s <path to COLMAP dataset> 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}
}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.
