Texture-Fix-VAE-for-Qwen-Image-1-and-Krea-2
Texture-Fix-VAE-for-Qwen-Image-1-and-Krea-2 is the Qwen-Image VAE, but finetuned to produce cleaner textures with minimal checkerboarding or blur.
This results in sharper, cleaner rendering of fur and skin (comparison courtesy Green-Sky):
...as well as improvements in foliage, stone, etc.:
Comparison SettingsThe cleaner, sharper decoding is most noticeable in detailed, photo-style images with stochastic textures. The latents for the comparison image below were generated by Krea 2 (Turbo, 1024², 8 steps, guidance 0, seed 0) from the prompt:
Landscape photograph of a subalpine wildflower meadow in the Pacific Northwest in midsummer: a clear mountain stream winding over mossy boulders through purple lupine and red paintbrush, dense old-growth Douglas fir and western red cedar forest behind, a snow-capped volcano in the distance, golden late-afternoon light, highly detailed
Zoomed crops are 128² regions upscaled 4x (nearest-neighbor).
Compatibility
Texture-Fix-VAE-for-Qwen-Image-1-and-Krea-2 works with any image model that uses the Qwen Image (1) VAE, notably:
For Qwen-Image 2.1, see Texture-Fix-VAE-for-Qwen-Image-2.1.
Usage
ComfyUI
Download texture_fix_vae_for_qwen_image_1_and_krea_2_bf16.safetensors into ComfyUI/models/vae/.
Then select it in the Load VAE node in place of qwen_image_vae.safetensors.
You can also use the alternate 2D checkpoint texture_fix_vae_for_qwen_image_1_and_krea_2_2d_bf16.safetensors via the anzhc-qwen2d-comfyui node. This checkpoint collapses the designed-for-video 3D conv layers into simpler/cheaper 2D conv layers that (for images) produce identical results.
🧨 Diffusers
import torch
from diffusers import AutoencoderKLQwenImage, QwenImagePipeline
# for Qwen-Image:
vae = AutoencoderKLQwenImage.from_pretrained("madebyollin/texture-fix-vae-for-qwen-image-1-and-krea-2", torch_dtype=torch.bfloat16)
pipe = QwenImagePipeline.from_pretrained("Qwen/Qwen-Image", vae=vae, torch_dtype=torch.bfloat16).to("cuda")
# or, for Krea 2:
# from diffusers import Krea2Pipeline
# pipe = Krea2Pipeline.from_pretrained("krea/Krea-2-Raw", vae=vae, torch_dtype=torch.bfloat16).to("cuda")
Mechanism
Texture-Fix-VAE-for-Qwen-Image-1-and-Krea-2 was created by briefly finetuning the highest-resolution decoder blocks with the adversarial recipe developed for TAESD.
The original Qwen Image VAE decoder was trained without adversarial loss (per the official tech report, section 2.3) which encourages the decoder to create blurry/artifacty outputs wherever fine details can't be precisely reconstructed from the latent.
Texture-Fix-VAE-for-Qwen-Image-1-and-Krea-2 was only finetuned in the highest-resolution VAE decoder blocks (and within those, only the current-frame weights used in image decoding, not the multi-frame/video weights), so its encoder is unchanged, and the decoder differences are generally only visible at high resolution (when zoomed in).
Metrics
Texture-Fix-VAE-for-Qwen-Image-1-and-Krea-2 makes perceptual quality metrics (rFID) much better and reconstruction accuracy metrics (LPIPS/PSNR) somewhat worse. This is an expected tradeoff, since we're generating plausible details to decode a single sharp image, rather than producing a PSNR-maximizing blurry average of all possible decoded images.
| Metric | Qwen-Image VAE | Texture-Fix-VAE-for-Qwen-Image-1-and-Krea-2 |
|---|---|---|
| rFID ↓ (COCO val2017, 5000 images @ 256²) | 4.75 | 1.74 |
| PSNR ↑ (COCO val2017 @ 256²) | 32.15 | 30.97 |
| LPIPS ↓ (COCO val2017 @ 256²) | 0.0506 | 0.0540 |
| PSNR ↑ (DIV2K valid, native 1024² crops) | 31.54 | 30.35 |
| LPIPS ↓ (DIV2K valid, native 1024² crops) | 0.0667 | 0.0701 |
Metrics were computed by decoding matched official-encoder latents in bf16 precision.
Version History
- 2026-10-20 Initial release; finetuned the decoder to fix the checkerboard artifacts
- Finetuned
up_blocks.2,up_blocks.3and the output head (2.7M trainable parameters) for 5000 steps at learning rate 3e-5 (LPIPS weight 0.02, GAN discriminator warm-started from the Qwen-Image-2.1 texture fix), then 2000 steps of cosine cooldown to 0.
- Finetuned
License
Texture-Fix-VAE-for-Qwen-Image-1-and-Krea-2 is Apache-2.0, same as the original Qwen-Image weights; see LICENSE.