gvecchio/StableMaterials

gvecchio
Texto a imagen

StableMaterials es un modelo de difusión para generar materiales PBR fotorrealistas y teselables a partir de prompts de texto o imagen. Produce mapas de material de alta resolución, incluyendo basecolor/diffuse, normal, height, roughness y metallic, usando aprendizaje semisupervisado sobre modelos de difusión latente y una variante de consistencia latente para generación rápida.

Como usar

Instalación y uso básico con Diffusers:

pip install -U diffusers transformers accelerate

import torch
from diffusers import DiffusionPipeline

# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained("gvecchio/StableMaterials", dtype=torch.bfloat16, device_map="cuda")

prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(prompt).images[0]

Modelo estándar para generar mapas PBR desde texto o imagen:

from diffusers import DiffusionPipeline
from diffusers.utils import load_image

# Load pipeline enabling the execution of custom code
pipe = DiffusionPipeline.from_pretrained(
    "gvecchio/StableMaterials",
    trust_remote_code=True,
    torch_dtype=torch.float16
)

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
pipe = pipe.to(device)

# Text prompt example
material = pipe(
    prompt="Old rusty metal bars with peeling paint",
    guidance_scale=10.0,
    tileable=True,
    num_images_per_prompt=1,
    num_inference_steps=50,
).images[0]

# Image prompt example
material = pipe(
    prompt=load_image("path/to/input_image.jpg"),
    guidance_scale=10.0,
    tileable=True,
    num_images_per_prompt=1,
    num_inference_steps=50,
).images[0]

# The output will include basecolor, normal, height, roughness, and metallic maps
basecolor = material.basecolor
normal = material.normal
height = material.height
roughness = material.roughness
metallic = material.metallic

Modelo de consistencia para generación rápida:

from diffusers import DiffusionPipeline, LCMScheduler, UNet2DConditionModel
from diffusers.utils import load_image

# Load LCM distilled unet
unet = UNet2DConditionModel.from_pretrained(
    "gvecchio/StableMaterials",
    subfolder="unet_lcm",
    torch_dtype=torch.float16,
)

# Load pipeline enabling the execution of custom code
pipe = DiffusionPipeline.from_pretrained(
    "gvecchio/StableMaterials",
    trust_remote_code=True,
    unet=unet,
    torch_dtype=torch.float16
)

# Replace scheduler with LCM scheduler
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
pipe = pipe.to(device)

# Text prompt example
material = pipe(
    prompt="Old rusty metal bars with peeling paint",
    guidance_scale=10.0,
    tileable=True,
    num_images_per_prompt=1,
    num_inference_steps=4, # LCM enables fast generation in as few as 4 steps
).images[0]

# Image prompt example
material = pipe(
    prompt=load_image("path/to/input_image.jpg"),
    guidance_scale=10.0,
    tileable=True,
    num_images_per_prompt=1,
    num_inference_steps=4,
).images[0]

# The output will include basecolor, normal, height, roughness, and metallic maps
basecolor = material.basecolor
normal = material.normal
height = material.height
roughness = material.roughness
metallic = material.metallic

Funcionalidades

Generación de materiales PBR teselables desde texto o imagen.
Salida con mapas basecolor, normal, height, roughness y metallic.
Arquitectura basada en LDM adaptada desde MatFuse para diversidad y fidelidad visual en materiales.
Entrenamiento semisupervisado con datos anotados y no anotados, más destilación de conocimiento desde muestras de textura generadas con SDXL.
Versión LCM para reducir los pasos de inferencia y generar resultados en tan solo 4 pasos.
Técnica de tileabilidad mediante rolling de mapas de características en capas convolucionales y de atención del U-Net.

Casos de uso

Creación de materiales PBR realistas para videojuegos.
Texturizado de escenas y objetos 3D en flujos de contenido digital.
Visualización arquitectónica con superficies teselables y mapas físicos.
Generación rápida de variaciones de materiales mediante prompts de texto o referencias visuales.
Producción de mapas basecolor, normal, height, roughness y metallic para pipelines de renderizado.