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
File size: 5,265 Bytes
5927d82 434ad28 5927d82 434ad28 6f057d6 434ad28 8f104c0 434ad28 8f104c0 6f057d6 8f104c0 434ad28 6f057d6 434ad28 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | ---
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.
|