← All Guides
comparisonkleinz-imageeditanglestraininglora

Stuck on Z-Image? What Klein 9B Does Differently

Side-by-side comparison of Z-Image Turbo and Klein 9B across camera angles, editing, complex scenes, and LoRA training — with full prompts and settings to reproduce everything.

Apr 22, 2026 15 min read

Z-Image Turbo is fast, aesthetic, and a great starting point. But if you’ve been using it for a while, you’ve probably hit the wall: camera angles feel limited, complex compositions fall apart, and you’re spending more time engineering prompts than creating images.

Klein 9B fixes most of this — and it’s nearly as fast. This guide puts them head-to-head across the scenarios where the difference matters most.

All images generated on an RTX 4090 with modl v0.2.13. Every command is included so you can reproduce them exactly.

Quick answer

ScenarioWinnerWhy
Camera angles & perspectiveKlein 9BQwen3-8B encoder understands spatial language far better than T5
SpeedTieZ-Image Turbo: 8 steps (~6s). Klein 9B: 4 steps (~8s)
Natural language editingKlein 9BNative edit mode — Z-Image has no editing capability
Aesthetic defaultsTieBoth produce strong aesthetics — Z-Image slightly warmer, Klein slightly sharper
Complex multi-element scenesKlein 9BBetter spatial reasoning, places subjects where you describe them
ControlNetZ-Image TurboDedicated ControlNet weights, more preprocessors
LoRA trainingBothBoth train well — Klein at 4 steps, Z-Image at 8
VRAMZ-Image Turbo14GB fp8 vs 16GB fp8
Iterative refinement (generate → edit → fix)Klein 9BGenerate + edit in same model, no pipeline switch

The models

Z-Image TurboKlein 9B
ArchitectureDiT 6BDiT 9B (Flux 2 distilled)
Text encoderT5-XXL + CLIP-LQwen3-8B + CLIP-L
Steps84
Guidance3.53.5
VRAM (fp8)14 GB16 GB
Time (1024x1024, 4090)~6 seconds~8 seconds
EditingNoYes (native)
LoRA trainingYesYes
InpaintingLanPaint (training-free)LanPaint (training-free)
Tip:

Why the text encoder matters here: Z-Image uses T5-XXL, a general-purpose text encoder. Klein 9B uses Qwen3-8B, a full language model that parses prompts more like natural language. This is why Klein handles camera angles, spatial descriptions, and complex scene layouts better — it actually understands the sentence structure.


Test 1: Camera angles

This is the pain point that started this guide. Z-Image Turbo struggles with specific camera angles — “from above,” “low angle,” “bird’s eye view” often get ignored or produce generic compositions.

Overhead / bird’s eye

$ modl generate "bird's eye view looking straight down at a woman \
sitting cross-legged on a colorful moroccan rug in a sunlit \
courtyard, mosaic tiles radiating outward, her shadow short \
and directly beneath her, overhead noon sun" \
--base z-image-turbo --seed 1001 --steps 8
Bird's eye view — Z-Image Turbo

Z-Image Turbo

Bird's eye view — Klein 9B

Klein 9B

Both models handled bird’s eye reasonably well. Z-Image produced a beautiful circular rug composition. Klein added a more complex courtyard with radiating mosaic tiles.

Low angle / worm’s eye

$ modl generate "extreme low angle shot looking up at a samurai \
standing on a wooden bridge, cherry blossom petals falling \
past the camera, bridge planks visible in foreground, vast \
cloudy sky behind, dramatic foreshortening" \
--base z-image-turbo --seed 2020 --steps 8
Low angle samurai — Z-Image Turbo

Z-Image Turbo — eye level despite asking for low angle

Low angle samurai — Klein 9B

Klein 9B — true low angle, bridge planks in foreground

This is the clearest difference. Z-Image gave an eye-level shot — it essentially ignored the “extreme low angle” instruction. Klein nailed it: looking up at the samurai, bridge planks visible in the foreground, cherry blossom petals falling past the camera, vast sky behind. The foreshortening and perspective are exactly what was asked for.

Dutch angle

$ modl generate "dutch angle tilted 30 degrees, noir detective \
in a rain-soaked alley, neon signs reflecting in puddles, \
trench coat collar turned up, cigarette smoke catching \
the light, strong diagonal composition" \
--base z-image-turbo --seed 3030 --steps 8
Dutch angle noir — Z-Image Turbo

Z-Image Turbo

Dutch angle noir — Klein 9B

Klein 9B

Both produced atmospheric noir scenes. Z-Image has a slight tilt with great street-level atmosphere. Klein captured more of the diagonal composition with stronger neon reflections in the puddles.

Over-the-shoulder

$ modl generate "over the shoulder shot from behind a chess player, \
their hand reaching for a knight, the opponent visible across \
the board slightly out of focus, warm lamplight from the side, \
shallow depth of field" \
--base z-image-turbo --seed 4040 --steps 8
Over-the-shoulder chess — Z-Image Turbo

Z-Image Turbo — knight prominently held

Over-the-shoulder chess — Klein 9B

Klein 9B — warm lamplight, depth of field

Both nailed this one. Z-Image has the player holding a knight piece prominently — excellent detail. Klein captured the warm lamplight and shallow depth of field beautifully. A tie on this angle.

Camera angle takeaway

Klein 9B consistently interprets camera angle instructions more accurately, especially for non-standard perspectives like low angle and bird’s eye. Z-Image defaults to eye-level or generic compositions when the angle description is unusual. For standard shots like over-the-shoulder, both perform equally well.


Test 2: Complex multi-element scenes

When you put multiple subjects with spatial relationships in one prompt, text encoders matter enormously. T5 treats it as a bag of concepts; Qwen3 parses the sentence structure.

Market scene

$ modl generate "a bustling tokyo fish market at 5am, an elderly \
vendor in rubber boots arranging tuna on ice in the foreground, \
two chefs in white coats examining fish in the midground, \
fluorescent lights and hanging price signs in the background, \
wet concrete floor reflecting everything" \
--base z-image-turbo --seed 5050 --steps 8
Fish market — Z-Image Turbo

Z-Image Turbo — side view, vendors in a row

Fish market — Klein 9B

Klein 9B — layered depth as described

Klein placed the elements exactly as described: elderly vendor arranging fish in the foreground, chefs in white coats in the midground, fluorescent lights and hanging price signs in the background, wet floor reflecting everything. Z-Image produced a beautiful market scene but flattened the spatial layering into a side-view composition.

Workshop interior

$ modl generate "a luthier's workshop, half-finished violin clamped \
to the workbench on the left, wood shavings on the floor, \
rows of completed instruments hanging on the back wall, \
afternoon light streaming through a single dusty window \
on the right, tools organized on a pegboard" \
--base z-image-turbo --seed 6060 --steps 8
Luthier workshop — Z-Image Turbo

Z-Image Turbo — beautiful light, violin prominent

Luthier workshop — Klein 9B

Klein 9B — spatial layout matches prompt

Both produced stunning workshop scenes. Klein placed the elements more faithfully to the prompt: violin clamped on the left workbench, completed instruments on the back wall, dusty window on the right, tools on a pegboard. Z-Image got the overall mood right but treated the spatial cues more loosely.


Test 3: Natural language editing

This is where Klein pulls ahead completely — it has native editing support. Z-Image has no edit mode at all.

Starting image

$ modl generate "a woman sitting at a cafe terrace in paris, \
croissant and coffee on the marble table, morning light, \
haussmann buildings in the background" \
--base flux2-klein-9b --seed 7070 --steps 4
Paris cafe — base image

Base image: Paris cafe, morning light

Four edits from one image

$ modl edit "change to evening" --image cafe.png --base flux2-klein-9b
$ modl edit "change to winter" --image cafe.png --base flux2-klein-9b
$ modl edit "add a french bulldog" --image cafe.png --base flux2-klein-9b
$ modl edit "transform to watercolor" --image cafe.png --base flux2-klein-9b
Paris cafe — evening edit

Evening — string lights, blue hour sky

Paris cafe — winter edit

Winter — snow, wool coat, bare trees

Paris cafe — with french bulldog

Added — french bulldog at her feet

Paris cafe — watercolor

Style — watercolor with brushstrokes

Same woman, same pose, same cafe in every edit. Klein changed the time of day, swapped the season (adding a coat, scarf, and snow), inserted a dog, and transformed the entire style — all without masks, inpainting, or switching models.

Z-Image Turbo has no editing capability. To achieve similar results with Z-Image, you’d need to use inpainting with manual masks, img2img with careful denoising, or switch to a different model entirely. Klein lets you iterate on a single image with natural language — no masks, no pipeline switches.


Test 4: The iterative workflow

This is the real power move — generate with Klein, then refine with Klein. Same model, no context switch.

$ modl generate "a cozy log cabin on a mountain lake shore, \
golden autumn birch and aspen trees, mirror-still water with \
perfect reflections, thin chimney smoke, a red canoe at a \
weathered wooden dock, golden hour sunlight" \
--base flux2-klein-9b --seed 9292 --steps 4
 
$ modl edit "add warm glowing light in the cabin windows, make \
the autumn foliage richer and more saturated" \
--image cabin.png --base flux2-klein-9b
 
$ modl edit "add soft golden mist rising from the lake surface, \
enhance the warmth of the sunset light" \
--image cabin-v2.png --base flux2-klein-9b
 
$ modl upscale cabin-v3.png --scale 4
Cabin — v1 base

v1 — base generation

Cabin — v2 vivid colors

v2 — vivid colors, glowing windows

Cabin — v3 refined reflection

v3 — golden mist, warm sunset

Three iterations, same model, same composition preserved throughout. The autumn colors became more vivid, the cabin windows glow with warmth, and the lake reflection improved. Each edit builds on the last without losing what came before.

Tip:

This entire workflow uses one model. With Z-Image Turbo, you’d need to generate with Z-Image, then switch to Klein or Qwen Image Edit for edits, then potentially switch again for inpainting. Klein keeps you in one model for the full loop.


Test 5: LoRA training comparison

Both models train well. This section will be updated with side-by-side LoRA results — same dataset trained on both models.

$ modl train my-subject --base z-image --steps 1500 --lora-type object
$ modl train my-subject --base flux2-klein-9b --steps 1500 --lora-type object

See the character LoRA guide for detailed training results across multiple models including Z-Image and Klein.


Test 6: Structural control

Z-Image has dedicated ControlNet weights for canny, depth, pose, softedge, and more. Klein doesn’t have ControlNet — but it can use preprocessor outputs (depth maps, edge maps) as input images to achieve similar structural guidance.

Both approaches are covered in detail in their own guides:

  • ControlNet guide — Z-Image with canny, depth, pose, scribble. Full strength comparisons and preprocessor breakdown.
  • Structural editing guide — Klein 4B/9B using preprocessor outputs as edit inputs. Same structural control, no extra weights.

The short version: if you need precise structural control (exact silhouettes, architectural lines), Z-Image with ControlNet canny is stronger. If you want fast structural guidance without downloading extra weights, Klein’s edit mode with a depth or edge map gets you 80% of the way there in 4 steps.


Test 7: Aesthetic defaults

A common assumption is that Z-Image Turbo has stronger aesthetics out of the box. Let’s test that.

Wine glass — Z-Image Turbo

Wine glass — Z-Image Turbo

Wine glass — Klein 9B

Wine glass — Klein 9B

Leather boots — Z-Image Turbo

Boots — Z-Image Turbo

Leather boots — Klein 9B

Boots — Klein 9B

The aesthetic gap between these two models is smaller than many people assume. Both produced excellent product-style imagery. Z-Image tends toward slightly warmer tones and tighter compositions. Klein includes more environmental context and natural detail. Neither is clearly “better” — it depends on what you’re going for.


When to use which

Use caseRecommendation
Quick concept explorationZ-Image Turbo — fastest aesthetics, no prompt engineering needed
Specific camera anglesKlein 9B — actually understands 'bird's eye', 'dutch angle', etc.
Generate → edit → refine loopKlein 9B — one model for the full workflow
ControlNet workflowsZ-Image Turbo — dedicated ControlNet weights
Complex scene layoutsKlein 9B — Qwen3 encoder parses spatial relationships
Product photographyEither — both have strong aesthetic defaults
Character LoRAsEither — both train well, Klein is slightly faster at inference
Low VRAM (< 16GB)Z-Image Turbo (14GB fp8) or Klein 4B (10GB fp8)

You don’t have to choose one. modl’s persistent worker keeps both models cached in VRAM if you have the space. Generate with Z-Image for the aesthetic, switch to Klein for editing — the second model loads in seconds if it’s already cached.


Get started

$ modl pull flux2-klein-9b # 16 GB VRAM
$ modl pull z-image-turbo # 14 GB VRAM
 
# Generate the same prompt with both — see the difference yourself
$ modl generate "your prompt here" --base z-image-turbo --seed 42
$ modl generate "your prompt here" --base flux2-klein-9b --seed 42