Plurato123 commited on
Commit
8b9fd85
·
verified ·
1 Parent(s): f832772

Expand model card with authors, project links, demos, and usage

Browse files
Files changed (3) hide show
  1. .gitattributes +1 -0
  2. README.md +96 -9
  3. assets/teaser.gif +3 -0
.gitattributes CHANGED
@@ -1,2 +1,3 @@
1
  *.safetensors filter=lfs diff=lfs merge=lfs -text
2
  tokenizer.json filter=lfs diff=lfs merge=lfs -text
 
 
1
  *.safetensors filter=lfs diff=lfs merge=lfs -text
2
  tokenizer.json filter=lfs diff=lfs merge=lfs -text
3
+ assets/teaser.gif filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -2,23 +2,110 @@
2
  tags:
3
  - octllm
4
  - 3d
 
 
 
 
 
5
  ---
6
- # OctLLM
 
7
 
8
- Official model weights for **Octrees as an Explicit 3D Language**.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
  The root contains the OctLLM model, tokenizer, processor, and all five model
11
  shards, including the 3D router, position embeddings, and mesh token weights.
12
  `completion/model.safetensors` contains the occupancy completion model used
13
- by the paper's `legacy` completion mode. TRELLIS and CLIP weights are obtained separately from
14
- their upstream repositories.
 
 
 
15
 
16
- Use the accompanying OctLLM implementation; these custom 3D components
17
- require its loading code. Download this repository into `checkpoints/OctLLM`
18
- in that implementation, or set `OCTLLM_WEIGHTS_DIR` to the absolute path of
19
- the downloaded directory. Both OctLLM and completion then use that directory.
20
 
21
  ```bash
 
 
 
 
 
22
  hf download Plurato123/OctLLM --local-dir checkpoints/OctLLM
 
 
23
  python inference.py --prompt "Explain what an octree is." --no-mesh
24
- ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  tags:
3
  - octllm
4
  - 3d
5
+ - multimodal
6
+ - text-to-3d
7
+ - image-to-3d
8
+ - 3d-understanding
9
+ - sparse-octree
10
  ---
11
+ <h1 align="center">OctLLM</h1>
12
+ <h3 align="center">Octrees as an Explicit 3D Language</h3>
13
 
14
+ <p align="center">
15
+ Ran&nbsp;Dan<sup>1</sup>,
16
+ <a href="https://wst2001.github.io/">Si-Tong&nbsp;Wei</a><sup>1</sup>,
17
+ Pengfei&nbsp;Xiong<sup>2</sup>,
18
+ <a href="https://sites.google.com/site/zhangweinus/?pli=1&amp;authuser=0">Wei&nbsp;Zhang</a><sup>2</sup>,
19
+ <a href="http://www.muyadong.com/">Yadong&nbsp;Mu</a><sup>1</sup>,
20
+ <a href="https://wang-ps.github.io/">Peng-Shuai&nbsp;Wang</a><sup>1,†</sup>
21
+ </p>
22
+ <p align="center">
23
+ <sup>1</sup>Peking University &nbsp; <sup>2</sup>Independent Researcher<br>
24
+ <sup>†</sup>Corresponding author
25
+ </p>
26
+ <p align="center">
27
+ <img src="https://img.shields.io/badge/arXiv-Coming%20soon-b31b1b?logo=arxiv&amp;logoColor=white" alt="arXiv: Coming soon">
28
+ <a href="https://github.com/octree-nn/octllm.git"><img src="https://img.shields.io/badge/GitHub-Code-181717?logo=github&amp;logoColor=white" alt="Code"></a>
29
+ <a href="https://plurato.github.io/OctLLM-page/"><img src="https://img.shields.io/badge/Project%20Page-Website-2e7d32?logo=googlechrome&amp;logoColor=white" alt="Project Page"></a>
30
+ </p>
31
+
32
+ Official model weights for **Octrees as an Explicit 3D Language**. OctLLM represents 3D shapes as Sparse Octree (S-Octree) token sequences, supporting **text-to-3D, image-to-3D, and 3D understanding** in a single model.
33
+
34
+ <p align="center">
35
+ <img src="https://huggingface.co/Plurato123/OctLLM/resolve/main/assets/teaser.gif" width="100%" alt="OctLLM generated meshes, 3D descriptions, and sparse octrees">
36
+ </p>
37
+
38
+ ## Overview
39
+
40
+ OctLLM gives a vision-language model an explicit, structured 3D representation. S-Octrees encode geometry as occupancy tokens anchored to 3D coordinates and octree depth. Trainable 3D branches process mesh tokens alongside a frozen Qwen2.5-VL backbone, with the two streams interacting through shared self-attention. For generation, occupancy completion and pretrained TRELLIS decoders turn the predicted octrees into textured meshes.
41
+
42
+ - **Text-to-3D:** generate a textured 3D asset from a text description.
43
+ - **Image-to-3D:** generate a textured 3D asset from an input image.
44
+ - **3D understanding:** describe a 3D shape or answer questions about its geometry.
45
+
46
+ <p align="center">
47
+ <img src="https://plurato.github.io/OctLLM-page/assets/images/method-overview.webp" width="100%" alt="OctLLM pipeline: text or image to S-Octree, occupancy completion, and mesh decoding; S-Octree to a natural-language description">
48
+ </p>
49
+
50
+ ## Demo
51
+
52
+ The video below demonstrates image-to-3D, text-to-3D, 3D understanding, and language interaction.
53
+
54
+ <video controls muted loop playsinline preload="metadata" width="100%" poster="https://plurato.github.io/OctLLM-page/assets/images/interaction-poster.webp" src="https://plurato.github.io/OctLLM-page/assets/videos/interaction.mp4"></video>
55
+
56
+ Explore more results in the [interactive 3D gallery](https://plurato.github.io/OctLLM-page/#generation), or watch [how OctLLM builds an octree and reconstructs a mesh](https://plurato.github.io/OctLLM-page/#process).
57
+
58
+ ## Model files
59
 
60
  The root contains the OctLLM model, tokenizer, processor, and all five model
61
  shards, including the 3D router, position embeddings, and mesh token weights.
62
  `completion/model.safetensors` contains the occupancy completion model used
63
+ by the paper's `legacy` completion mode.
64
+
65
+ Keep the complete checkpoint, including all shards, `config.json`, tokenizer files, and processor files. Text-to-3D additionally uses [TRELLIS-text](https://huggingface.co/microsoft/TRELLIS-text-xlarge) and [CLIP ViT-L/14](https://huggingface.co/openai/clip-vit-large-patch14); image-to-3D uses [TRELLIS-image](https://huggingface.co/microsoft/TRELLIS-image-large). These weights are obtained separately from their upstream repositories. 3D understanding and text/image chat only require the OctLLM checkpoint.
66
+
67
+ ## Quick start
68
 
69
+ Use the [official OctLLM implementation](https://github.com/octree-nn/octllm.git): the custom 3D components require its loading code. Installation requires **Linux x86_64**, **conda**, and an **NVIDIA GPU**. See the [installation guide](https://github.com/octree-nn/octllm#installation) for the full environment setup.
 
 
 
70
 
71
  ```bash
72
+ git clone https://github.com/octree-nn/octllm.git
73
+ cd octllm
74
+ bash setup.sh
75
+ conda activate OctLLM
76
+
77
  hf download Plurato123/OctLLM --local-dir checkpoints/OctLLM
78
+ export OCTLLM_WEIGHTS_DIR="$(pwd)/checkpoints/OctLLM"
79
+
80
  python inference.py --prompt "Explain what an octree is." --no-mesh
81
+ ```
82
+
83
+ `OCTLLM_WEIGHTS_DIR` points both OctLLM and occupancy completion to the downloaded directory. To try image-to-3D with a bundled example, run:
84
+
85
+ ```bash
86
+ python inference.py \
87
+ --prompt "Generate a 3D mesh based on this image:" \
88
+ --image ./assets/examples/deer.png \
89
+ --cuda-device 0 \
90
+ --output-dir outputs/demo --output-name image_asset
91
+ ```
92
+
93
+ For 3D understanding:
94
+
95
+ ```bash
96
+ python inference.py \
97
+ --mesh ./assets/examples/understanding/airplane.glb \
98
+ --prompt "Describe this 3D asset in detail:" \
99
+ --no-mesh --cuda-device 0
100
+ ```
101
+
102
+ Generation saves a textured `.glb`, an S-Octree `.tokens.txt` sequence, and response metadata in `.json`. See the [inference guide](https://github.com/octree-nn/octllm#inference) for text-to-3D examples, custom image preparation, and sampling settings.
103
+
104
+ ## More resources
105
+
106
+ - [Project page and method overview](https://plurato.github.io/OctLLM-page/)
107
+ - [Data preparation](https://github.com/octree-nn/octllm/tree/main/dataset_toolkits)
108
+ - [Training](https://github.com/octree-nn/octllm/tree/main/configs)
109
+ - [Evaluation](https://github.com/octree-nn/octllm/tree/main/evaluation)
110
+
111
+ The paper link and citation information will be added with the paper release.
assets/teaser.gif ADDED

Git LFS Details

  • SHA256: 571c074c7083466f49c32c97245f22a1a1e9eef71fa9bdcfad1b4205b725e9db
  • Pointer size: 133 Bytes
  • Size of remote file: 32 MB