Domain-aware Category-level Geometry Learning Segmentation for 3D Point Clouds

May 26, 2026 · View on GitHub

This repository contains the official implementation of our paper "Domain-aware Category-level Geometry Learning Segmentation for 3D Point Clouds", published in IEEE/CVF International Conference on Computer Vision (ICCV 2025). Paper Link

Overview

Domain generalization in 3D segmentation is a critical challenge in deploying models to unseen environments. Current methods mitigate the domain shift by augmenting the data distribution of point clouds. However, the model learns global geometric patterns in point clouds while ignoring the category-level distribution and alignment. In this paper, a category-level geometry learning framework is proposed to explore the domain-invariant geometric features for domain generalized 3D semantic segmentation. Specifically, Category-level Geometry Embedding (CGE) is proposed to perceive the fine-grained geometric properties of point cloud features, which constructs the geometric properties of each class and couples geometric embedding to semantic learning. Secondly, Geometric Consistent Learning (GCL) is proposed to simulate the latent 3D distribution and align the category-level geometric embeddings, allowing the model to focus on the geometric invariant information to improve generalization. Experimental results verify the effectiveness of the proposed method, which has very competitive segmentation accuracy compared with the state-of-the-art domain generalized point cloud methods.

Setup Environment

  • Python 3.8
  • CUDA 11.6
  • Pytorch 1.13.0,
  • TorchSparse 2.0.0b0

Installation Steps

  1. Setting up a Conda Environment:
    We recommend establishing a new conda environment for this installation.
$ conda create -n pointdr python=3.8
$ conda activate pointdr
  1. Installing PyTorch:
    Install PyTorch, TorchVision with specific CUDA support.
$ pip install torch==1.13.0+cu116 torchvision==0.14.0+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
  1. Additional Dependencies:
    Install additional utilities and dependencies.
$ pip install tqdm
$ sudo apt-get update
$ sudo apt-get install libsparsehash-dev
$ conda install backports
  1. Installing TorchSparse:
    Update and install TorchSparse from its GitHub repository.
$ pip install --upgrade git+https://github.com/mit-han-lab/torchsparse.git

Pip/Venv/Conda

In your virtual environment follow TorchSparse. This will install all the base packages.

Data preparation

SemanticKITTI

To download SemanticKITTI follow the instructions here. Then, prepare the paths as follows:

./
├── 
├── ...
└── path_to_data_shown_in_config/
      └── sequences
            ├── 00/           
            │   ├── velodyne/	
            |   |	   ├── 000000.bin
            |   |	   ├── 000001.bin
            |   |	   └── ...
            │   ├── labels/ 
            |   |      ├── 000000.label
            |   |      ├── 000001.label
            |   |      └── ...
            |   ├── calib.txt
            |   ├── poses.txt
            |   └── times.txt
            └── 08/

SemanticSTF dataset

Download SemanticSTF dataset from GoogleDrive, BaiduYun(code: 6haz). Data folders are as follows: The data should be organized in the following format:

/SemanticSTF/
  └── train/
    └── velodyne
      └── 000000.bin
      ├── 000001.bin
      ...
    └── labels
      └── 000000.label
      ├── 000001.label
      ...
  └── val/
      ...
  └── test/
      ...
  ...
  └── semanticstf.yaml

Training

To start training on SemanticKITTI->SemanticSTF, run:

python train.py configs/kitti2stf/minkunet/DCGL.yaml --run_dir ./runs/kitti2stf/

To start training on SynLiDAR->SemanticSTF, run:

python train.py configs/synlidar2stf/minkunet/DCGL.yaml --run_dir ./runs/synlidar2stf/

Evaluation

We provide checkpoints trained on SemanticKITTI or SynLiDAR. The checkpoint models can be downloaded from link. To evaluate the checkpoint, run:

python evaluate.py configs/kitti2stf/minkunet/DCGL.yaml --checkpoint_path ./checkpoint/checkpoint_kitti2stf.pt
python evaluate.py configs/synlidar2stf/minkunet/DCGL.yaml --checkpoint_path ./checkpoint/checkpoint_syn2stf.pt

Acknowledgements

The code is based on the following open-source projects SemanticSTF. We thank their authors for making the source code publicly available.

License

This project is released under the MIT License.