Upscale and Finish a Generated Image
Take a good generation to delivery resolution without inventing detail you did not ask for, and run the finishing passes that separate a demo image from a usable one.
Learning objectives
- Separate resampling from generative upscaling and know when each applies
- Control how much new detail an upscale is allowed to invent
- Run finishing passes in an order that does not undo earlier work
- Judge when an image is finished rather than merely larger
ToolDix original visual
Frame
Name the outcome and constraints.
Build
Try one bounded workflow.
Review
Keep evidence, revise, and share.
A generation at the model's native resolution is rarely the deliverable. Print needs more pixels, hero images need more pixels, and the crop you actually want is usually a portion of the frame. The step between "good generation" and "usable asset" is upscaling, and it is where a surprising number of good images get quietly ruined.
The ruin is specific: generative upscalers invent detail. That is their function. Uncontrolled, they invent detail that contradicts the picture — hair that grows extra strands, fabric that acquires a weave the garment never had, faces that become subtly different people.
Two different operations wearing one name
Resampling — bicubic, Lanczos — computes new pixels from existing ones. It adds no information. The image gets larger and slightly softer, and nothing is invented. For a modest increase, or when fidelity to the original matters more than crispness, this is the right and boring answer.
Model-based upscaling — the ESRGAN family and its descendants — reconstructs plausible detail using a network trained on image pairs. It is fast, deterministic, and mostly faithful, and it has characteristic tells: over-sharpened edges and a slightly waxy texture on skin.
Diffusion refinement — running a low-strength image-to-image pass at the larger size — is the most powerful and the most dangerous, because it is genuinely generating. Detail appears that was never in the original because the model believes it should be there.
Tiled refinement processes the image in overlapping tiles so a large output fits in memory. It is how you reach very large sizes, and it introduces its own failure: each tile is denoised with the same prompt, so a prompt mentioning a face can produce a face in several tiles. Keep tile prompts generic, or use a tiling implementation that carries global context.
The working default for most images is a two-stage approach: model-based upscale to get the pixels, then a very low-strength diffusion pass to restore the texture that the upscaler flattened.
Detail is a budget, not a maximum
- Eyes and face, masked
- The subject's focal plane
- Material where texture is the point
- Anything at the centre of attention
- Backgrounds -- softness is the depth cue
- Out-of-focus foreground
- Text and logos, always excluded
- Anything a real lens would blur
The single most useful idea here is that added detail should be spent where the eye goes and withheld everywhere else. A photograph has a focal plane. Detail everywhere reads as artificial precisely because real optics cannot do it.
Faces and eyes earn the most refinement, and also break the most visibly, so refine them with a dedicated pass at low strength rather than as part of a global one. Backgrounds should stay soft; refining them wastes the budget and flattens the depth cue that made the composition work. Text and logos should be excluded from refinement entirely — anything generative will scramble them, and they should be composited afterwards anyway.
Concretely, this means the refinement strength that looks right on a face is usually too high for the whole image. Masked passes are more work and produce noticeably better results.
The finishing order
Passes interact, and running them in the wrong order means doing work twice.
Fix content first — inpaint the broken hand, remove the artifact — while the image is small and cheap to iterate on. Never carry a known defect into an upscale; you will only be repairing it at four times the size.
Then upscale to the delivery resolution, or slightly above it if you plan to crop.
Then refine locally, masked, at low strength, on the areas that earn it.
Then grade — colour, contrast, and any grain. Grain last, because upscaling destroys it and refinement invents its own.
Then composite any text, logos, or real product photography.
Then export to the actual delivery specification: the colour profile the destination expects, the format and compression it needs, and dimensions that match rather than merely exceed the slot.
Practice
Take one image you already like and produce a delivery-ready version, timing each stage. Do the whole thing twice: once with a single global refinement pass at a strength that makes the face look good, and once with a masked face pass plus an untouched background.
Compare at 100 percent. The difference is usually obvious and is the argument for masked passes. Keep both files and the settings, because these numbers transfer to every subsequent image from the same model.
Common mistakes
Upscaling a flawed image. Every defect gets larger and more expensive to fix. Repair first.
One global refinement pass at a strength tuned for faces. The face looks great and the sweater grows a texture it never had.
Sharpening after compression. Sharpen before export, and export once. Repeated save cycles compound artifacts.
Delivering more pixels than the slot needs. A 6000-pixel hero image on a web page is a performance problem, not a quality advantage. Match the specification.
Sources and license context
These references informed the lesson. ToolDix adds its own explanation, workflow, and practice rather than reproducing source material. Every link below leaves ToolDix and opens the publisher's own site in a new tab.
- Hugging Face Diffusion Models Course (opens github.com in a new tab)External · github.com (Apache-2.0)
- Diffusers documentation (opens huggingface.co in a new tab)External · huggingface.co (Apache-2.0 project license and documentation terms apply)
Keep going
Read these next on ToolDix.
Original lessons that build on what you just read.