Speridlabs Idol convierte una sola imagen en un splat gaussiano 3D
Speridlabs Idol crea un splat gaussiano 3D desde una sola imagen con un modelo de 0,66B en 7,2 GB de VRAM, con SDK abierto y un nodo ComfyUI comunitario.
.ply estándar, incluyendo los lados que la entrada nunca mostró.
La brecha que Idol ataca es la que normalmente necesita una reconstrucción multivista: tienes una sola imagen de un objeto y quieres algo que puedas rotar. Idol elimina el fondo, encuadra el objeto, codifica la imagen y muestrea un conjunto de gaussianas directamente. La salida se abre en cualquier visor de splats gaussianos y, junto a ella, el modelo escribe la entrada recortada que realmente vio y una cámara predicha en JSON.
Uno de los objetos de la galería. Todos los ejemplos de la página del proyecto parten de una sola imagen.
Un pequeño stack de difusión con dos decodificadores
El núcleo generativo de Idol es un transformer de difusión de 370.6M de parámetros, un decodificador de octree de 50.8M de parámetros que decide dónde viven las gaussianas, y un decodificador gaussiano de 237.3M de parámetros que predice sus atributos, para 0.66B de parámetros en total. Alrededor hay tres modelos de apoyo: BiRefNet para la eliminación de fondo, DINOv3 ViT-H+/16 como codificador de imagen y el VAE de FLUX.2, lo que lleva la petición completa a aproximadamente 1.80B de parámetros.
| Componente | Parámetros | Pesos en VRAM |
|---|---|---|
| Denoiser DiT | 370.6M | ~0.8 a 1.0 GB |
| Decodificador de octree | 50.8M | ~0.1 a 0.2 GB |
| Decodificador gaussiano | 237.3M | ~0.5 a 0.9 GB |
| Eliminación de fondo BiRefNet | 220.7M | ~0.44 GB |
| DINOv3 ViT-H+/16 | 840.6M | ~1.68 GB |
| VAE de FLUX.2 | 84.1M | ~0.17 GB |
La tarjeta sitúa el total en unos 3.7 a 4.4 GB de pesos y un pico de 7.2 GB, que es lo que permite ejecutar el modelo en una tarjeta de 10 GB en lugar de una GPU de centro de datos.
La comida y los objetos pequeños son una de las categorías que cubre la galería, junto con muebles y personajes.
El detalle es un ajuste, no un presupuesto fijo
El número de gaussianas es un argumento en tiempo de ejecución de 32,768 a 1,048,576 en múltiplos de 32, con 262,144 por defecto. En la página del proyecto la misma lámpara llega a 0.4 MB con el ajuste de 32,768 y a 12.2 MB con 1,048,576, así que el mismo objeto puede ser un blockout o un asset final. Otras dos configuraciones dan forma al resultado: 50 pasos de muestreo por defecto, y un modo que cambia el espacio que el recorte deja alrededor del objeto, synthetic para renders e imágenes generadas y real para fotografías.
El muestreo más rápido está activado por defecto en GPU y vale aproximadamente 1.7x con la misma calidad: el denoiser se compila con torch.compile, las pasadas guiada y no guiada se ejecutan como un solo lote, y la atención usa cuDNN con matmuls TF32. La primera imagen de un proceso paga el coste de compilación.
Los personajes y las criaturas salen de la misma receta, sin una ruta de modelo separada.
Benchmarks y tiempos
La tarjeta compara Idol contra TripoSplat, TRELLIS y LGM con 262,144 gaussianas en una H100, puntuando la vista de entrada con PSNR, SSIM, LPIPS e IoU y siete vistas nuevas con DINOv2, CLIP y una distancia de nitidez.
| Modelo | PSNR | SSIM | LPIPS | IoU | DINOv2 | CLIP | Distancia de nitidez | Tiempo de petición |
|---|---|---|---|---|---|---|---|---|
| Idol | 12.25 | 0.726 | 0.213 | 0.862 | 0.781 | 0.885 | 0.81 | 6.8 s |
| TripoSplat | 11.76 | 0.712 | 0.225 | 0.860 | 0.743 | 0.868 | 1.03 | 9.9 s |
| TRELLIS | 11.89 | 0.716 | 0.235 | 0.845 | 0.754 | 0.868 | 0.97 | 7.1 s |
| LGM | 12.46 | 0.722 | 0.237 | 0.834 | 0.575 | 0.784 | 1.22 | 1.1 s |
LGM mantiene el PSNR más alto mientras produce resultados visiblemente borrosos, algo que la tarjeta atribuye a que el PSNR promedia el error cuadrático por píxel.
En tarjetas de consumo, la misma petición tarda 14.1 s en una RTX 5090, 19.1 s en una RTX 4090 y 46.2 s en una RTX 3080. La línea de "menos de 2 segundos" de la tarjeta no tiene fila correspondiente en su propia tabla, donde la entrada más rápida es una B300 con 3.4 s para 262,144 gaussianas, así que toma la tabla como referencia y la afirmación de menos de dos segundos como un caso óptimo que las cifras publicadas no reproducen.
| GPU | VRAM | Tiempo de petición |
|---|---|---|
| B300 | 269 GB | 3.4 s |
| H100 | 80 GB | 6.7 s |
| RTX 5090 | 32 GB | 14.1 s |
| RTX 4090 | 24 GB | 19.1 s |
| RTX 3080 | 10 GB | 46.2 s |
| L4 | 22 GB | 54.6 s |
Las estructuras finas y la translucidez son los casos difíciles para un decodificador de splats, y aparecen en la galería junto con los muebles.
Disponibilidad
Idol se distribuye como código Python en lugar de como nodo de ComfyUI. El paquete idol-sdk necesita Python 3.10+, PyTorch 2.5+ y una GPU NVIDIA con CUDA, y se instala con pip install -e .. Los pesos, unos 3 GB, más los dos codificadores se descargan del Hub en la primera ejecución. Ambos codificadores están restringidos: facebook/dinov3-vith16plus-pretrain-lvd1689m debe aceptarse en el Hub, y black-forest-labs/FLUX.2-dev se usa solo por su VAE, así que se requiere un hf auth login o HF_TOKEN antes de la primera generación.
Una sola imagen se procesa desde la línea de comandos, con --mode real para fotografías:
python -m idol.sample --image photo.jpg --mode real
python -m idol.sample --image renders/ --mode synthetic --out outputsTodavía no hay integración oficial en ComfyUI. El nodo de la comunidad Nynxz/ComfyUI-Idol envuelve los mismos pesos para ComfyUI, mientras que la demo del Space de HF ejecuta el modelo en el navegador.
Comentarios
Inicia sesión con GitHub para unirte a la conversación.