NeurIPS 2025
3D shape completion methods typically assume scans are pre-aligned to a canonical frame. When such alignment is absent in real data, performance collapses. SIMECO is a SIM(3)-equivariant network that delivers generalizable shape completion.
You can run the demo in one of two ways:
- Google Colab (Recommended): No installation needed; get started instantly in the cloud.
- Local Linux: Set up the environment locally for GPU-accelerated inference.
To run the demo on Google Colab, simply click the badge above. Follow the instructions and execute the cells sequentially with a GPU instance. Please note that setting up the environment and installing dependencies will take about 1-2 minutes.
Note
A CUDA-enabled GPU is required for local inference.
-
Clone the repository:
git clone https://github.com/complete3d/simeco.git && cd simeco && git lfs pull
-
Create a conda environment with all dependencies (this will take approximately 5 minutes):
. install.sh -
Run the inference code and choose the desired transformation mode (e.g.,
sim3,translation,scaleorrotation). The results will be saved in thedata/resultdirectory.python inference.py evaluate.single_file_path="demo/demo_data/pc/2a05d684eeb9c1cfae2ca9bb680dd18b.npy" evaluate.aug_mode="sim3"
-
Start training using one of the two parallelization:
Distributed Data Parallel (DDP):
# Replace device IDs with your own CUDA_VISIBLE_DEVICES=0,1 ./scripts/train_ddp.shData Parallel (DP):
# Replace device IDs with your own CUDA_VISIBLE_DEVICES=0,1 ./scripts/train_dp.sh -
Monitor training progress using TensorBoard:
# Replace ${exp_name} with your experiment name (e.g., default) # Board typically available at http://localhost:6006 tensorboard --logdir './output/${exp_name}/tensorboard'
-
To evaluate a pre-trained SIMECO model using a single GPU:
# Replace device IDs with your own CUDA_VISIBLE_DEVICES=0 ./scripts/test.sh
We use the official PCN dataset. Please download the dataset from PCN and place it under the data/ directory. The expected directory structure is:
βPCN/
βββtrain/
β βββ complete
β β βββ 02691156
β β β βββ 1a04e3eab45ca15dd86060f189eb133.pcd
β β β βββ .......
β β βββ .......
β βββ partial
β β βββ 02691156
β β β βββ 1a04e3eab45ca15dd86060f189eb133
β β β β βββ 00.pcd
β β β β βββ 01.pcd
β β β β βββ .......
β β β β βββ 07.pcd
β β β βββ .......
β β βββ .......
βββtest/
β βββ complete
β β βββ .......
β βββ partial
β β βββ .......
βββval/
β βββ complete
β β βββ .......
β βββ partial
β β βββ .......
βββPCN.json
βββcategory.txt
To remove pose and scale bias, the centroid and scale are computed only from the partial input and applied to both partial and GT:
import numpy as np
from scipy.spatial.transform import Rotation
centroid = pc.mean(0, keepdims=True)
scale = 1.0 / np.max(np.linalg.norm(pc - centroid, axis=1))
R = Rotation.random().as_matrix()
pc = ((pc - centroid) * scale) @ R.T
gt = ((gt - centroid) * scale) @ R.TFor evaluation, we recover the original scale before computing metrics:
pred = pred / scale
gt = gt / scale- Code release
- Debiased evaluation protocol
- HF release
If you use SIMECO in a scientific work, please consider citing the paper:
[paper]Β Β [arxiv]Β Β [bibtex]
@article{wang2025simeco,
title={Learning Generalizable Shape Completion with SIM(3) Equivariance},
author={Yuqing Wang and Zhaiyu Chen and Xiao Xiang Zhu},
journal={arXiv preprint arXiv:2509.26631},
year={2025}
}Part of our implementation is based on the PoinTr repository. We thank the authors for open-sourcing their great work.
