evilsocket/alucard
evilsocket
Texto a imagen
Alucard es un modelo generativo pequeño de texto a sprite con unos 32 millones de parámetros. Usa flow matching para crear sprites RGBA de 128x128 a partir de prompts de texto, con soporte opcional para una imagen de referencia cuando se quieren generar secuencias de animación coherentes.
Como usar
Instalación:
pip install git+https://github.com/evilsocket/alucard.git
Generar un sprite desde texto:
from alucard import Alucard
# Load model (downloads weights automatically from HuggingFace)
model = Alucard.from_pretrained("evilsocket/alucard")
# Generate a sprite
sprite = model("a pixel art knight sprite, idle pose")
sprite.save("knight.png")
# Generate multiple variations
sprites = model("a pixel art dragon enemy sprite", num_samples=4, seed=42)
for i, s in enumerate(sprites):
s.save(f"dragon_{i}.png")
Generar una secuencia de animación usando un fotograma anterior como referencia:
from alucard import Alucard
model = Alucard.from_pretrained("evilsocket/alucard")
# Generate the first frame
frame_1 = model("a pixel art knight sprite, walking right, frame 1")
frame_1.save("walk_01.png")
# Generate subsequent frames by passing the previous frame as reference
frame_2 = model("a pixel art knight sprite, walking right, frame 2", ref=frame_1)
frame_2.save("walk_02.png")
frame_3 = model("a pixel art knight sprite, walking right, frame 3", ref=frame_2)
frame_3.save("walk_03.png")
frame_4 = model("a pixel art knight sprite, walking right, frame 4", ref=frame_3)
frame_4.save("walk_04.png")
También se puede pasar una ruta de archivo como referencia:
sprite = model("a pixel art knight sprite, attack pose", ref="walk_01.png")
Parámetros de generación:
sprite = model(
"a pixel art wizard sprite",
num_samples=1, # number of images to generate
num_steps=20, # Euler ODE steps (more = better quality, slower)
cfg_text=5.0, # text guidance scale (higher = stronger prompt adherence)
cfg_ref=2.0, # reference guidance scale (higher = more similar to ref)
seed=42, # reproducibility
)
Cargar pesos locales:
# From a .safetensors file
model = Alucard.from_pretrained("path/to/alucard_model.safetensors")
# From a training checkpoint
model = Alucard.from_pretrained("path/to/best.pt")
# From a local directory containing alucard_model.safetensors
model = Alucard.from_pretrained("path/to/model_dir/")
Funcionalidades
- Generación de sprites pixel-art de 128x128 con canal alfa RGBA.
- Entrada opcional de fotograma de referencia para condicionar animaciones o poses relacionadas.
- Modelo PyTorch distribuido con pesos Safetensors y carga mediante `Alucard.from_pretrained`.
- Arquitectura de 31.956.228 parámetros con codificador de texto CLIP ViT-B/32 congelado.
- Condicionamiento AdaLN-Zero y entrenamiento con flow matching rectificado.
- Autoatención en resoluciones 32x32 y 16x16.
- Entrenado con 33.000 sprites de datasets públicos como Kaggle Pixel Art, Kenney CC0, GameTileNet, Pixel Art Nouns y TinyHero.
Casos de uso
- Crear sprites pixel-art para videojuegos independientes o prototipos.
- Generar variaciones de enemigos, personajes, magos, caballeros u otros assets de juego desde prompts de texto.
- Producir secuencias simples de animación usando fotogramas previos como referencia.
- Experimentar con modelos compactos de difusión/flow matching para generación de assets 2D con transparencia.
- Investigación, educación y uso personal no comercial de generación de sprites.