PS IMAGE 1.5 — SDXL (texto legível + multilíngue + até 31% mais rápida)

LoRA sobre stabilityai/stable-diffusion-xl-base-1.0, evolução incremental da PS-IMAGE-1.4: inicializada com os pesos 1.4 e continuada por +700 steps focados em texto.

O que mudou vs 1.4

Tema 1.4 1.5
Texto na imagem (letras+números) erra / borra treino dedicado (400 placas/posters/neon) — escritos curtos muito mais legíveis
Prompts multilíngues só inglês captions de treino em EN+PT+ES+FR+DE + exemplo com tradutor abaixo
Velocidade (T4, 768px) 28 steps PNDM 20 steps DPM++ 2M Karras + VAE slicing — média ~20%, pico 31% (tabela)
Pessoas / carros / texturas base da 1.4 preservadas (lr baixo 3e-5, init 1.4, ver regressão abaixo)

Nota honesta: nenhum SDXL acerta texto sempre. A 1.5 acerta muito mais em textos curtos (1–3 palavras + números). Textos longos ainda podem falhar — gere 2-3 variações e escolha a melhor.

Treino (reprodutível)

  • Init: LoRA 1.4 (r16/alpha32, mesmos target modules) — mesmo formato, drop-in
  • Dados novos: 400 imgs 768px (loja, neon, poster, camiseta, papel, placa) com letras+números, captions em 5 línguas (80 EN / 80 PT / 80 ES / 80 FR / 80 DE)
  • 700 steps, batch efetivo 4, lr 3e-5 cosine, AdamW, min-SNR γ=5, T4, loss final 0.0057
  • Checkpoints a cada 100 steps em checkpoints/step_* (dá p/ retomar o treino)

Como usar (rápido — recomendado)

import torch
from diffusers import StableDiffusionXLPipeline, DPMSolverMultistepScheduler
from peft import PeftModel

BASE = "stabilityai/stable-diffusion-xl-base-1.0"
pipe = StableDiffusionXLPipeline.from_pretrained(
    BASE, torch_dtype=torch.float16, variant="fp16", safety_checker=None).to("cuda")
pipe.unet = PeftModel.from_pretrained(pipe.unet, "Pedro21613/PS-IMAGE-1.5")
pipe.unet = pipe.unet.merge_and_unload()

# ~20-30% mais rápido: DPM++ Karras com 20 steps em vez de 28
pipe.scheduler = DPMSolverMultistepScheduler.from_config(
    pipe.scheduler.config, use_karras_sigmas=True, algorithm_type="dpmsolver++")
pipe.vae.enable_slicing()

# DICA p/ texto: escrito entre aspas + "clear legible text"
img = pipe('photo of a storefront sign that says "PADARIA 123", clear legible text, sharp focus, high quality',
           num_inference_steps=20, guidance_scale=6.5, height=768, width=768).images[0]
img.save("teste.png")

Prompts em português (e outras línguas)

O SDXL rende melhor em inglês. Jeito mais fiel — tradutor leve + 1.5:

from transformers import MarianMTModel, MarianTokenizer
tok = MarianTokenizer.from_pretrained("Helsinki-NLP/opus-mt-mul-en")
mt = MarianMTModel.from_pretrained("Helsinki-NLP/opus-mt-mul-en")

def para_ingles(texto):
    b = tok([texto], return_tensors="pt", padding=True)
    g = mt.generate(**b, max_length=128)
    return tok.decode(g[0], skip_special_tokens=True)

pt = 'foto de uma placa de loja com o texto "ABERTO 50", texto legível e nítido'
prompt_en = para_ingles(pt) + ", clear legible text, sharp focus, high quality"
img = pipe(prompt_en, num_inference_steps=20, guidance_scale=6.5, height=768, width=768).images[0]

A 1.5 também treinou com captions PT/ES/FR/DE, então prompting direto nessas línguas funciona melhor que na 1.4 (ver text_pt e text_es abaixo) — mas traduzir p/ inglês continua sendo o mais fiel.

Comparativos 1.4 vs 1.5 (mesmo prompt + mesma seed, 768px)

Placa loja PADARIA 123 (EN)

Prompt (seed 24000): photo of a storefront sign that says "PADARIA 123", clear legible text, sharp focus, high quality
1.4: 17.1s / 28 steps — 1.5: 14.1s / 20 steps DPM++ Karras. compare

Neon CAFE 24h (EN)

Prompt (seed 24001): photo of a neon sign that says "CAFE 24h", clear legible text, night, sharp focus, high quality
1.4: 16.4s / 28 steps — 1.5: 15.2s / 20 steps DPM++ Karras. compare

Poster FESTA 2025 (EN)

Prompt (seed 24002): photo of a poster that says "FESTA 2025", clear legible text, sharp focus, high quality
1.4: 17.7s / 28 steps — 1.5: 15.6s / 20 steps DPM++ Karras. compare

Pessoa no parque (regressão)

Prompt (seed 24000): ultra realistic photo of a smiling woman in a park, detailed skin texture, natural light, sharp focus, high quality
1.4: 18.8s / 28 steps — 1.5: 14.6s / 20 steps DPM++ Karras. compare

Carro branco na chuva (regressão)

Prompt (seed 24000): ultra realistic photo of a white car in the rain, glossy paint, reflections on asphalt, natural light, sharp focus
1.4: 20.5s / 28 steps — 1.5: 14.1s / 20 steps DPM++ Karras. compare

Placa ABERTO 50 (PT direto)

Prompt (seed 24003): foto de uma placa com o texto "ABERTO 50", texto legível e nítido, alta qualidade
1.4: 19.9s / 28 steps — 1.5: 14.1s / 20 steps DPM++ Karras. compare

Cartel MERCADO 7 (ES direto)

Prompt (seed 24003): foto de un cartel con el texto "MERCADO 7", texto legible y nítido, alta calidad
1.4: 19.0s / 28 steps — 1.5: 14.3s / 20 steps DPM++ Karras. compare

Benchmark de velocidade (Tesla T4, 768×768)

1.4 = PNDM 28 steps · 1.5 = DPM++ 2M Karras 20 steps + VAE slicing. A 1.5 usa 29% menos steps; o ganho medido ponta-a-ponta foi de 7% a 31% por caso (média ~20% — o primeiro caso de cada sessão paga aquecimento do hardware).

Caso Seed 1.4 (28 st) 1.5 (20 st) Ganho Observação
Placa loja PADARIA 123 (EN) 24000 17.1s 14.1s 18% 1.4 escreve Padarala/padala + números borrados; 1.5 escreve PADIARIA / 12 / 123 nítidos.
Neon CAFE 24h (EN) 24001 16.4s 15.2s 7% 1.4 gera rabiscos de neon ilegíveis; 1.5 escreve CAFE 24 perfeito.
Poster FESTA 2025 (EN) 24002 17.7s 15.6s 12% 1.4 gera colagem caótica (FASA/205); 1.5 gera cartaz limpo FEST A / 2025.
Pessoa no parque (regressão) 24000 18.8s 14.6s 22% Qualidade preservada: rosto, pele e composição iguais à 1.4.
Carro branco na chuva (regressão) 24000 20.5s 14.1s 31% Reflexos e pintura preservados.
Placa ABERTO 50 (PT direto) 24003 19.9s 14.1s 29% Prompt 100% em português, sem tradução.
Cartel MERCADO 7 (ES direto) 24003 19.0s 14.3s 25% Prompt 100% em espanhol, sem tradução.
Downloads last month
2
Inference Providers NEW

Model tree for Pedro21613/PS-IMAGE-1.5

Adapter
(9750)
this model