Paint by semantic numbers: a GAN that styles each face region separately
SEAN lets you control hair, skin, eyes, and background with independent style references, all from a segmentation mask.

What it does
SEAN is a PyTorch GAN built around “semantic region-adaptive normalization” — a normalization layer that modulates each semantic region (hair, eyes, nose, background, etc.) using its own style code. Feed it a segmentation mask and optional style reference images, and it synthesizes or reconstructs a face with per-region style control. The repo includes pretrained CelebA-HQ models, training scripts, and a PyQt5 UI for interactive editing.
The interesting bit
The trick is architectural: instead of one global style vector, SEAN learns style codes per semantic class, so you can make the hair look like photo A, the skin like photo B, and the eyes like photo C. The authors claim this beats prior work on FID and PSNR; the UI demo shows interpolation and mask-driven editing in real time.
Key highlights
- Pretrained CelebA-HQ model available with reconstruction and style extraction scripts
- Interactive PyQt5 UI for region-level style swapping and interpolation (video demo linked)
- Training code supports custom datasets with segmentation masks
- Requires 4× V100 GPUs for reasonable training speed; single-GPU possible at batch size 2
- Academic-only license (CC BY-NC-SA 4.0)
Caveats
- README says “Other Datasets: Will be released soon” — no timeline given
- UI setup is finicky: needs precomputed style codes, specific directory layouts, and test-set-only images unless you roll your own pipeline
- Code borrows heavily from SPADE; this is essentially a research fork with a new normalization block
Verdict
Grab this if you’re doing face-editing research or need a working baseline for mask-conditioned style transfer. Skip it if you want a general image synthesis tool — it’s tightly bound to CelebA-HQ faces and academic licensing.