PID adds sparkles and age lines to portraits (Krea2 Turbo w/ Qwen Image PID checkpoint)
PiD invents bright specular specks and ages skin on portraits β qwenimage 4-step checkpoint
Checkpoint: checkpoints/PiD_v1pt5_res2kto4k_sr4x_official_qwenimage_distill_4step/model_ema_bf16.pth
Summary
Decoding a portrait latent with PiD instead of the VAE introduces two artefacts that are not
present in the VAE decode of the same latent:
- Hard bright specks on skin β small, high-contrast, sometimes prismatic. They cluster on
the upper eyelid, the brow ridge and the inner corner of the eye, and read as glitter or
sweat beads rather than as skin. - Apparent ageing β deep naso-labial folds, under-eye hollows and crease lines that the
VAE decode does not contain. A prompt asking for a 25-year-old subject decodes as someone
roughly 15 years older.
Both are generated, not amplified: the VAE decode of the identical latent at the identical
seed is clean. Measured on skin, PiD raises the small-bright-blob rate by 43β61Γ over that
baseline.
The decoder is doing genuinely good work elsewhere in the same image β individual eyebrow
hairs, eyelashes and iris structure are resolved convincingly. The problem is specific to skin.
Measurements
Krea 2 Turbo, q8, 512Γ512 generated β 2048Γ2048 PiD output, fixed seed 116539113, 8 steps.
"hi-freq" is Laplacian variance of the PiD output relative to a Lanczos-4Γ upscale of the VAE
decode of the same latent; ΞRGB is the per-channel mean difference against that same baseline.
| hi-freq (face) | hi-freq (frame) | ΞR | ΞG | ΞB | distance from VAE | |
|---|---|---|---|---|---|---|
PiD, degrade_sigma 0.00 |
68.3Γ | 44.5Γ | β0.55 | +0.19 | β0.10 | 2.45 |
PiD, degrade_sigma 0.20 |
138.0Γ | 68.2Γ | β2.01 | β0.10 | β1.11 | 7.02 |
Speck rate on skin (white top-hat residual, per million skin pixels, all compared at 2048Γ2048):
| speck rate | |
|---|---|
| VAE decode + Lanczos 4Γ | 128 |
| PiD, flat lighting, 10 steps | 5,550 |
| PiD, original prompt, 8 steps | 6,873 |
| PiD, original prompt, 10 steps | 7,850 |
What does not fix it
degrade_sigma. Raising it to 0.20 roughly doubles invented facial detail
(68Γ β 138Γ), darkens the image monotonically, and makes the specks brighter and
harder-edged. It also pushes the result ~3Γ further from the VAE decode. An independent
sweep by another contributor found the same direction and magnitude on a different subject
(54Γ β 99Γ at the same sigma values).- Sampler step count. 10 steps measured slightly worse than 8 (7,850 vs 6,873), so this
is not the base sampler under-converging. - Lighting. Prompting for flat, diffuse, matte, no-catchlight lighting reduces the speck
rate by ~29% (7,850 β 5,550) but leaves it at 43Γ the VAE baseline. Specular highlights in
the source appear to contribute but are not the driver. Caveat: changing the prompt shifts
the composition, so this comparison is not measuring identical anatomy and the 29% is soft.
Is it the checkpoint or the base model?
Across the three released v1pt5_res2kto4k checkpoints, on one fixed prompt and seed, theqwenimage checkpoint is a clear outlier:
| checkpoint | base model tested | hi-freq (portrait) | hi-freq (non-portrait) |
|---|---|---|---|
| qwenimage | Krea 2 Turbo | 129Γ | 62Γ |
| flux | Z-Image Turbo | 31Γ | 38Γ |
| flux2 | Flux2 Klein 9B | 16Γ | 24Γ |
| flux2 | ERNIE-Image Turbo | 22Γ | 28Γ |
| flux2 | Ideogram 4 | 16Γ | 25Γ |
This does not isolate the checkpoint from the base model. Krea 2 is the only model tested
that routes to the qwenimage checkpoint, so "the qwenimage checkpoint over-textures skin" and
"Krea 2's latents provoke PiD" are not separated by this data. The discriminating test is
Qwen-Image itself β same checkpoint, different generator β which has not been run here.
Worth noting the non-portrait column: every checkpoint drops substantially on a non-skin
subject (a puffin on a cliff), and the qwenimage result there is clean and artefact-free.
Whatever this is, it is specific to skin rather than to the checkpoint's overall behaviour.
Images
| file | what it shows |
|---|---|
01-degrade-sigma-sweep-face.jpg |
VAE + Lanczos 4Γ Β· PiD Ο=0.00 Β· PiD Ο=0.20, same latent |
02-sparkle-zoom-3x.jpg |
3Γ zoom on eye/brow β specks absent in VAE, present at Ο=0.00, brighter at Ο=0.20 |
03-lighting-and-steps.jpg |
flat-light VAE baseline vs PiD at 10 steps, original and flat-light prompts |
04-second-subject-krea2.jpg |
second subject, different prompt/seed β same artefact class (white sparkle in hair, amber granules on temple and cheekbone) |
raw-01β¦03 |
the unmodified 512 VAE and both 2048 PiD renders, for independent measurement |
Reproduction
prompt a 25yo Asian women with brown eyes, sitting in a cafe with a cup of cappuccino.
she wears a cobalt blue tank top, and the cappuccino has a flower design in the foam.
seed 116539113
size 512x512 -> 2048x2048
steps 8
model Krea 2 Turbo, 8-bit
Decode the same latent twice β once through the VAE, once through PiD β and compare the eye
and brow region at 1:1.
Environment / caveat
These renders come from an MLX port of PiD for Apple Silicon
(filipstrand/mflux#490), not NVIDIA's
reference PyTorch implementation, so a port-side defect cannot be ruled out from this evidence
alone.
Two things argue against that being the whole story: the port reproduces the reference
behavior cleanly on the other two checkpoints and on non-skin subjects, and the same
over-texturing of skin has been reported by ComfyUI users β degrade_sigma β 0.2 is the
commonly suggested remedy there, which the measurements above show makes it worse rather than
better.




