← All Guides
editrestorationcolorizekleinqwen-image-editupscale

Restore & Revive: Bringing Damaged Photos Back to Life

Colorize, denoise, and repair damaged historical photos with one command. Klein 9B vs Qwen Image Edit 2511 across five public-domain photos, three prompts, and a 4K finish — full commands to reproduce everything.

Apr 29, 2026 9 min read

Two models, same photo, same seed — and the prompt change matters more than the model change.

This guide tests how far a single edit command actually goes. Five public-domain photos covering the damage spectrum, three named prompts, two models — Klein 9B and Qwen Image Edit 2511. Every command included.

modl edit "Colorize and restore this image." --image old.jpg --base flux2-klein-9b

The two models

Klein 9BQwen Edit 2511
ArchitectureFlux 2 distilled, 9BQwen Image Edit, 20B
Steps440
VRAM16 GB (fp8)14 GB (GGUF Q5)
Time per edit (warm)~30 s~3–5 min

Klein and Qwen can’t share VRAM simultaneously — run them sequentially or use modl run batch.yaml (the worker serializes automatically).


The corpus

Five public-domain photos from Wikimedia Commons (Library of Congress and federal collections), chosen to cover the damage spectrum: pristine → pure colorize → speckling → heavy emulsion loss → wide aerial scene (hard mode).

Abraham Lincoln, Alexander Gardner 1863

Lincoln (1863) — Gardner. Pristine. Famous-face test.

Migrant Mother, Dorothea Lange 1936

Migrant Mother (1936) — Lange / FSA. Pure colorize.

Dandridge McRae 1860 daguerreotype

McRae (1860) — daguerreotype. Speckling, edge wear.

Anna Julia Cooper c. 1902

Cooper (~1902) — emulsion failure on the left.

San Francisco 1906 panorama by Lawrence

SF 1906 — Lawrence kite photo. Wide aerial scene.

Quick answer

GoalPick
Faithful colorize + denoiseEither model + Faithful prompt
Heavy damage / missing regionsKlein 9B (invents content); Qwen (neutral fill)
Family portrait, fidelity mattersQwen (truer proportions, period feel)
SpeedKlein 9B (~30 s vs 3–5 min)
Portraits with freckles / fine skin detailQwen + explicit feature prompt (see cookbook)
4K outputEither + `modl process upscale --scale 4`
Batch of many photos`modl run batch.yaml` (see below)
Tip:

No masks. No scratch detection. No separate face-restore step. Just modl edit "..." and, if you want 4K, modl process upscale. That’s the whole pipeline.


Test 1: The Faithful prompt

Colorize and restore this image. — the default. Same seed (42), single generation per cell.

$ modl edit "Colorize and restore this image." \
--image lincoln-1863.jpg --base flux2-klein-9b --seed 42
$ modl edit "Colorize and restore this image." \
--image lincoln-1863.jpg --base qwen-image-edit-2511 --seed 42

Lincoln — face fidelity

Lincoln colorized by Klein 9B — slightly idealized skin, brown bow tie, neutral grey backdrop

Klein 9B — slightly idealized skin, brown bow tie

Lincoln colorized by Qwen Edit 2511 — visible wrinkles, deep cheek shadows, maroon bow tie

Qwen Edit 2511 — deeper wrinkles, maroon bow tie

Both faithful. Different palettes — both clearly Lincoln. Klein is vivid and modernized; Qwen is muted and period-faithful. Different aesthetic targets, both valid — pick by what you want the result to look like.

Migrant Mother — pure colorize

Migrant Mother colorized by Klein 9B — vivid pink gingham, blue work shirt with stains, dust-bowl tones

Klein 9B — vivid period color, pink gingham

Migrant Mother colorized by Qwen Edit 2511 — muted brown cardigan, sun-bleached weathered tones

Qwen Edit 2511 — muted, sun-bleached

Klein looks like Lange shot it on Kodachrome. Qwen looks like a 1950s reprint. Both keep the expression and composition.

McRae — daguerreotype speckling

McRae restored by Klein 9B — clean modern portrait, daguerreotype frame removed, navy uniform with gold buttons

Klein 9B — frame removed, modernized portrait

McRae restored by Qwen Edit 2511 — daguerreotype case edge preserved, parchment background, navy uniform

Qwen Edit 2511 — case edge preserved

Klein removes the daguerreotype frame and modernizes. Qwen preserves the case edge and period feel. For phone captures of physical prints, Qwen handles borders and glare better.

Cooper — heavy emulsion damage

Cooper restored by Klein 9B — damaged region replaced with ornate Edwardian wreath

Klein 9B — damage replaced with period wreath (content invented)

Cooper restored by Qwen Edit 2511 — damaged region smoothed to clean dark background

Qwen Edit 2511 — damage smoothed to dark background

The damaged region — about a quarter of the frame — is gone in both. One command, no mask. Klein fills with confident period-plausible content; Qwen smooths damage into neutral background. For surgical replacement of a small damaged region where everything else must remain pixel-identical, see Inpainting with LanPaint.

SF 1906 — wide aerial scene

SF 1906 reimagined by Klein 9B — earthquake ruins replaced with a thriving green port city

Klein 9B — reimagines earthquake ruins as a thriving city (wrong)

SF 1906 reimagined by Qwen Edit 2511 — modern skyscrapers and container ships added to the 1906 panorama

Qwen Edit 2511 — adds modern skyscrapers (wrong)

Wide aerial scenes break edit-based restoration. Edit models are trained on portraits and product shots; a panorama with thousands of small features triggers reference-style invention rather than colorize. Both models reimagined the scene rather than restoring it. For aerials and landscapes today, tile manually or skip.

What edit models actually do: denoising diffusion conditioned on the source image and the text instruction — not pixel-level inpainting. The model regenerates the whole image guided by the original. That’s why the prompt has so much leverage over the result, and why wide scenes with thousands of small features go wrong.


Test 2: The Modern prompt trap

Same Lincoln, same seed, only the prompt changed — the Modern prompt:

Turn this image into a modern color photograph.

Lincoln Modern prompt by Klein 9B — fashion-magazine retouching, fuller cheeks, younger appearance

Klein 9B — fashion-magazine face, fuller cheeks

Lincoln Modern prompt by Qwen Edit 2511 — smoothed wrinkles, evened asymmetry, generic modern portrait

Qwen Edit 2511 — smoothed face, evened asymmetry

Both redrew the face. The phrase does two things at once:

  • Asks for color (fine).
  • Asks for modern photographic conventions — sharp skin, warm lighting, beauty retouching — which override the period source.

Turn this into a modern color photograph is great for impact, terrible for fidelity. For recognizable historical figures, use the Faithful prompt instead — and if you need a transformative result, see Test 3.


Test 3: The Modern + Preservation prompt

The key question: if a transformative prompt drifts the face, can preservation language pull it back? Same Modern prompt with a constraint clause appended — the Modern + Preservation prompt:

Turn this image into a modern color photograph. Maintain identical facial expression, maintain facial integrity. Preserve original lighting and composition.

Lincoln Modern + Preservation by Klein 9B — gauntness restored, wrinkles back, cheek shadows preserved

Klein 9B — gauntness restored, wrinkles back

Lincoln Modern + Preservation by Qwen Edit 2511 — recognizable Lincoln, deep-set eyes preserved

Qwen Edit 2511 — recognizable Lincoln returned

The rescue works. Compared to Test 2, both faces are dramatically closer to the original — Klein recovers the cheek hollows and brow asymmetry; Qwen recovers the deep-set eyes and weathered skin. The “modern photograph” instruction is partially honored (cleaner backgrounds, more contemporary lighting on Klein), but the face is anchored.

The preservation clause: your insurance policy against face drift.

When you need a transformative prompt — relighting, stylization, scene change — append this clause and the face survives. You don’t have to choose between transformation and fidelity.

Maintain identical facial expression, maintain facial integrity.
Preserve original lighting and composition.

Both models erase fine skin detail by default. Freckles, scars, birthmarks — if you don’t name the feature explicitly, it won’t survive. This is true even with the Faithful prompt. Use: preserve freckles on cheeks and nose, natural film grain skin texture, no smoothing, no beauty retouching. Then run with --count 4 and pick the variant that kept it best.


4K finish

Edit at source resolution, then upscale. Most of the wall-clock budget is in the edit — upscale is consistently a few seconds.

$ modl edit "Colorize and restore this image." \
--image migrant-mother.jpg --base flux2-klein-9b --seed 42
✓ ~/.modl/outputs/2026-04-29/20260429-101247.png
 
$ modl process upscale ~/.modl/outputs/2026-04-29/20260429-101247.png --scale 4
✓ Upscaled 976×1280 → 3904×5120 (RealESRGAN x4plus)
Restored (face crop)
Migrant Mother face at edit output resolution — soft skin texture
+ 4× upscale (face crop)
Migrant Mother face after 4× RealESRGAN — sharp eyelashes, hair strands, skin texture

Edit colorizes and denoises. Upscale reconstructs detail at 4×. Two commands, print-ready.


Failure modes

SymptomCauseFix
Famous face driftsModern promptUse Faithful prompt, or stack preservation clause (Test 3)
Freckles / fine skin detail erasedModels smooth skin by defaultName the feature explicitly: 'preserve freckles on cheeks and nose, natural film grain skin texture, no smoothing'
Portrait looks wider / plasticOver-smoothing on first runRe-run with `--count 4`, add 'keep exact face shape and proportions'
Hands have extra fingersEdit models still fail on handsCrop tighter or retouch
Daguerreotype frame removedKlein modernizesUse Qwen for period feel
Wrong period colorsColor hallucinationAnchor: 'Union Army blue uniform'
Result varies seed-to-seedNormal — pick the bestRun with `--count 4` when fidelity matters
Two jobs OOM when run togetherKlein ~16 GB, Qwen ~14 GB — can't share VRAMRun sequentially or use `modl run batch.yaml`

When accuracy matters, specify era and medium: Colorize this 1860s daguerreotype with period-accurate tones. Stack with the preservation clause from Test 3.


Prompt cookbook

Faithful — the default. Try this first:

Colorize and restore this image.

Heavy damage:

Restore this damaged photograph. Repair surface damage. Colorize naturally.

Modern + Preservation — transformation with face anchored:

Turn this image into a modern color photograph.
Maintain identical facial expression, maintain facial integrity.
Preserve original lighting and composition.

Sepia, no color:

Restore this image. Remove damage. Keep original sepia tones.

Light denoise only:

Reduce noise, add natural quality. Preserve all detail.

Period-anchored (fill in {era} and {medium}):

Colorize this {era} {medium} with period-accurate tones.

Portrait with distinctive skin features (freckles, scars, birthmarks):

Colorize naturally. Preserve [specific feature, e.g., freckles on cheeks and nose].
Keep exact face shape and proportions. Natural film grain skin texture,
no smoothing, no beauty retouching.
Tip:

Test 1 used single seeds for fairness. In real use, run --count 4 on the shots that matter and pick the best — even faithful prompts vary between seeds. This isn’t cherry-picking; it’s normal practice for production output.


Batch workflow: restoring a whole folder

For more than a handful of photos, use modl run with a YAML spec instead of running modl edit once per file. The worker serializes the jobs automatically — no VRAM contention, no manual sequencing.

# restore-family-album.yaml
name: restore-family-album
model: qwen-image-edit-2511

defaults:
  seed: 42

steps:
  - id: photo-01
    edit: "/path/to/photo-01.png"
    prompt: "Restore this damaged photograph. Repair surface damage. Colorize naturally. Maintain identical facial expression, maintain facial integrity. Preserve original lighting and composition."

  - id: photo-02
    edit: "/path/to/photo-02.png"
    prompt: "Restore this damaged photograph. Repair surface damage. Colorize naturally. Maintain identical facial expression, maintain facial integrity. Preserve original lighting and composition."
modl run restore-family-album.yaml --dry-run   # validate first
modl run restore-family-album.yaml             # run all

All outputs land in ~/.modl/outputs/<date>/ alongside single-edit results. To compare Klein and Qwen on the same batch, run two separate YAML files back-to-back, not simultaneously — they can’t share VRAM.


Get started

$ modl pull flux2-klein-9b # ~16 GB VRAM
$ modl pull qwen-image-edit-2511 # ~14 GB VRAM (GGUF Q5)
$ modl pull realesrgan-x4plus # ~64 MB
 
$ modl edit "Colorize and restore this image." \
--image grandfather.jpg --base flux2-klein-9b --count 4
 
$ modl process upscale ~/.modl/outputs/<date>/<best>.png --scale 4

One edit, one upscale. Pick the best from --count 4, send it to 4K. The prompt you write matters more than the model you pick — and the preservation clause is your insurance when the default drifts.