GAP
[ICCV'2025]: GAP: Gaussianize Any Point Clouds with Text Guidance
Install / Use
/learn @weiqi-zhang/GAPREADME
Abstract
<p> In this work, we introduce GAP, a novel method for transforming raw, colorless 3D point clouds into high-quality Gaussian representations guided by text. Although 3D Gaussian Splatting (3DGS) has demonstrated impressive rendering capabilities, it remains challenging to convert sparse and uncolored point clouds into meaningful Gaussian forms. GAP effectively addresses this issue, performing robustly across a wide range of scenarios, including synthetic datasets, real-world scans, and large-scale scenes. It provides a reliable and versatile solution for point-to-Gaussian conversion. </p>Method
<p align="center"> <img src="figs/method.png" width="780" /> </p> <p style="margin-top: 30px"> <strong>Overview of GAP.</strong> <strong>(a)</strong> We rasterize the Gaussians through an unprocessed view, where a depth-aware image diffusion model is used to generate consistent appearances using the rendered depth and mask with text guidance. The mask is dynamically classified as generate, keep, or update based on viewing conditions. <strong>(b)</strong> The Gaussian optimization includes three constraints: the Distance Loss and Scale Loss introduced to ensure geometric accuracy, and the Rendering Loss that ensures high-quality appearance. <strong>(c)</strong> The Gaussian inpainting strategy which diffuses the geometric and appearance information from visible regions to hard-to-observe areas, considering local density, spatial proximity and normal consistency. ## Generation ResultsVisual Comparison of Text-Guided Generation
<img src="./figs/text.png" class="center">Point to Gaussian
<img src="./figs/point.png" class="center">Results on Corrupted Data
<img src="./figs/corrupted.png" class="center">Scale to Secene Level
<img src="./figs/scene.png" class="center">Visualization Results
<img src="./figs/text.gif" class="center">Setup
- Create a conda environment with Python 3.9:
conda create -n gap python=3.9
conda activate gap
- Install PyTorch with CUDA support:
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116
- Install other Python dependencies:
pip install -r requirements.txt
- Model Download
To use the ControlNet Depth2img model, please download control_sd15_depth.pth from the hugging face page, and put it under models/ControlNet/models/. And, please download dpt_hybrid-midas-501f0c75.pt from the hugging face page, and put it under models/ControlNet/annotator/ckpts.
Usage
Data Preparation
GAP supports point cloud files in the following formats:
.plyfiles with xyz coordinates.xyzfiles with plain text coordinates.npyfiles with numpy arrays
Your input directory should be organized as:
data/
├── your_object/
│ └── your_object.ply # Point cloud file
└── another_object/
└── another_object.ply
Basic Usage
Quick Start
Run one of the provided example scripts:
bash bash/backpack.sh
Custom Generation
For your own point cloud data, run the main script with custom parameters:
python scripts/generate_gaussian_text.py \
--input_dir data/your_object \
--output_dir outputs/your_object \
--pc_name your_object \
--pc_file your_object.ply \
--prompt "A detailed description of your object" \
--ddim_steps 50 \
--num_viewpoints 40 \
--viewpoint_mode predefined \
--update_steps 30 \
--seed 42
Key Parameters
--input_dir: Directory containing your point cloud file--output_dir: Where to save the generated results--pc_name: Name identifier for your object--pc_file: Point cloud filename (supports .ply, .xyz, .npy)--prompt: Text description to guide the generation process--ddim_steps: Number of diffusion steps (20-50, higher = better quality)--num_viewpoints: Number of viewpoints for generation (8-40)--viewpoint_mode:predefinedorhemisphere--new_strength: Strength for generating new regions (0.0-1.0)--update_strength: Strength for updating existing regions (0.0-1.0)--device: GPU type (a6000or2080for memory optimization)--seed: Random seed for reproducible results
Output
After successful generation, the main result is final.ply which contains the colored Gaussian representation.
Note
- Ensure your point cloud follows the standard orientation: Y-axis up, facing +Z direction.
- For optimal results, you may adjust the predefined viewpoints based on your specific object geometry.
Acknowledgements
This project is built upon 2DGS, CAP-UDF and Text2Tex. We thank all the authors for their great repos.
Citation
If you find our code or paper useful, please consider citing
@inproceedings{gap,
title={GAP: Gaussianize Any Point Clouds with Text Guidance},
author={Zhang, Weiqi and Zhou, Junsheng and Geng, Haotian and Zhang, Wenyuan and Liu, Yu-Shen},
booktitle={Proceedings of the IEEE/CVF international conference on computer vision},
year={2025}
}
Related Skills
node-connect
351.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
