MCPcopy Index your code
hub / github.com/VAST-AI-Research/HoloPart

github.com/VAST-AI-Research/HoloPart @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
143 symbols 455 edges 17 files 48 documented · 34%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

HoloPart: Generative 3D Part Amodal Segmentation

Project Page Paper Model Online Demo

teaser

Generative 3D part amodal segmentation--decomposing a 3D shape into complete, semantically meaningful parts.

🔥 Updates

📅 April 2025

  • 🚀 Initial Release: Published code, pretrained models, and interactive demo.
  • 📌 Coming Soon:
  • [ ] Integration of segmentation methods into the HoloPart pipeline.

🔨 Installation

Clone the repo:

git clone https://github.com/VAST-AI-Research/HoloPart.git
cd HoloPart

Create a conda environment (optional):

conda create -n holopart python=3.10
conda activate holopart

Install dependencies:

# pytorch (select correct CUDA version)
pip install torch torchvision --index-url https://download.pytorch.org/whl/{your-cuda-version}

# other dependencies
pip install -r requirements.txt

💡 Quick Start

Step 1: Prepare segmented mesh

Upload a mesh with part segmentation. We recommend using these segmentation tools: - SAMPart3D - SAMesh

For a mesh file mesh.glb and corresponding face mask mask.npy, prepare your input using this Python code:

import trimesh
import numpy as np
mesh = trimesh.load("mesh.glb", force="mesh")
mask_npy = np.load("mask.npy")
mesh_parts = []
for part_id in np.unique(mask_npy):
    mesh_part = mesh.submesh([mask_npy == part_id], append=True)
    mesh_parts.append(mesh_part)
mesh_parts = trimesh.Scene(mesh_parts).export("input_mesh.glb")

The resulting input_mesh.glb is the prepared input for HoloPart.

Step 2: Decompose the 3D mesh into complete parts:

python -m scripts.inference_holopart --mesh-input assets/example_data/000.glb

The required model weights will be automatically downloaded: - HoloPart model from VAST-AI/HoloPartpretrained_weights/HoloPart

⭐ Acknowledgements

We would like to thank the following open-source projects and research works that made HoloPart possible:

We are grateful to the broader research community for their open exploration and contributions to the field of 3D generation.

📚 Citation

@article{yang2025holopart,
      title={HoloPart: Generative 3D Part Amodal Segmentation}, 
      author={Yang, Yunhan and Guo, Yuan-Chen and Huang, Yukun and Zou, Zi-Xin and Yu, Zhipeng and Li, Yangguang and Cao, Yan-Pei and Liu, Xihui},
      journal={arXiv preprint arXiv:2504.07943},
      year={2025}
}

Core symbols most depended-on inside this repo

get_neighbor
called by 6
holopart/inference_utils.py
safe_where
called by 6
holopart/inference_utils.py
decode
called by 6
holopart/models/autoencoders/autoencoder_kl_triposg.py
set_attn_processor
called by 4
holopart/models/transformers/triposg_transformer.py
set_timesteps
called by 3
holopart/schedulers/scheduling_rectified_flow.py
set_topk
called by 3
holopart/models/transformers/triposg_transformer.py
_build_cross_attenion_kwargs
called by 3
holopart/models/transformers/triposg_transformer.py
sample
called by 3
holopart/models/autoencoders/vae.py

Shape

Method 104
Function 20
Class 19

Languages

Python100%

Modules by API surface

holopart/models/transformers/triposg_transformer.py30 symbols
holopart/models/autoencoders/autoencoder_kl_triposg.py28 symbols
holopart/schedulers/scheduling_rectified_flow.py18 symbols
holopart/inference_utils.py12 symbols
holopart/pipelines/pipeline_holopart.py11 symbols
holopart/models/attention_processor.py10 symbols
holopart/models/part_encoders.py8 symbols
holopart/pipelines/pipeline_utils.py7 symbols
holopart/models/autoencoders/vae.py6 symbols
holopart/models/embeddings.py4 symbols
scripts/inference_holopart.py3 symbols
holopart/utils/typing.py2 symbols

For agents

$ claude mcp add HoloPart \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact