Upscaling AI Video Without Plastic Skin
The upscaler with the best sharpness score was the one a producer rejected. Here is what we tested, what each one did to faces and products, and how to check an upscale properly.

Key takeaways
- A sharpness score picked the wrong winner: the sharpest upscale scored about three times the reference, and a producer called it too sharp.
- The 'quality' mode over-processed organic footage — skin read as plastic — but won on hard-edge product graphics. A/B both.
- Correct dimensions prove nothing: a 2160×3840 output with red colour smears passed every dimension check.
- Verify an upscale by extracting the same frame before and after and comparing at 1:1.
- No upscaler fixes what the generator invented. Morphing hands and identity drift are generation problems.
The short answer
Match the upscaler to the texture. Organic footage — faces, skin, hair — gets a light-touch upscale. Hard-edge graphics — wordmarks, logos, line work — get the heavier quality mode. Then check the result with your eyes on the same frame, never with a score.
Every verdict below rests on a small number of clips, often one per case. Treat the rankings as directional, and run your own A/B on your own footage.
Why sharpness scores pick the wrong winner
We scored four upscales of the same clip with a Laplacian sharpness metric. FlashVSR v1.1 scored highest — 54 and 102 — against 31 and 32 for ArtPlayer's paid tier. A professional producer reviewing the same clips called FlashVSR "too sharp" and the paid tier "very clear".
Looking closer explained why. FlashVSR v1.1 erased real skin micro-texture — under-eye lines and cheek texture present in the source — and then hardened lash and brow edges. That is fake sharpness on top of lost detail, and a sharpness metric rewards it.
Our rule since then: a score around three times the reference means over-sharpening, not a better result.
What each upscaler did
| Upscaler | Faces / skin | Products / text | Speed |
|---|---|---|---|
| ArtPlayer Fast (browser, free) | Most natural on organic footage | Fine | ~2 min for a 5 s clip |
| ArtPlayer Quality | Skin reads processed | Best on wordmarks and logo line-work | Slower |
| FlashVSR v1.1 | Over-sharpened, erased skin texture, shifted skin pink | — | ~40 s per second of footage |
| FlashVSR+ Turbo | Kept texture and colour on a wide shot | Turned a debossed letter into a blob | ~1 min per second of footage |
| SeedVR2 | Resolved lash strands and iris fibres; invented freckles on another face | — | ~8× slower than ArtPlayer Fast |
| Real-ESRGAN family (open source) | Invented colour fringes and speckles | — | Fast |
The surprise was the "quality" mode. On a real-car clip and on a persona close-up, the faster mode looked most natural and Quality went plastic. On a studio product shot with a wordmark, the order flipped: Quality held letterforms cleanly with no plastic look.
FlashVSR+ Turbo is the opposite case. It does not over-sharpen the way v1.1 does — on a 12-second wide shot, hair strands resolved and skin kept its texture — but on a leather bag it turned the accent of a debossed word into a round blob. Any product with a wordmark, deboss or label goes to the quality mode instead.
Colour problems that dimension checks miss
Two open-source upscale models hallucinated colour. One invented red and orange fringes on high-contrast moving edges — the share of fire-coloured pixels rose about twenty-fold. The other put green and cyan speckle in the eye catchlights.
Both outputs had exactly the right dimensions and frame counts. A 2160×3840, 151-frame file with red smears passed every automated check.
FlashVSR v1.1 also shifted skin slightly pink. Per-channel correction brought it back, but the gains were clip-specific and had to be measured again for every clip.
Blending the upscale with the source
For faces we blend the upscaled output with a plain Lanczos upscale of the source. On one face the sharpness at different blend strengths was 105 at 60%, 136 at 70%, 167 at 80% and 251 at 100%. At 80% hair and earring edges started to harden, so 70% became our default for faces.
Blending does not restore texture that the upscaler already erased, and neither did adding light film grain. It only tones down the hardening.
Frame interpolation and hard cuts
Interpolation is fast — 16 to 48 fps on a 161-frame clip took 7.2 seconds — but interpolating across a hard cut creates a ghost frame that blends two shots.
Find cuts first with a scene-change filter, then look at the flagged frames: in our case a score of 0.34 was a real cut, while 0.19 was a motion-blurred whip pan that should stay in one segment. Split at each cut, interpolate each segment separately, then join them and put the original audio back.
Going from 24 to 30 fps is not a whole-number factor. Interpolate by five to 120 fps and decimate to 30.
How to check an upscale
Our check is deliberately boring:
- Extract the same frame from the source and the upscale.
- Compare them at 1:1, with no resampling, on the face and on any text.
- Look for erased texture, hardened edges, invented colour and changed letterforms.
- Check brightness and colour on a still from the encoded file, not from an intermediate image.
And remember the limit of finishing: an upscaler cannot remove a highlight baked into the source, fix a morphing hand, or bring back a drifting face. Those are fixed at generation, not in post.



