DEV Community

AI-KSK
AI-KSK

Posted on

Z-Image Turbo: enhanced text encoder + Flow-DPO + Ultra Real, tested at a fixed seed

Three additions to Z-Image Turbo, tested properly: same prompt, same seed, one variable at a time. The results are unusually clear-cut for this genre. The fine-tuned text encoder makes objects that were missing appear. Flow-DPO improves colour and light. Ultra Real, at full weight, degrades the image — and the author says so instead of hiding it.

Evidence note: both comparison graphs ship as JSON and are parsed below — the 9-step CFG-1 sampler, the model and encoder filenames, the LoRA names and the weights used across variants. The "+60% training data" figure and the "does not mechanically expand wording" characterisation are the author's restatement of the encoder's own documentation; the visual verdicts are his reported results in 字幕.txt.

Where this fits

You are already on Z-Image Turbo and want to know which of the current add-ons are free gains and which ones quietly cost you detail. This episode answers that with a four-way A/B, and then tests the winners inside a ControlNet segmented render.

The three add-ons

  1. Enhanced text encoder (Z-Image-Engineer-V4). Built by retraining a text encoder on the Qwen3 architecture. Its stated design goal is not mechanical keyword expansion but understanding visual narrative — camera, depth of field, light direction. The author cites a 60% increase in training data, and is careful to attribute that to the author of the encoder.
  2. Flow-DPO LoRA. Targets realistic lighting, cinematic shadow and overall image quality, specifically the flat-grey, plastic look that plagues realistic output. It is described as barely changing the subject and mostly correcting light and texture.
  3. Ultra Real LoRA. An older release (last year) aimed at extreme photorealism. In this graph it appears as lenovo__z.safetensors.

Parameter basis (from the JSON)

Comparison test graph (47 nodes): KSampler at 9 steps, CFG 1, sampler euler, scheduler simple, denoise 1 on four branches.

  • UNET z_image_turbo_bf16.safetensors
  • CLIP qwen_3_4b.safetensors (type qwen_image) and, on the enhanced branch, GGUF Qwen3-4b-Z-Image-Engineer-V4-F16.gguf
  • VAE ae.safetensors
  • LoRA zit_fdpo_v1.safetensors at 1.0, 0.8 and 0.72 across variants
  • LoRA lenovo__z.safetensors at 1.0 and 0.72

Full comparison graph (180 nodes): the same stack plus a second qwen_3_4b.safetensors loaded with type lumina2, ImageScaleBy lanczos at 1.5 on four branches, and CFGGuider at 1 throughout. This is the graph that sweeps text encoder × Flow-DPO × Ultra Real together.

The four-way result

Same prompt, same seed, four outputs:

  1. Baseline — no add-ons.
  2. Enhanced text encoder only.
  3. Flow-DPO only — the author calls this the most perfect of the four, with noticeably vivid colour.
  4. Ultra Real added.

The text-encoder result is the most concrete finding. The prompt explicitly asked for a tea set, velvet tablecloth and a cake tower. Without the enhanced encoder, the table has no teacups at all — there is no tea set anywhere in the image. With the V4 encoder, the table objects become specific and correct. That is a prompt-adherence failure being fixed, not a vibe shift.

If the result is too saturated, pull the LoRA weight down slightly.

Where Ultra Real goes wrong

  • At weight 1.0 it visibly degrades the image. The author's explanation is honest and worth quoting in substance: the training set is not made only of images that match human aesthetic preference, so "realistic" includes unattractive reality.
  • It also reduces detail at weight 1.0.
  • He concedes the paradox: degraded images often read as more real, because reality is not as flawless as Z-Image Turbo's default output.

His recommendation

Insert the enhanced text encoder + Flow-DPO in daily use and treat them as a pure gain. Drop the weight to about 0.8 or 0.7 and it stays a gain. Ultra Real is optional and needs lowering.

Inside ControlNet segmented rendering

The second half of the episode puts the winners into the segmented high/low-noise ControlNet flow:

  • Swapping in the enhanced text encoder completely broke pose control — the encoder re-renders the prompt and drifts away from the skeleton image.
  • The fix is not to remove the encoder but to lean on the ControlNet: 2602 Turbo CN in the high-noise segment locks the shape.
  • The gain LoRAs only affect the low-noise segment. At weight 1.0 that is fine, because the low-noise segment only runs 5 steps — the "power" is much smaller than the 9-step text-to-image test. In his framing: the high-noise segment locks the shape, the low-noise segment adds material.

That is a genuinely useful division of labour, and it explains why the same LoRA weight behaves differently in the two graphs.

Limits

  • No standalone benchmark: this is one prompt, one seed, four images. The author controls variables but the sample is small.
  • The 60% data figure is quoted from the encoder's author, not measured here.
  • Ultra Real at weight 1.0 degrades quality; lower it.
  • The enhanced encoder breaks pose control in segmented CN rendering unless the high-noise CN stage is doing the locking.
  • Low-noise segment behaviour depends on it being only 5 steps; change the step count and the weight needs re-testing.
  • Both graphs are single-image text-to-image comparisons; no video path is tested.

Episode resources

Top comments (0)