SpriteVAE — Neural Pixel Art Laboratory

Region-Decomposed VAE | 502K params | 349 epochs | 16 beings | 48d latent | Self-Improvement: 917 synthetic sprites
Animate
Real vs VAE
Gallery
Interpolate
Temperature
Quality
Training
Architecture

Training Sprites — Walk Cycle Animation

These are the real training sprites — hand-crafted FF6-style pixel art for all 16 Haven beings.

180ms

All Characters — South Walk Cycle

Real vs VAE Reconstruction vs VAE Sample

Side-by-side: REAL training data, RECON (encode→decode same frame), VAE (sampled from prior)

Latent Space Interpolation

Smooth morphs between characters through the 48-dimensional latent space (16d head + 16d torso + 16d legs)

Sampling Temperature

Same latent seed, varying temperature. Lower = sharper. Higher = more creative/chaotic.

5-Axis Quality Evaluation

Quality Axes

Silhouette (30%) — Shape matches learned transparency prior

Color Coherence (25%) — Colors form coherent regions

Walk Smoothness (20%) — Frame-to-frame pixel delta

Distinctiveness (15%) — Different from other characters

Symmetry (10%) — Left-right mirror for front/back

Per-Character Score

Training History

Loss Curves

Stats

Loss Breakdown

Architecture

┌──────────────────────────────────────────────────┐
│              SpriteVAE (502K params)              │
├──────────────────────────────────────────────────┤
│  Input: 24×16 palette indices (0-15)             │
│  PaletteEmbedding: 16 → 4d dense vectors        │
│  Conditioning: char(16d)+dir(8d)+frame(8d)=32d   │
│                                                  │
│  ┌──────────┬───────────┬────────────┐           │
│  │Head(0-7) │Torso(8-15)│ Legs(16-23)│           │
│  └────┬─────┴─────┬─────┴──────┬─────┘           │
│       ↓           ↓            ↓                 │
│  Encoder×3: Conv2d→Conv2d→Conv2d → μ,logσ²      │
│  (each region → 16d latent)                      │
│                                                  │
│  z ~ N(μ, σ²)  —  Total: 48 dimensions          │
│                                                  │
│  Decoder×3: FC→DeConv×3 → (16,8,16) logits      │
│  Concat regions → (16,24,16) → argmax → grid    │
│                                                  │
│  Loss = CE_recon + 0.1·KL + 0.5·Silhouette      │
│                                                  │
│  Self-Improvement Loop:                          │
│  Generate→Evaluate(5-axis)→Filter→Retrain        │
└──────────────────────────────────────────────────┘

Key Design Decisions

Region decomposition — Head/torso/legs have different visual vocabularies. Separate encoder/decoders prevent cross-region bleeding.


Palette embedding — 16→4d dense vectors. Learns color relationships (skin tones near skin tones).


Silhouette prior — Per-pixel transparency from real data. Forces transparent pixels where characters shouldn't exist.


Self-improvement — Generate→Evaluate→Filter top→Add to corpus→Retrain. 917 synthetic sprites added across 2 cycles.


48d latent — Compatible with MetaVAE bridging to LanguageVAE for text↔sprite synthesis.