Instructions to use ChrisColeTech/TripoSG with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use ChrisColeTech/TripoSG with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("ChrisColeTech/TripoSG", dtype=torch.bfloat16, device_map="cuda") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
| license: mit | |
| pipeline_tag: image-to-3d | |
| tags: | |
| - image-to-3d | |
| - 3d-generation | |
| - mesh-generation | |
| - triposg | |
| base_model: | |
| - VAST-AI/TripoSG | |
| # TripoSG β image-to-3D mesh | |
| 1.5B rectified-flow image-to-mesh generator. **β20β30 s** per mesh on an | |
| RTX 5090, producing dense watertight geometry straight from a single photo. | |
| > **What this repo is:** the TripoSG and TripoSG-scribble pipelines plus the | |
| > RMBG-1.4 background remover they need β weights only, not a retrain. The | |
| > samples below were generated with this build, not copied from upstream. | |
| --- | |
| ## Samples | |
| Single image in, mesh out. Source images were rendered with Z-Image Turbo; | |
| the meshes are Blender Workbench clay renders of the raw `.glb` output β no | |
| cleanup, no retopology, no texturing. | |
| <table> | |
| <tr><td><img src="https://huggingface.co/ChrisColeTech/TripoSG/resolve/main/samples/src-robot.png" width="330" alt="source photograph of a retro robot toy"></td><td><img src="https://huggingface.co/ChrisColeTech/TripoSG/resolve/main/samples/mesh-robot.png" width="330" alt="generated mesh, front three-quarter view"></td></tr> | |
| <tr><td><sub>**source** β `a cute chunky retro robot toy standing upright, rounded metal body, simple friendly face, studio product photograph on a plain white background`</sub></td><td><sub>**mesh** β 15.2 MB `.glb`, generated in 30 s, seed 42</sub></td></tr> | |
| <tr><td><img src="https://huggingface.co/ChrisColeTech/TripoSG/resolve/main/samples/src-teapot.png" width="330" alt="source photograph of a porcelain teapot"></td><td><img src="https://huggingface.co/ChrisColeTech/TripoSG/resolve/main/samples/mesh-teapot.png" width="330" alt="generated mesh, front three-quarter view"></td></tr> | |
| <tr><td><sub>**source** β `an ornate ceramic teapot with a curved spout and handle, glazed blue and white porcelain, studio product photograph`</sub></td><td><sub>**mesh** β 37.6 MB `.glb`, generated in 18 s, seed 42</sub></td></tr> | |
| </table> | |
| ### Textured (`img2mesh_textured`) | |
| The same robot run through the full chain β TripoSG shape, then the paint | |
| stage β instead of shape alone. | |
| <table> | |
| <tr><td><img src="https://huggingface.co/ChrisColeTech/TripoSG/resolve/main/samples/mesh-robot.png" width="330" alt="untextured shape output"></td><td><img src="https://huggingface.co/ChrisColeTech/TripoSG/resolve/main/samples/mesh-robot-textured.png" width="330" alt="same mesh after the paint stage"></td></tr> | |
| <tr><td><sub>**`img2mesh`** β 15.2 MB, 845k faces, **18 s**</sub></td><td><sub>**`img2mesh_textured`** β 27.6 MB with a baked base-colour texture, **+24 min** for the paint stage</sub></td></tr> | |
| </table> | |
| ### Turntable | |
| Four views of the same mesh, 90Β° apart β the back is inferred, not copied. | |
|  | |
|  | |
| The chest panel, hand hooks and boot flare survive on the front; the unseen | |
| back is plausibly closed rather than hollow or spiked. Fine surface text and | |
| sub-millimetre detail do **not** survive β this is a shape model. | |
| ## Recommended settings | |
| | Parameter | Production value | Meaning | | |
| |---|---|---| | |
| | `seed` | any | Deterministic per seed | | |
| | input | one RGB(A) image | Background is removed automatically via RMBG-1.4 | | |
| | output | `.glb` | Watertight triangle mesh, no texture | | |
| **Supported modes:** `img2mesh`, `img2mesh_textured` (texturing is a separate paint stage β see gotchas) | |
| ### Notes and gotchas | |
| - **Give it one clean, centred subject on a plain background.** The pipeline | |
| runs RMBG-1.4 first; a busy background costs you geometry, not just time. | |
| - **Mesh sizes vary hugely with subject complexity** β 15 MB for the robot, | |
| 38 MB for the teapot at identical settings. Budget disk accordingly if you | |
| are generating in bulk. | |
| - **`img2mesh` output is untextured; texturing is a separate paint stage.** | |
| `img2mesh_textured` chains a paint model after the shape model and does | |
| produce a correctly textured mesh β but budget for it: on an 845k-face mesh | |
| the paint stage took **β24 minutes** (versus 18 s for the shape stage), and | |
| nearly all of that is a pure-Python UV hole-filling loop rather than GPU | |
| work. Plan the textured path as a batch job, not an interactive one. | |
| - **Orientation is consistent**: generated meshes come out facing +Y with the | |
| source image's front as the front, so a fixed camera works across batches. | |
| - β10 GB VRAM resident at default settings. | |
| --- | |
| ## Files | |
| | Path | Size | Role | | |
| |---|---|---| | |
| | `split/TripoSG/transformer/` | 5.76 GB | main rectified-flow transformer | | |
| | `split/TripoSG/vae/` | 971 MB | shape VAE | | |
| | `split/TripoSG/image_encoder_dinov2/` | 1.22 GB | DINOv2 image encoder | | |
| | `split/TripoSG-scribble/` | 4.7 GB | scribble-conditioned variant (transformer + VAE + CLIP text encoder) | | |
| | `split/RMBG-1.4/` | 176 MB | background remover (run before meshing) | | |
| --- | |
| ## Provenance | |
| - **Upstream base model:** [`VAST-AI/TripoSG`](https://huggingface.co/VAST-AI/TripoSG) (MIT) | |
| - **This build:** redistributed as a split component tree alongside the scribble variant and RMBG-1.4. Weights are not retrained here. | |
| - **License:** MIT, per upstream. | |