PID adds sparkles and age lines to portraits (Krea2 Turbo w/ Qwen Image PID checkpoint)

#12
by plz12345 - opened

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:

  1. 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.
  2. 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, the
qwenimage 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.

Images

Face side-by-side comparison
image

Eye close-up side-by-side comparison
image

VAE
image

PID with degrade 0.0
image

PID with degrade 0.2
image

plz12345 changed discussion title from PID adds sparkles and age lines to portratis (Krea2 Turbo w/ Qwen Image PID checkpoint) to PID adds sparkles and age lines to portraits (Krea2 Turbo w/ Qwen Image PID checkpoint)

Sign up or log in to comment