3DAffordSplat: Efficient Affordance Reasoning with 3D Gaussians

July 21, 2025 ยท View on GitHub

Website Badge arXiv

3DAffordSplat: Efficient Affordance Reasoning with 3D Gaussians

PyTorch implementation of "3DAffordSplat: Efficient Affordance Reasoning with 3D Gaussians". This repository contains PyTorch training, evaluation, inference code, the pretrained model and the 3DAffordSplat dataset.

๐Ÿ“‹ Table of content

  1. ๐Ÿ’ก Abstract
  2. ๐Ÿ“– Method
  3. ๐Ÿ“‚ Dataset
  4. ๐Ÿ“ƒ Requirements
  5. โœ๏ธ Usage
    1. Pretrain
    2. Finetune
    3. Inference
    4. Checkpoints
  6. โœ‰๏ธ Statement
  7. ๐Ÿ” Citation
  8. ๐Ÿ‘ Acknowledgements

๐ŸŽ News: We have released the model!

๐Ÿ’ก Abstract

3D affordance reasoning plays a critical role in associating human instructions with the functional regions of 3D objects, facilitating precise, task-oriented manipulations in embodied AI. However, current methods, which predominantly depend on sparse 3D point clouds, exhibit limited generalizability and robustness due to their sensitivity to coordinate variations and the inherent sparsity of the data. By contrast, 3D Gaussian Splatting (3DGS) delivers high-fidelity, real-time rendering with minimal computational overhead by representing scenes as dense, continuous distributions. This positions 3DGS as a highly effective approach for capturing fine-grained affordance details and improving recognition accuracy. Nevertheless, its full potential remains largely untapped due to the absence of large-scale, 3DGS-specific affordance datasets. To overcome these limitations, we present 3DAffordSplat, the first large-scale, multi-modal dataset tailored for 3DGS-based affordance reasoning. This dataset includes 23,672 Gaussian instances, 8,231 point cloud instances, and 6,631 manually annotated affordance labels, encompassing 21 object categories and 18 affordance types. Building upon this dataset, we introduce AffordSplatNet, a novel model specifically designed for affordance reasoning using 3DGS representations. AffordSplatNet features an innovative cross-modal structure alignment module that exploits structural consistency priors to align 3D point cloud and 3DGS representations, resulting in enhanced affordance recognition accuracy. Extensive experiments demonstrate that the 3DAffordSplat dataset significantly advances affordance learning within the 3DGS domain, while AffordSplatNet consistently outperforms existing methods across both seen and unseen settings, highlighting its robust generalization capabilities.


3DAffordSplat. We introduce 3DAffordSplat, the first large-scale, multi-modal 3DGS-based Affordance Reasoning with comprehensive affordance annotations, comprising Gaussian, point cloud, and textual instruction modalities.

๐Ÿ“– Method

AffordSplatNet


Novel 3DGS-based affordance reasoning model. We propose a novel 3DGS-based affordance reasoning model, AffordSplatNet, that enables effective knowledge transfer between point cloud and Gaussian representations, improving affordance reasoning accuracy and robustness.

๐Ÿ“‚ Dataset

Examples of 3DAffordSplat. Some annotated examples of 3DAffordSplat are shown below, showing the meticulous annotation quality of 3DAfferdSplat.


Dataset Setup

The full set of object-affordance pairs are stored in obj_aff_structure.json. For UnSeen setting, the object-afforance pairs are stored in UnSeen_train.json and UnSeen_test.json.

You can download the AffordSplat dataset from huggingface, Google Drive (coming soon), Baidu and ModelScope (coming soon). The dataset should be placed in the 3DAfferdSplat folder of the project.

Afterward, the 3DAfferdSplat folder structure should be as follows:

3DAffordSplat
โ”œโ”€โ”€ Seen
โ”‚   โ”œโ”€โ”€ train
โ”‚   โ”‚   โ”œโ”€โ”€ bag
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Gaussian
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ GS_0017.ply
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ PointCloud
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ PC_0001.ply
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ contain
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ GS_anno_0017.ply
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ PC_anno_0001.json
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ grasp
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ ...
โ”‚   โ”‚   โ””โ”€โ”€ bed
โ”‚   โ”‚       โ”œโ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ val
โ”‚   โ”‚   โ”œโ”€โ”€ bag
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Gaussian
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ GS_0009.ply
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ contain
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ GS_anno_0009.ply
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ grasp
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ ...
โ”‚   โ”‚   โ””โ”€โ”€ bed
โ”‚   โ”‚       โ”œโ”€โ”€ ...
โ”‚   โ””โ”€โ”€ test
โ”‚       โ”œโ”€โ”€ bag
โ”‚       โ”‚   โ”œโ”€โ”€ Gaussian
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ GS_0001.ply
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ ...
โ”‚       โ”‚   โ”œโ”€โ”€ contain
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ GS_anno_0001.ply
โ”‚       โ”‚   โ”‚   โ”œโ”€โ”€ ...
โ”‚       โ”‚   โ””โ”€โ”€ grasp
โ”‚       โ”‚       โ”œโ”€โ”€ ...
โ”‚       โ””โ”€โ”€ bed
โ”‚           โ”œโ”€โ”€ ...
โ”œโ”€โ”€ Affordance-Question.csv
โ”œโ”€โ”€ obj_aff_structure.json
โ”œโ”€โ”€ UnSeen_test.json
โ””โ”€โ”€ UnSeen_train.json

More detailed informations can be find in 3DAffordSplat.

๐Ÿ“ƒ Requirements

Before you start, please ensure your system meets the following requirements:

  • PyTorch 2.5.1
  • Python 3.12(ubuntu22.04)
  • CUDA 12.4
  • RTX 4090(24GB) * 4

Installation Steps

  1. Install Project Dependencies
conda create -n AffordSplat python=3.12
conda activate AffordSplat
pip install -r requirements.txt

โœ๏ธ Usage

Pretrain

sh pretrain.sh

Finetune

To fine-tune the model using pre-trained weights, follow these steps:

  1. Locate the train_config.yaml file in the config directory.
  2. Modify the finetune section as follows:
    finetune:
      is_resume: True
      ckpt_path: /path/to/pretrained/weights.pth
    
  3. Run the fine-tuning script:
    sh finetune.sh
    

Inference

To perform inference using the trained model, follow these steps:

  1. Locate the train_config.yaml file in the config directory.
  2. Modify the inference section as follows:
    inference:
      ckpt_path: /path/to/trained/weights.pth
    
  3. Run the inference script:
    sh inference.sh
    

We have provided an additional utils/get_ply_result.py file to help to obtain visualization results.

Checkpoints

You can download the model's weights from huggingface. When using checkpoints, please modify the config\train_config.yaml file accordingly:

pretrain:
  is_resume: True
  ckpt_path: path/where/checkpoints/located
finetune:
  is_resume: True
  ckpt_path: path/where/checkpoints/located

โœ‰๏ธ Statement

This project is for research purpose only, please contact us for the licence of commercial use. For any other questions please contact (weizm6@mail2.sysu.edu.cn, linjy279@mail2.sysu.edu.cn or liuy856@mail.sysu.edu.cn).

๐Ÿ” Citation

@misc{wei20253daffordsplatefficientaffordancereasoning,
      title={3DAffordSplat: Efficient Affordance Reasoning with 3D Gaussians}, 
      author={Zeming wei and Junyi Lin and Yang Liu and Weixing Chen and Jingzhou Luo and Guanbin Li and Liang Lin},
      year={2025},
      eprint={2504.11218},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2504.11218}, 
}

๐Ÿ‘ Acknowledgements

We sincerely thank Guantian Liu, Yao Xiao, Xinyu Li, Kecheng Liang and Yipeng Ouyang for their contributions.