EricRollei/Eric_Qwen_Edit_Experiments

Edit Images with Qwen at higher resolution (up to 17mp) and Generate up to 60mp

Python

22

28 commits

updated May 12, 2026

See the code

README

Eric Qwen-Edit & Qwen-Image Nodes

πŸ–ΌοΈ Up to 17 MP image editing Β· 50 MP+ text-to-image generation

ComfyUI custom nodes for Qwen-Image-Edit-2511 (image editing) and Qwen-Image-2512 (text-to-image generation) β€” 20-billion-parameter MMDiT models by Qwen (Alibaba).
30 nodes covering loading, single-image editing, multi-image fusion, style transfer, inpainting, inpaint-with-transfer, LoRA, Spectrum acceleration, delta overlay, mask utilities, text-to-image generation, multi-stage generation, prompt rewriting, 2Γ— VAE super-resolution upscaling, ControlNet-guided generation, and ControlNet inpainting (experimental).

8 MP image editing in just a few nodes Edit images at up to 16 MP resolution β€” just a loader, LoRA, and edit node.

Advanced Qwen-Edit worfflow up to 16mp Advanced Qwen-Edit workflow - just drop into ComfyUI - I use a lot of my own custom nodes which are all available but you can use the basic workflow too - just check the workflows folder

Features

  • Text-to-image generation β€” Generate images from text prompts using Qwen-Image-2512
  • Preserves input resolution β€” No forced upscaling to fill a pixel budget (edit nodes)
  • Configurable max_mp cap β€” Control maximum output size for VRAM safety
  • Resolution presets β€” Quick selection of common aspect ratios for generation
  • VAE tiling β€” Automatic high-resolution decode without OOM
  • Supports up to 16 MP β€” Edit or generate large images directly
  • True CFG β€” Two full transformer forward passes per step (conditional + unconditional)
  • Dual conditioning paths β€” VL path (~384 px semantic tokens via Qwen2.5-VL) + VAE/ref path (output-resolution pixel latents), individually controllable per image (edit nodes)
  • Multi-stage generation β€” Progressive upscale + re-denoise across up to 3 stages with per-stage control over steps, CFG, denoise, and sigma schedule
  • UltraGen β€” Quality-focused v2 multi-stage node with Qwen-Image-2512 best practices, per-stage seeds, sigma schedules, and upscale VAE integration
  • ControlNet-guided generation β€” UltraGen CN node with InstantX/Qwen-Image-ControlNet-Union for Canny, SoftEdge, Depth, and Pose guided generation up to 50 MP+, with auto-scaling CN strength
  • Spectrum acceleration β€” Training-free CVPR 2026 Chebyshev feature forecaster for ~3–5Γ— speedup (both edit and generation)
  • Prompt rewriting β€” Local or remote LLM-powered prompt enhancement via any OpenAI-compatible API (Ollama, LM Studio, DeepSeek, etc.)
  • LoRA support β€” Apply and unload LoRAs on both edit and generation pipelines with chainable weight control
  • 2Γ— VAE super-resolution β€” Optional Wan2.1-VAE-upscale2x integration for free 2Γ— upscale during VAE decode, with inter-stage and final-decode modes
  • Extended prompt token length β€” Configurable max_sequence_length (up to 1024 tokens) in UltraGen for highly detailed prompts β€” not exposed by other Qwen-Image nodes or workflows
  • Progress bars β€” Native ComfyUI progress display during denoising on every generation/edit node

What Makes This Different

Most ComfyUI Qwen nodes decompose the model into ComfyUI's generic UNET β†’ Scheduler β†’ Sampler graph. These nodes take a fundamentally different approach β€” running the real Hugging Face diffusers pipeline end-to-end, with targeted patches that unlock capabilities no other Qwen node set provides.

1. Native-resolution editing up to 17 MP

The stock diffusers QwenImageEditPlusPipeline forces all outputs to ~1 MP regardless of input size β€” a 12 MP photo gets crushed to 1 MP and fine details are lost. This node set patches the pipeline to preserve your input resolution (aligned to 32 px) up to a configurable cap (default 16 MP, supports 17 MP). No other ComfyUI Qwen-Edit implementation does this.

InputStock PipelineEric Qwen-Edit (max_mp=16)
2 MP1 MP output2 MP output
6 MP1 MP output6 MP output
20 MP1 MP output16 MP output (capped)

2. Real FlowMatch diffusers pipeline β€” not the UNET/KSampler abstraction

ComfyUI's native approach treats every diffusion model as a generic UNET with a separate sampler and scheduler. Users must manually add an "Aura Flow Shift" node and guess shift values. This loses model-specific details and produces inferior results.

These nodes call the FlowMatchEulerDiscreteScheduler pipeline directly, so every sigma shift, timestep, and conditioning step matches exactly what the model was trained with:

AspectComfyUI native (UNET + KSampler)Eric Qwen-Edit / Qwen-Image (diffusers)
Sigma shiftingManual β€” requires an extra "Aura Flow Shift" node with a user-chosen shift valueAutomatic β€” FlowMatchEulerDiscreteScheduler with use_dynamic_shifting reads parameters from the model config
Resolution-awareNo β€” fixed shift regardless of output sizeYes β€” time-shift ΞΌ is interpolated from the output resolution's latent sequence length
Shift formulaΞ±Β·t / (1 + (Ξ±-1)Β·t) with a single hand-tuned Ξ±Exponential: exp(ΞΌ) / (exp(ΞΌ) + (1/t - 1)) + terminal stretch, where ΞΌ adapts per resolution
Dual conditioningLost β€” UNET abstraction has no concept of separate VL + VAE/ref pathsPreserved β€” VL path (~384 px semantic tokens via Qwen2.5-VL) + VAE/ref path (output-resolution pixel latents), individually controllable per image
ConfigurationUser must wire shift nodes and pick valuesZero-config β€” parameters come from scheduler_config.json shipped with the model

You do not need any extra shift nodes with these nodes.

3. Spectrum acceleration β€” training-free 3–5Γ— speedup (CVPR 2026)

Implements adaptive spectral feature forecasting from a CVPR 2026 paper. Instead of running all transformer blocks on every denoising step, Spectrum predicts outputs on skipped steps using Chebyshev polynomial regression with Newton forward-difference blending. The flexible-window schedule caches more aggressively in later steps where changes are smaller. Applies to both edit and generation nodes. No other ComfyUI node set ships this.

4. Cross-architecture 2Γ— upscale VAE β€” 50 MP+ generation

Exploits a discovery that the Wan2.1 and Qwen-Image VAEs are architecturally identical (AutoencoderKLWan / AutoencoderKLQwenImage) and share the same latent space. This lets us use spacepxl's Wan2.1-VAE-upscale2x decoder on Qwen-Image latents for free 2Γ— super-resolution during VAE decode. Four modes:

ModeEffect
disabledStandard Qwen VAE decode
inter_stageDecode S2 at 2Γ— via upscale VAE, re-encode for S3 input
final_decodeReplace final VAE decode with 2Γ— upscale VAE
bothInter-stage + final decode β€” stacks for 4Γ— total (50+ MP output)

5. Extended prompt token length (max_sequence_length up to 1024)

The max_sequence_length parameter is buried inside the diffusers pipeline and hardcoded to 512 everywhere else. UltraGen exposes it with range 128–1024. Padding positions are masked out via attention masks, so there's zero quality penalty for setting it higher β€” only a negligible compute increase (~8 MB VRAM). Long, detailed prompts (~200 words) that would be silently truncated at 512 tokens now reach the model in full.

6. Built-in LLM prompt rewriting

A dedicated node that calls any OpenAI-compatible API (Ollama, LM Studio, DeepSeek, OpenAI) to auto-expand terse prompts into rich ~200-word descriptions following Qwen's own recommended prompt methodology. API keys are loaded securely from environment variables or api_keys.ini β€” never stored in the workflow JSON. Includes language selection (English/Chinese), temperature control, custom instructions, and a passthrough toggle for A/B testing.

7. Multi-stage progressive generation with per-stage control

Up to 3 stages of progressive upscale β†’ re-denoise, each with independent control over steps, CFG scale, denoise strength, sigma schedule (linear / balanced / karras), and seed mode (same_all_stages / offset_per_stage / random_per_stage). The UltraGen node combines all of this with tuned defaults that incorporate Qwen's official best practices β€” including the Chinese negative prompt that materially improves results.

8. True CFG with norm-preserving guidance

Two full transformer forward passes per step (conditional + unconditional) for genuine classifier-free guidance β€” not the approximations that single-pass "CFG-like" implementations use. UltraGen uses norm-preserving CFG rescaling that makes high CFG values (8–10) safe at low resolution for locking in composition, with lower CFG (2–4) at higher resolution stages for refinement.

9. Automatic VRAM management

Transformer is automatically offloaded to CPU before upscale VAE decode at every exit point. Tiled decode is used for large images. The pipeline manages device placement so you don't have to wire manual offload nodes.

10. Chainable LoRA with weight control

Apply multiple LoRAs in sequence with independent weight control (βˆ’2.0 to 2.0), and cleanly unload all LoRAs to restore the base model. Works on both edit and generation pipelines.

Installation

Option 1: ComfyUI Manager

Search for "Eric Qwen-Edit" in ComfyUI Manager.

Option 2: Manual

cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/Eric_Qwen_Edit_Experiments.git

Requirements


Nodes

Eric Qwen-Edit Load Model

Loads the Qwen-Image-Edit pipeline from a local directory.

ParameterTypeDefaultDescription
model_pathSTRINGβ€”Path to the Qwen-Image-Edit model directory
precisionCOMBObf16Weight precision: bf16 (recommended), fp16, fp32
deviceCOMBOcudaDevice: cuda, cuda:0, cuda:1, cpu
keep_in_vramBOOLEANTrueCache pipeline between runs to avoid reload
offload_vaeBOOLEANFalseMove VAE to CPU when not in use (saves ~1 GB)
attention_slicingBOOLEANFalseTrade speed for lower peak VRAM
sequential_offloadBOOLEANFalseExtreme VRAM savings via sequential CPU offload

Output: QWEN_EDIT_PIPELINE


Eric Qwen-Edit Component Loader

Advanced loader that lets you swap individual sub-models (transformer, VAE, or text encoder) from different directories. Useful for testing fine-tuned components without duplicating the full ~54 GB model.

Important β€” architecture constraints: Every component must be architecture-compatible with Qwen-Image-Edit. The text encoder is Qwen2.5-VL (Qwen2_5_VLForConditionalGeneration), not CLIP. You cannot plug in a Stable Diffusion UNet, a standard CLIP model, or an unrelated VAE. You can use different fine-tuned or quantised versions of the same Qwen-Image-Edit components.

base_pipeline_path is always required, even if you override all three components. The base path provides the scheduler config, tokenizer, and processor files that have no separate override.

What the base path must contain

The minimum viable base_pipeline_path folder needs these files (the small config/tokenizer files, not the large weights):

base_pipeline_path/
β”œβ”€β”€ model_index.json                 ← pipeline class mapping (required)
β”œβ”€β”€ scheduler/
β”‚   └── scheduler_config.json        ← FlowMatchEulerDiscreteScheduler config
β”œβ”€β”€ tokenizer/
β”‚   β”œβ”€β”€ vocab.json
β”‚   β”œβ”€β”€ merges.txt
β”‚   β”œβ”€β”€ tokenizer_config.json
β”‚   β”œβ”€β”€ added_tokens.json
β”‚   β”œβ”€β”€ special_tokens_map.json
β”‚   └── chat_template.jinja
└── processor/
    β”œβ”€β”€ tokenizer.json
    β”œβ”€β”€ preprocessor_config.json
    β”œβ”€β”€ video_preprocessor_config.json
    β”œβ”€β”€ vocab.json
    β”œβ”€β”€ merges.txt
    β”œβ”€β”€ tokenizer_config.json
    β”œβ”€β”€ added_tokens.json
    β”œβ”€β”€ special_tokens_map.json
    └── chat_template.jinja

If you don't override a component, its weights are also loaded from the base path.

Component folder structures

Each override path must contain a config.json plus the weight files for that component:

Transformer (~38 GB, QwenImageTransformer2DModel β€” 20B-parameter MMDiT):

transformer_path/
β”œβ”€β”€ config.json
β”œβ”€β”€ diffusion_pytorch_model.safetensors.index.json
β”œβ”€β”€ diffusion_pytorch_model-00001-of-00005.safetensors
β”œβ”€β”€ diffusion_pytorch_model-00002-of-00005.safetensors
β”œβ”€β”€ diffusion_pytorch_model-00003-of-00005.safetensors
β”œβ”€β”€ diffusion_pytorch_model-00004-of-00005.safetensors
└── diffusion_pytorch_model-00005-of-00005.safetensors

Also accepts: a parent folder with a transformer/ subfolder, or a single .safetensors file (loaded as state dict into the base architecture).

VAE (~0.24 GB, AutoencoderKLQwenImage):

vae_path/
β”œβ”€β”€ config.json
└── diffusion_pytorch_model.safetensors

Also accepts a parent folder with a vae/ subfolder.

Text Encoder (~15.5 GB, Qwen2_5_VLForConditionalGeneration β€” Qwen2.5-VL 7B):

text_encoder_path/
β”œβ”€β”€ config.json
β”œβ”€β”€ generation_config.json
β”œβ”€β”€ model.safetensors.index.json
β”œβ”€β”€ model-00001-of-00004.safetensors
β”œβ”€β”€ model-00002-of-00004.safetensors
β”œβ”€β”€ model-00003-of-00004.safetensors
└── model-00004-of-00004.safetensors

Also accepts a parent folder with a text_encoder/ subfolder.

Typical use cases

ScenarioWhat to set
Fine-tuned transformer onlybase_pipeline_path = full model, transformer_path = fine-tune dir
Quantised text encoderbase_pipeline_path = full model, text_encoder_path = quantised dir
Everything stockJust use the standard Load Model node instead

Node parameters

ParameterTypeDefaultDescription
base_pipeline_pathSTRINGβ€”Path to complete Qwen-Image-Edit model (always required β€” provides scheduler, tokenizer, processor, and defaults for unset components)
transformer_pathSTRING(empty)Optional override β€” transformer weights directory or single .safetensors file
vae_pathSTRING(empty)Optional override β€” VAE weights directory
text_encoder_pathSTRING(empty)Optional override β€” text encoder weights directory
precisionCOMBObf16bf16, fp16, fp32
deviceCOMBOcudacuda, cuda:0, cuda:1, cpu
keep_in_vramBOOLEANTrueCache between runs
offload_vaeBOOLEANFalseOffload VAE to CPU when idle
attention_slicingBOOLEANFalseAttention slicing for lower VRAM
sequential_offloadBOOLEANFalseSequential CPU offload

Output: QWEN_EDIT_PIPELINE

Note for ComfyUI users: The standard ComfyUI "Load Diffusion Model" / "Load CLIP" / "Load VAE" nodes produce ComfyUI-internal model wrappers and will not work with these nodes. Qwen-Image-Edit requires the diffusers from_pretrained loading path, which is what both the Load Model and Component Loader nodes provide.


Eric Qwen-Edit Unload

Free VRAM by unloading the pipeline. Connect after the last generation node.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINE(optional)Pipeline to unload
imagesIMAGE(optional)Passthrough β€” connect to trigger unload after generation

Output: status (STRING)


Eric Qwen-Edit Image

Edit a single image using a text prompt.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From any loader node
imageIMAGEβ€”Image to edit
promptSTRINGβ€”Describe the edit
negative_promptSTRING(empty)What to avoid
stepsINT8Inference steps (8 for lightning LoRA, 50 for base model)
true_cfg_scaleFLOAT4.0True CFG strength (1.0–20.0)
seedINT0Random seed
max_mpFLOAT8.0Maximum output megapixels (0.5–16.0)

Output: IMAGE


Eric Qwen-Edit Inpaint

Inpaint masked regions of an image. The model has no native mask input β€” this node blanks the masked area, lets the model regenerate it, then composites the result back onto the original with feathered blending.

Strategy: blank masked region β†’ model sees hole and prompt β†’ post-composite with Gaussian-feathered mask.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
imageIMAGEβ€”Image to inpaint
maskMASKβ€”White = inpaint, black = keep
promptSTRINGβ€”Describe what to generate in masked area
mask_modeCOMBOblank_whiteHow to blank the mask: blank_white, blank_gray, color_overlay
featherINT8Gaussian blur radius for mask edge blending
negative_promptSTRING(empty)What to avoid
stepsINT8Inference steps
true_cfg_scaleFLOAT4.0True CFG strength
seedINT0Random seed
max_mpFLOAT8.0Maximum output megapixels

Output: IMAGE


Eric Qwen-Edit Inpaint Transfer

Transfer content from a reference image into the masked region of the original. Combines pre-compositing, model harmonisation, and post-compositing for seamless results.

Strategy:

  1. Scale the transfer image (+ optional transfer mask) proportionally so the source region fits inside the target mask bounding box
  2. Pre-composite the transfer into the masked area β€” model sees content already in place
  3. Model harmonises lighting, color, and edges via the prompt
  4. Post-composite with feathered mask to preserve the original outside the mask
ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
imageIMAGEβ€”Original image (target)
maskMASKβ€”Target region (white = where to place transfer)
transfer_imageIMAGEβ€”Reference image containing the content to transfer
promptSTRINGβ€”Describe what you want (e.g. "harmonise the pasted element with its surroundings")
transfer_maskMASK(optional)Mark which part of the transfer image to use (white = keep). When provided, both masks' bounding boxes are used for proportional scaling.
transfer_vl_refBOOLEANTrueAlso send full transfer image as a VL semantic reference
blend_strengthFLOAT1.0Pre-composite alpha (0.0–1.0)
featherINT8Gaussian blur radius for post-composite blending
negative_promptSTRING(empty)What to avoid
stepsINT8Inference steps
true_cfg_scaleFLOAT4.0True CFG strength
seedINT0Random seed
max_mpFLOAT8.0Maximum output megapixels

Output: IMAGE


Eric Qwen-Edit Multi-Image Fusion

Combine 2–4 images with composition modes and per-image conditioning control over both the VL (semantic) and VAE/ref (pixel) paths.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
image_1 – image_4IMAGEβ€” (2 required)Input images (image_3, image_4 optional)
promptSTRINGβ€”Describe the desired composition
composition_modeCOMBOgroupgroup / scene / merge / raw
subject_labelSTRING(empty)Optional label for subject identification
main_imageCOMBOimage_1Which image seeds the output resolution and denoising
vae_target_sizeINT0VAE encoding resolution for ref images (0 = match output)
vl_1 – vl_4BOOLEANTrueInclude each image in the VL semantic path
ref_1BOOLEANTrueInclude image_1 in the VAE/ref pixel path
ref_2 – ref_4BOOLEANFalseInclude secondary images in VAE/ref path (default off β€” VL-only)
negative_promptSTRING(empty)What to avoid
stepsINT8Inference steps
true_cfg_scaleFLOAT4.0True CFG strength
seedINT0Random seed
max_mpFLOAT8.0Maximum output megapixels

Output: IMAGE


Eric Qwen-Edit Style Transfer

Apply the visual style of one image to the content of another, with fine-grained control over which aspects of style are transferred.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
style_imageIMAGEβ€”Reference providing the aesthetic
content_imageIMAGEβ€”Image to restyle
style_modeCOMBOfull_stylefull_style / color_palette / lighting / artistic_medium / texture / custom
custom_promptSTRING(empty)When non-empty, always overrides the style_mode template
additional_guidanceSTRING(empty)Extra instructions appended to the auto-generated prompt
style_strengthFLOAT1.0Scales CFG for stronger/weaker style (0.1–3.0)
vae_target_sizeINT1024VAE encoding resolution for style image
vl_styleBOOLEANTrueStyle image in VL semantic path
vl_contentBOOLEANTrueContent image in VL semantic path
ref_styleBOOLEANFalseStyle image in VAE/ref pixel path (off by default β€” avoids pixel bleed)
ref_contentBOOLEANTrueContent image in VAE/ref pixel path
negative_promptSTRING(empty)What to avoid
stepsINT8Inference steps
true_cfg_scaleFLOAT4.0True CFG strength
seedINT0Random seed
max_mpFLOAT8.0Maximum output megapixels

Output: IMAGE


Eric Qwen-Edit Spectrum Accelerator

Training-free diffusion acceleration based on the Spectrum method (CVPR 2026). Uses Chebyshev polynomial feature forecasting to skip redundant transformer forward passes, achieving ~3–5Γ— speedup with minimal quality loss.

Attach this node between the loader and any generation node. The config is stored on the pipeline and takes effect during the next denoising run. Automatically disabled when total steps < min_steps.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
enableBOOLEANTrueToggle acceleration on/off
warmup_stepsINT3Full-compute warm-up steps before forecasting begins
window_sizeINT2History window for Chebyshev polynomial fitting
flex_windowFLOAT0.75Fraction of remaining steps to recompute vs. forecast (0.0–1.0)
wFLOAT0.5Blend weight between forecast and previous features
lamFLOAT0.1Regularisation coefficient for the forecaster
MINT4Chebyshev polynomial degree
min_stepsINT15Spectrum auto-disables below this step count

Output: QWEN_EDIT_PIPELINE (same pipeline with spectrum config attached)


Eric Qwen-Edit LoRA

Load a LoRA adapter into the pipeline. Use the lightning LoRA for 8-step inference.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
lora_nameCOMBOβ€”Dropdown of .safetensors files in ComfyUI/models/loras/
weightFLOAT1.0LoRA scale (0.0–2.0)
lora_path_overrideSTRING(empty, optional)Full path to a LoRA file outside the standard loras folder

Output: QWEN_EDIT_PIPELINE


Eric Qwen-Edit Unload LoRA

Remove all LoRA adapters from the pipeline, restoring base weights.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”Pipeline with LoRA loaded

Output: QWEN_EDIT_PIPELINE


Eric Qwen-Edit Delta Overlay

Compare an edited image with the original, extract a change mask, and composite the edit onto the original only where changes occurred. Useful for upscaling an edit at full resolution and applying it precisely.

ParameterTypeDefaultDescription
original_imageIMAGEβ€”Original (before edit)
edited_imageIMAGEβ€”Edited (after edit) β€” may be a different resolution
thresholdFLOAT0.05Minimum per-pixel difference to count as a change (0.0–1.0)
blur_radiusINT5Gaussian blur on the change mask for softer edges
expand_maskINT3Dilate the mask by this many pixels
upscale_methodCOMBOlanczosResampling method when resizing: lanczos, bicubic, bilinear, nearest
input_maskMASK(optional)If provided, intersected with the auto-detected change mask

Outputs:

NameTypeDescription
compositeIMAGEOriginal with edit applied only where changes were detected
change_maskMASKBinary mask of detected changes
upscaled_editIMAGEEdited image resized to match original resolution

Eric Qwen-Edit Apply Mask

Simple mask-based compositing utility. Blends a foreground and background image using a mask.

ParameterTypeDefaultDescription
foregroundIMAGEβ€”Image shown in white areas of the mask
backgroundIMAGEβ€”Image shown in black areas of the mask
maskMASKβ€”Blend mask: white = foreground, black = background
blur_maskINT0(optional) Additional Gaussian blur on the mask (0–50)

Output: IMAGE


Qwen-Image Generation Nodes

These nodes use Qwen-Image / Qwen-Image-2512 for text-to-image generation. They share the same 20B MMDiT transformer and VAE architecture as the edit model, but take only text input β€” no source image required.

Generation nodes use a separate pipeline type (QWEN_IMAGE_PIPELINE) that is not interchangeable with the edit pipeline (QWEN_EDIT_PIPELINE). You need separate loader nodes for each.

Eric Qwen-Image Load Model

Loads the Qwen-Image-2512 (or Qwen-Image) text-to-image pipeline.

ParameterTypeDefaultDescription
model_pathSTRINGβ€”Path to the Qwen-Image model directory
precisionCOMBObf16Weight precision: bf16 (recommended), fp16, fp32
deviceCOMBOcudaDevice: cuda, cuda:0, cuda:1, cpu
keep_in_vramBOOLEANTrueCache pipeline between runs
offload_vaeBOOLEANFalseMove VAE to CPU when not in use
attention_slicingBOOLEANFalseTrade speed for lower peak VRAM
sequential_offloadBOOLEANFalseSequential CPU offload for extreme VRAM savings

Output: QWEN_IMAGE_PIPELINE


Eric Qwen-Image Component Loader

Advanced loader that lets you swap individual sub-models (transformer, VAE, or text encoder) from different directories.

The generation pipeline has no processor component (unlike the edit pipeline). The base path must provide model_index.json, scheduler/, and tokenizer/.

ParameterTypeDefaultDescription
base_pipeline_pathSTRINGβ€”Path to complete Qwen-Image model (always required)
transformer_pathSTRING(empty)Optional override β€” transformer weights directory or .safetensors
vae_pathSTRING(empty)Optional override β€” VAE weights directory
text_encoder_pathSTRING(empty)Optional override β€” text encoder weights directory
precisionCOMBObf16bf16, fp16, fp32
deviceCOMBOcudacuda, cuda:0, cuda:1, cpu
keep_in_vramBOOLEANTrueCache between runs
offload_vaeBOOLEANFalseOffload VAE to CPU when idle
attention_slicingBOOLEANFalseAttention slicing for lower VRAM
sequential_offloadBOOLEANFalseSequential CPU offload

Output: QWEN_IMAGE_PIPELINE


Eric Qwen-Image Generate

Generate images from text prompts. Choose a resolution preset or set custom dimensions.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”From any generation loader node
promptSTRINGβ€”Describe the image to generate
negative_promptSTRING(empty)What to avoid
resolutionCOMBO1024Γ—1024 (1:1)Resolution preset (9 common aspect ratios, or "custom")
widthINT1024Custom width β€” only used when resolution = "custom"
heightINT1024Custom height β€” only used when resolution = "custom"
stepsINT50Inference steps
true_cfg_scaleFLOAT4.0True CFG strength (>1 enables dual forward passes)
seedINT0Random seed (0 = random)
max_mpFLOAT1.0Maximum output megapixels

Resolution presets available: 1024Γ—1024 (1:1), 1152Γ—896 (9:7), 896Γ—1152 (7:9), 1216Γ—832 (19:13), 832Γ—1216 (13:19), 1344Γ—768 (7:4), 768Γ—1344 (4:7), 1536Γ—640 (12:5), 640Γ—1536 (5:12), custom

Output: IMAGE


Eric Qwen-Image Unload

Free VRAM by unloading the generation pipeline.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINE(optional)Pipeline to unload
imagesIMAGE(optional)Passthrough β€” connect to trigger unload after generation

Output: status (STRING)


Eric Qwen-Image Apply LoRA

Apply a LoRA to the Qwen-Image generation pipeline. Loads LoRA weights onto the transformer. Multiple Apply LoRA nodes can be chained to stack several LoRAs with different weights. LoRAs are loaded from ComfyUI/models/loras/.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”From any generation loader node
lora_nameCOMBOβ€”Select LoRA from ComfyUI/models/loras/
weightFLOAT1.0LoRA weight strength (βˆ’2.0 to 2.0, step 0.05). 1.0 = full, 0.5 = half
lora_path_overrideSTRING(empty)Optional: custom path override (leave empty to use dropdown)

Output: QWEN_IMAGE_PIPELINE


Eric Qwen-Image Unload LoRA

Unload all LoRAs from the Qwen-Image generation pipeline. Use to reset the model to its base state before applying different LoRAs, or to free memory.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”Pipeline with LoRAs to unload

Output: QWEN_IMAGE_PIPELINE


Eric Qwen-Image Multi-Stage Generate

Progressive multi-stage text-to-image generation with full per-stage control. Up to 3 stages with independent steps, CFG, resolution, and denoise settings. Latents are upscaled between stages via bislerp and re-noised according to the per-stage denoise strength before re-sampling.

  • Set upscale_to_stage2 = 0 β†’ output Stage 1 only (single-stage).
  • Set upscale_to_stage3 = 0 β†’ stop after Stage 2 (two-stage).
ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”From any generation loader node
promptSTRINGβ€”Describe the image you want to generate
negative_promptSTRING(empty)What to avoid in the output
aspect_ratioCOMBO1:1 SquareAspect ratio applied at every stage
seedINT0Random seed (0 = random)
Stage 1
s1_mpFLOAT0.5Stage 1 resolution in megapixels (0.3–2.0)
s1_stepsINT15Stage 1 inference steps (txt2img from noise)
s1_cfgFLOAT8.0Stage 1 true CFG scale
Stage 2
upscale_to_stage2FLOAT2.0Upscale factor (area) S1β†’S2. 0 = skip S2 & S3, output S1
s2_stepsINT20Stage 2 inference steps
s2_cfgFLOAT4.0Stage 2 true CFG scale
s2_denoiseFLOAT1.0Stage 2 denoise (1.0 = full, lower preserves prior detail)
Stage 3
upscale_to_stage3FLOAT2.0Upscale factor (area) S2β†’S3. 0 = skip S3, output S2
s3_stepsINT15Stage 3 inference steps
s3_cfgFLOAT2.0Stage 3 true CFG scale
s3_denoiseFLOAT1.0Stage 3 denoise

Output: IMAGE


Eric Qwen-Image UltraGen

Quality-focused multi-stage text-to-image generation (v2). Incorporates all Qwen-Image-2512 best practices: official Chinese negative prompt as default, max_sequence_length up to 1024 for detailed prompts, Spectrum acceleration on Stage 1, tuned defaults (0.5 MP s1 β†’ 4Γ— upscale β†’ 26-step s2 refinement), per-stage seed modes, sigma schedule selection, and optional upscale VAE for 2Γ— super-resolution decode.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”From any generation loader node
promptSTRINGβ€”Describe the image. For best results ~200 words. Connect Prompt Rewriter to auto-enhance.
negative_promptSTRING(official Chinese default)Official Qwen-Image-2512 negative prompt
aspect_ratioCOMBO1:1 SquareAspect ratio applied at every stage
seedINT0Random seed (0 = random)
seed_modeCOMBOoffset_per_stagesame_all_stages, offset_per_stage (S2=seed+1, S3=seed+2), or random_per_stage
max_sequence_lengthINT1024Max prompt token length (128–1024, step 64). Full capacity by default.
Stage 1
s1_mpFLOAT0.5Stage 1 resolution in megapixels
s1_stepsINT15Stage 1 inference steps
s1_cfgFLOAT10.0Stage 1 true CFG. High CFG at low res locks in composition.
Stage 2
upscale_to_stage2FLOAT4.0Upscale factor (area) S1β†’S2. 0 = skip S2 & S3.
s2_stepsINT26Stage 2 inference steps (main refinement)
s2_cfgFLOAT4.0Stage 2 true CFG (matches official recommendation)
s2_denoiseFLOAT0.85Stage 2 denoise
s2_sigma_scheduleCOMBOlinearlinear, balanced (Karras ρ=3), or karras (Karras ρ=7)
Stage 3
upscale_to_stage3FLOAT2.0Upscale factor (area) S2β†’S3. 0 = disabled.
s3_stepsINT18Stage 3 inference steps
s3_cfgFLOAT2.0Stage 3 true CFG
s3_denoiseFLOAT0.45Stage 3 denoise (0.3–0.5 recommended for final polish)
s3_sigma_scheduleCOMBOkarrasSigma schedule for S3 (karras recommended for fine micro-texture)
Upscale VAE
upscale_vaeUPSCALE_VAE(optional)From Eric Qwen Upscale VAE Loader
upscale_vae_modeCOMBObothdisabled, inter_stage, final_decode, or both (see Upscale VAE section below)

Output: IMAGE


Eric Qwen-Image ControlNet Loader

Loads an InstantX Qwen-Image ControlNet model. Supports both the Union model (Canny, SoftEdge, Depth, Pose) and the Inpainting model. The model is kept on CPU and moved to GPU automatically when called by UltraGen CN or UltraGen Inpaint CN.

ParameterTypeDefaultDescription
model_pathSTRINGInstantX/Qwen-Image-ControlNet-UnionHuggingFace model ID or local path
dtypeCOMBObfloat16Model precision: bfloat16, float16, float32

Output: QWEN_IMAGE_CONTROLNET

Models:


Eric Qwen-Image UltraGen CN

ControlNet-guided multi-stage text-to-image generation. Same architecture as UltraGen but uses the InstantX/Qwen-Image-ControlNet-Union model on Stage 1 (and optionally Stage 2) to guide composition and structure from a control image. Supports Canny edge maps, SoftEdge/HED, depth maps, and OpenPose skeletons. Output up to 50 MP+ with upscale VAE.

Includes ControlNet auto-scaling that calibrates CN signal magnitude to match the transformer's hidden states, so the same cn_target_strength value works across different fine-tuned transformers without manual scale hunting.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”From any generation loader node
controlnetQWEN_IMAGE_CONTROLNETβ€”From the ControlNet Loader
control_imageIMAGEβ€”Control image (Canny, depth, pose, or soft edge map)
cn_typeCOMBOcannyControlNet type: canny, soft_edge, depth, pose
promptSTRINGβ€”Describe the image
negative_promptSTRING(official default)Negative prompt
ControlNet
cn_auto_scaleBOOLEANTrueAuto-calibrate CN strength to transformer magnitude
cn_target_strengthFLOAT1.0CN influence (1.0 = standard, higher = stronger guidance)
controlnet_conditioning_scaleFLOAT1.0Manual CN scale (when auto-scale OFF)
control_guidance_startFLOAT0.0When CN guidance begins (fraction of steps)
control_guidance_endFLOAT1.0When CN guidance ends
S2 ControlNet
s2_cn_scaleFLOAT1.0CN strength on Stage 2 (0 = disable CN for S2)
s2_cn_startFLOAT0.0S2 CN guidance start
s2_cn_endFLOAT1.0S2 CN guidance end
Stages(Same stage parameters as UltraGen β€” s1_mp, s1_steps, s1_cfg, upscale_to_stage2, s2_steps, etc.)
Upscale VAE(Same upscale VAE parameters as UltraGen)

Output: IMAGE


Eric Qwen-Image Spectrum Accelerator

Training-free diffusion sampling speedup using adaptive spectral feature forecasting (CVPR 2026). Predicts transformer outputs on skipped steps via Chebyshev polynomial regression instead of running all transformer blocks. Best for β‰₯20 inference steps and true CFG runs (2Γ— transformer passes per step β†’ double the savings). Wire between the Image Loader and any generation node.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”Pipeline to accelerate
enableBOOLEANTrueEnable/disable Spectrum acceleration
warmup_stepsINT3Initial denoising steps that always run the full transformer (2–4 recommended)
window_sizeINT2Base period between actual transformer evaluations. 2 = every other step cached.
flex_windowFLOAT0.75Window growth rate. Later steps change less, so larger windows are safe. 0 = fixed window.
wFLOAT0.5Blend between Chebyshev predictor (1.0) and Newton forward-difference predictor (0.0)
lamFLOAT0.1Ridge regularization for Chebyshev regression. Higher = smoother predictions.
MINT4Chebyshev polynomial degree (1–8). Higher captures complex trajectories but risks overfitting.
min_stepsINT15Auto-disable when num_inference_steps < this (low step counts don't benefit)

Output: QWEN_IMAGE_PIPELINE


Eric Qwen Prompt Rewriter

Enhance image prompts using a local or remote LLM. Rewrites terse prompts into rich ~200-word descriptions following Qwen-Image-2512 recommended methodology. Connects to any OpenAI-compatible API (Ollama, LM Studio, DeepSeek, OpenAI, etc.). API keys are loaded securely from environment variables or api_keys.ini β€” never stored in the workflow file. Output connects to the prompt input of any generation node.

ParameterTypeDefaultDescription
promptSTRINGβ€”Original image description to enhance
api_urlSTRINGhttp://localhost:11434/v1OpenAI-compatible API base URL
modelSTRINGqwen3:8bModel name on the API server
languageCOMBOEnglishLanguage for the rewritten prompt (English or Chinese)
temperatureFLOAT0.7LLM temperature β€” lower = more faithful, higher = more creative
max_tokensINT2048Max tokens for LLM response
custom_instructionsSTRING(empty)Additional instructions appended to the system prompt
lora_triggersSTRING(empty)LoRA trigger words/phrases, one per line or comma-separated
trigger_modeCOMBOoffHow to apply trigger words: incorporate, prepend, append, or off
passthroughBOOLEANFalseSkip rewriting and pass prompt through unchanged (for A/B testing)

Output: enhanced_prompt (STRING)

LoRA Trigger Words

Many LoRAs require specific trigger words or phrases in the prompt to activate their trained style or concept. The lora_triggers and trigger_mode inputs let you inject these automatically:

ModeBehavior
offTrigger words are ignored
incorporateThe LLM is instructed to weave the trigger words verbatim into the rewritten prompt naturally. Falls back to prepend when passthrough is enabled (no LLM call).
prependTrigger words are prepended to the prompt (before the rewritten text). Works even in passthrough mode.
appendTrigger words are appended to the prompt (after the rewritten text). Works even in passthrough mode.

Usage: Enter one trigger per line, or separate with commas. For example:

ohwx woman
cinematic lighting
film grain

When using incorporate mode, the LLM receives an additional system instruction requiring the trigger words to appear verbatim in the output, so they blend naturally into the description rather than being awkwardly tacked on.


⚠️ Experimental: ControlNet Inpainting Nodes

Motivation: Qwen-Image-Edit redraws the entire image on every edit, which progressively degrades areas outside the edit region β€” fine details, textures, and sharpness are lost across the whole canvas. A true inpainting pipeline would regenerate only the masked region while leaving the rest of the image completely untouched, preserving full original quality. That is the goal of these ControlNet inpainting nodes.

Status: Experimental β€” not fully working. These nodes are functional but produce visible halos and ghosting artifacts from double-sampling at mask boundaries. The multi-stage pipeline generates the full image from noise while the ControlNet conditions on the masked source, but compositing the result back onto the original creates noticeable seams that the harmonization pass has not yet fully resolved. We believe techniques from the Qwen-Edit inpaint nodes (which use a fundamentally different conditioning approach) may help, but this has not been explored yet.

Alternative: The Eric Qwen-Edit Inpaint node provides a separate experimental approach to masked inpainting using the Qwen-Image-Edit model. It blanks out the masked region before sending the image through both the VL and VAE encoders, then composites the generated output back onto the original using the mask with edge feathering. This approach currently produces better results than the ControlNet inpainting nodes, though it still relies on Qwen-Edit (which reprocesses the full image internally) and is itself experimental.

These nodes are included for experimentation.

Eric Qwen-Image UltraGen Inpaint CN

ControlNet-guided multi-stage inpainting and outpainting using the InstantX/Qwen-Image-ControlNet-Inpainting model. Uses QwenImageControlNetInpaintPipeline with 17-channel conditioning (16ch VAE-encoded masked image + 1ch mask). Supports object replacement, background replacement, text modification, and outpainting.

Architecture: Up to 3 stages β€” S1 (CN draft), S2A (CN refine + dilated mask), S2B (whole-image harmonize, no CN), S3 (polish upscale, no CN). Smart stage selection (auto_stages) skips S1 when input is already large enough. Final feathered composite preserves original pixels outside the mask.

Known issues:

  • Halo artifacts at mask boundaries due to double-sampling
  • Ghosting where generated content overlaps original pixels
  • Harmonization pass (S2B) reduces but does not eliminate boundary artifacts

Eric Qwen Inpaint Prompt Rewriter

VLM-powered prompt rewriter for inpainting. Analyzes the source image and mask to generate short, change-focused prompts (40–80 words) describing the desired edit. Uses mask outline overlay for spatial awareness.

Eric Qwen ControlNet Prompt Rewriter

VLM-powered prompt rewriter for ControlNet-guided generation. Generates full scene descriptions (200–400 words) with CN-type awareness (Canny, SoftEdge, Depth, Pose). Outputs both the prompt and a cn_type_index integer.


2Γ— Upscale VAE (Super-Resolution Decode)

The Wan2.1-VAE-upscale2x by spacepxl is a decoder-only finetune of the Wan2.1 VAE that outputs 12 channels instead of 3. After decode, pixel_shuffle(12β†’3, 2Γ—) produces a 2Γ— upscaled image β€” effectively free super-resolution during VAE decode with no extra diffusion steps.

The Wan2.1 and Qwen-Image VAEs are architecturally identical (AutoencoderKLWan / AutoencoderKLQwenImage) and share the same latent space, so the upscale VAE works directly with Qwen-Image latents.

How it works

  1. Load the upscale VAE with the Eric Qwen Upscale VAE Loader node
  2. Connect it to the upscale_vae input on the Eric Qwen-Image UltraGen node
  3. Choose a mode via the upscale_vae_mode dropdown

Upscale VAE Modes

ModeDescription
disabledUpscale VAE ignored even if connected (safe default)
inter_stageDecode S2 latents at 2× via the upscale VAE, re-encode back to latents, and feed the 2× canvas to S3. Replaces the bislerp inter-stage upscale with a higher-quality decode→2×→re-encode round trip. Requires 3 active stages.
final_decodeReplace the final stage's normal VAE decode with the 2Γ— upscale decode. The output image is 2Γ— the resolution of the final denoising stage.
bothInter-stage S2β†’S3 and 2Γ— final decode. These stack: S3 runs on a 2Γ— canvas from inter-stage, then the output gets another 2Γ— from final decode = 4Γ— total vs. S2.

VRAM Management

The upscale VAE is kept on CPU until needed. Before decode, the diffusion transformer is automatically offloaded to CPU to free VRAM. For large images, tiled VAE decoding is automatically enabled when latent spatial dimensions exceed 128 (roughly β‰₯1024 px per side before the 2Γ— upscale).

Typical workflow

[Qwen-Image Loader] β†’ [LoRA] β†’ [Spectrum] β†’ [Upscale VAE Loader] β†’ [UltraGen]
                                                     ↑                    ↑
                                              upscale_vae ──────── upscale_vae
                                                              upscale_vae_mode = final_decode

Eric Qwen Upscale VAE Loader

Load the Wan2.1 2Γ— upscale VAE. The model is kept on CPU until decode is requested.

ParameterTypeDefaultDescription
model_pathSTRINGspacepxl/Wan2.1-VAE-upscale2xHuggingFace model ID or local path
subfolderSTRINGdiffusers/Wan2.1_VAE_upscale2x_imageonly_real_v1Subfolder within the repo containing config.json + weights. Leave blank if model_path already points to the correct directory.
dtypeCOMBObfloat16Model precision: bfloat16 (recommended), float16, float32

Output: UPSCALE_VAE

The first run downloads the model from HuggingFace (~0.5 GB). Subsequent runs load from the local HuggingFace cache. You can also download the model manually and point model_path to the local directory.

Model source: spacepxl/Wan2.1-VAE-upscale2x β€” a decoder-only finetune of the Wan2.1 VAE by spacepxl. The specific subfolder used is diffusers/Wan2.1_VAE_upscale2x_imageonly_real_v1 (image-only variant, trained on real images).


Architecture Notes

Qwen-Image-Edit-2511 uses a dual conditioning path:

  1. VL path β€” Each input image is processed by the built-in Qwen2.5-VL vision-language encoder at ~384 px to produce semantic token embeddings. These tell the model what is in each image.
  2. VAE/ref path β€” Each input image is VAE-encoded at output resolution to produce pixel-level latents. These tell the model how to render the pixels.

Most multi-image nodes expose per-image vl_* and ref_* toggles so you can control which path each image participates in. For example, in Style Transfer, the style image defaults to VL-only (semantic style cues) while the content image defaults to both VL + ref (preserving pixel structure).

Example Workflows

All workflow PNGs below have the full ComfyUI workflow embedded β€” drag them directly into ComfyUI to load.

Qwen-Edit Hi-Res β€” Simple

A minimal editing workflow: loader β†’ LoRA β†’ edit node β†’ output. Quick to set up and great for getting started.

Qwen-Edit Hi-Res Simple workflow

Qwen-Edit Hi-Res β€” Advanced

A full-featured editing workflow with multi-stage generation, Spectrum acceleration, upscale VAE, and fine-grained stage controls.

Qwen-Edit Hi-Res Advanced workflow

Qwen-Image Hi-Res with ControlNet

Text-to-image generation guided by ControlNet (Canny, SoftEdge, Depth, or Pose) using the InstantX Union model, with multi-stage UltraGen upscaling.

Qwen-Image Hi-Res ControlNet workflow

Qwen-Image UltraGen Hi-Res (30 MP+)

Text-to-image generation without ControlNet using the UltraGen multi-stage pipeline. Produces 30 MP+ output with Spectrum acceleration and upscale VAE.

Qwen-Image UltraGen Hi-Res 30MP+ workflow

Qwen-Image UltraGen β€” Advanced

Advanced UltraGen workflow with Prompt Rewriter, selective sharpening, and several other features for high-quality text-to-image generation.

Qwen-Image UltraGen Advanced workflow

See the examples/ and workflows/ folders for additional workflow files and screenshots.

Example Prompts

  • "Change the background to a sunset over the ocean"
  • "Make the person smile"
  • "Add a red hat to the person"
  • "Change the car color from blue to red"
  • "Remove the text from the image"
  • "Make it look like a painting"
  • "Harmonise the pasted element with its surroundings" (inpaint transfer)
  • "Apply the watercolor style of Picture 1 to Picture 2" (style transfer)

Tips

  1. Start with lower max_mp (4–6) to test edits, then increase
  2. Use the lightning LoRA with 8 steps for fast iteration on edit nodes (50 steps without)
  3. Use negative prompts to avoid unwanted elements
  4. VAE tiling is automatic β€” no configuration needed
  5. Progress bars appear in ComfyUI during denoising on all edit and generation nodes
  6. Spectrum accelerator can cut generation time by 3–5Γ— with β‰₯15 steps (works with both edit and generation pipelines)
  7. For inpaint transfer, provide a transfer_mask to select exactly which part of the reference image to use. The node handles all scaling and positioning automatically.
  8. Delta Overlay is great for up-res workflows: edit at low resolution, upscale the original, then apply only the changed pixels at full resolution.
  9. Generation resolution presets let you quickly choose common aspect ratios without doing pixel math.
  10. Edit and generation pipelines are separate β€” you can load both simultaneously if you have enough VRAM.
  11. Increase max_sequence_length in UltraGen if you use very detailed prompts or the Prompt Rewriter node (see below).

Extended Prompt Token Length (max_sequence_length)

Most Qwen-Image ComfyUI workflows and the default diffusers pipeline hard-code the prompt token budget at 512 tokens. The UltraGen node exposes this as a configurable parameter (max_sequence_length, 128–1024) β€” a feature not available in other Qwen-Image nodes or workflows.

How it works: After the Qwen2.5-VL text encoder produces token embeddings from your prompt, the sequence is truncated to max_sequence_length before being fed to the transformer. If your prompt is shorter than the limit, the extra positions are zero-padded and ignored via the attention mask β€” so there is no quality penalty for setting it higher than needed.

ConsiderationImpact
Prompt fidelityHigher values preserve more detail from long prompts. At 512, prompts over ~200 words may be silently truncated.
Generation timeSlightly more cross-attention compute per step. Negligible for most prompts β€” the image latent sequence dominates.
VRAM~8 MB extra per batch item at 1024 vs 512 (trivial vs. the 38 GB transformer).
QualityNo degradation β€” unused positions are masked out.

Recommendation: Leave at 512 for typical prompts. Increase to 768–1024 when using the Prompt Rewriter node or manually writing very detailed descriptions (300+ words). The maximum is 1024 (hard limit in the model architecture).

Credits

  • Qwen-Image-Edit / Qwen-Image: Developed by Qwen Team (Alibaba)
  • Wan2.1-VAE-upscale2x: 2Γ— super-resolution VAE by spacepxl β€” model weights: Apache-2.0, reference code: MIT
  • Spectrum: Han et al., "Adaptive Spectral Feature Forecasting for Diffusion Sampling Acceleration" (CVPR 2026)
  • ComfyUI Nodes: Eric Hiss (GitHub: EricRollei)

License

Dual licensed: CC BY-NC 4.0 for non-commercial use, separate commercial license available. See LICENSE.txt for full terms.

Contact: [email protected] / [email protected]

50mp
comfy
comfyui-custom-node
custom-nodes
diffusers
firered
flowmatch
generative-ai
hires
iamge-edit
image-fusion
qwen-image
qwen-image-edit-2511
spectrum
workflow

EricRollei/Eric_Qwen_Edit_Experiments

Edit Images with Qwen at higher resolution (up to 17mp) and Generate up to 60mp

Python

22

28 commits

updated May 12, 2026

See the code

README

Eric Qwen-Edit & Qwen-Image Nodes

πŸ–ΌοΈ Up to 17 MP image editing Β· 50 MP+ text-to-image generation

ComfyUI custom nodes for Qwen-Image-Edit-2511 (image editing) and Qwen-Image-2512 (text-to-image generation) β€” 20-billion-parameter MMDiT models by Qwen (Alibaba).
30 nodes covering loading, single-image editing, multi-image fusion, style transfer, inpainting, inpaint-with-transfer, LoRA, Spectrum acceleration, delta overlay, mask utilities, text-to-image generation, multi-stage generation, prompt rewriting, 2Γ— VAE super-resolution upscaling, ControlNet-guided generation, and ControlNet inpainting (experimental).

8 MP image editing in just a few nodes Edit images at up to 16 MP resolution β€” just a loader, LoRA, and edit node.

Advanced Qwen-Edit worfflow up to 16mp Advanced Qwen-Edit workflow - just drop into ComfyUI - I use a lot of my own custom nodes which are all available but you can use the basic workflow too - just check the workflows folder

Features

  • Text-to-image generation β€” Generate images from text prompts using Qwen-Image-2512
  • Preserves input resolution β€” No forced upscaling to fill a pixel budget (edit nodes)
  • Configurable max_mp cap β€” Control maximum output size for VRAM safety
  • Resolution presets β€” Quick selection of common aspect ratios for generation
  • VAE tiling β€” Automatic high-resolution decode without OOM
  • Supports up to 16 MP β€” Edit or generate large images directly
  • True CFG β€” Two full transformer forward passes per step (conditional + unconditional)
  • Dual conditioning paths β€” VL path (~384 px semantic tokens via Qwen2.5-VL) + VAE/ref path (output-resolution pixel latents), individually controllable per image (edit nodes)
  • Multi-stage generation β€” Progressive upscale + re-denoise across up to 3 stages with per-stage control over steps, CFG, denoise, and sigma schedule
  • UltraGen β€” Quality-focused v2 multi-stage node with Qwen-Image-2512 best practices, per-stage seeds, sigma schedules, and upscale VAE integration
  • ControlNet-guided generation β€” UltraGen CN node with InstantX/Qwen-Image-ControlNet-Union for Canny, SoftEdge, Depth, and Pose guided generation up to 50 MP+, with auto-scaling CN strength
  • Spectrum acceleration β€” Training-free CVPR 2026 Chebyshev feature forecaster for ~3–5Γ— speedup (both edit and generation)
  • Prompt rewriting β€” Local or remote LLM-powered prompt enhancement via any OpenAI-compatible API (Ollama, LM Studio, DeepSeek, etc.)
  • LoRA support β€” Apply and unload LoRAs on both edit and generation pipelines with chainable weight control
  • 2Γ— VAE super-resolution β€” Optional Wan2.1-VAE-upscale2x integration for free 2Γ— upscale during VAE decode, with inter-stage and final-decode modes
  • Extended prompt token length β€” Configurable max_sequence_length (up to 1024 tokens) in UltraGen for highly detailed prompts β€” not exposed by other Qwen-Image nodes or workflows
  • Progress bars β€” Native ComfyUI progress display during denoising on every generation/edit node

What Makes This Different

Most ComfyUI Qwen nodes decompose the model into ComfyUI's generic UNET β†’ Scheduler β†’ Sampler graph. These nodes take a fundamentally different approach β€” running the real Hugging Face diffusers pipeline end-to-end, with targeted patches that unlock capabilities no other Qwen node set provides.

1. Native-resolution editing up to 17 MP

The stock diffusers QwenImageEditPlusPipeline forces all outputs to ~1 MP regardless of input size β€” a 12 MP photo gets crushed to 1 MP and fine details are lost. This node set patches the pipeline to preserve your input resolution (aligned to 32 px) up to a configurable cap (default 16 MP, supports 17 MP). No other ComfyUI Qwen-Edit implementation does this.

InputStock PipelineEric Qwen-Edit (max_mp=16)
2 MP1 MP output2 MP output
6 MP1 MP output6 MP output
20 MP1 MP output16 MP output (capped)

2. Real FlowMatch diffusers pipeline β€” not the UNET/KSampler abstraction

ComfyUI's native approach treats every diffusion model as a generic UNET with a separate sampler and scheduler. Users must manually add an "Aura Flow Shift" node and guess shift values. This loses model-specific details and produces inferior results.

These nodes call the FlowMatchEulerDiscreteScheduler pipeline directly, so every sigma shift, timestep, and conditioning step matches exactly what the model was trained with:

AspectComfyUI native (UNET + KSampler)Eric Qwen-Edit / Qwen-Image (diffusers)
Sigma shiftingManual β€” requires an extra "Aura Flow Shift" node with a user-chosen shift valueAutomatic β€” FlowMatchEulerDiscreteScheduler with use_dynamic_shifting reads parameters from the model config
Resolution-awareNo β€” fixed shift regardless of output sizeYes β€” time-shift ΞΌ is interpolated from the output resolution's latent sequence length
Shift formulaΞ±Β·t / (1 + (Ξ±-1)Β·t) with a single hand-tuned Ξ±Exponential: exp(ΞΌ) / (exp(ΞΌ) + (1/t - 1)) + terminal stretch, where ΞΌ adapts per resolution
Dual conditioningLost β€” UNET abstraction has no concept of separate VL + VAE/ref pathsPreserved β€” VL path (~384 px semantic tokens via Qwen2.5-VL) + VAE/ref path (output-resolution pixel latents), individually controllable per image
ConfigurationUser must wire shift nodes and pick valuesZero-config β€” parameters come from scheduler_config.json shipped with the model

You do not need any extra shift nodes with these nodes.

3. Spectrum acceleration β€” training-free 3–5Γ— speedup (CVPR 2026)

Implements adaptive spectral feature forecasting from a CVPR 2026 paper. Instead of running all transformer blocks on every denoising step, Spectrum predicts outputs on skipped steps using Chebyshev polynomial regression with Newton forward-difference blending. The flexible-window schedule caches more aggressively in later steps where changes are smaller. Applies to both edit and generation nodes. No other ComfyUI node set ships this.

4. Cross-architecture 2Γ— upscale VAE β€” 50 MP+ generation

Exploits a discovery that the Wan2.1 and Qwen-Image VAEs are architecturally identical (AutoencoderKLWan / AutoencoderKLQwenImage) and share the same latent space. This lets us use spacepxl's Wan2.1-VAE-upscale2x decoder on Qwen-Image latents for free 2Γ— super-resolution during VAE decode. Four modes:

ModeEffect
disabledStandard Qwen VAE decode
inter_stageDecode S2 at 2Γ— via upscale VAE, re-encode for S3 input
final_decodeReplace final VAE decode with 2Γ— upscale VAE
bothInter-stage + final decode β€” stacks for 4Γ— total (50+ MP output)

5. Extended prompt token length (max_sequence_length up to 1024)

The max_sequence_length parameter is buried inside the diffusers pipeline and hardcoded to 512 everywhere else. UltraGen exposes it with range 128–1024. Padding positions are masked out via attention masks, so there's zero quality penalty for setting it higher β€” only a negligible compute increase (~8 MB VRAM). Long, detailed prompts (~200 words) that would be silently truncated at 512 tokens now reach the model in full.

6. Built-in LLM prompt rewriting

A dedicated node that calls any OpenAI-compatible API (Ollama, LM Studio, DeepSeek, OpenAI) to auto-expand terse prompts into rich ~200-word descriptions following Qwen's own recommended prompt methodology. API keys are loaded securely from environment variables or api_keys.ini β€” never stored in the workflow JSON. Includes language selection (English/Chinese), temperature control, custom instructions, and a passthrough toggle for A/B testing.

7. Multi-stage progressive generation with per-stage control

Up to 3 stages of progressive upscale β†’ re-denoise, each with independent control over steps, CFG scale, denoise strength, sigma schedule (linear / balanced / karras), and seed mode (same_all_stages / offset_per_stage / random_per_stage). The UltraGen node combines all of this with tuned defaults that incorporate Qwen's official best practices β€” including the Chinese negative prompt that materially improves results.

8. True CFG with norm-preserving guidance

Two full transformer forward passes per step (conditional + unconditional) for genuine classifier-free guidance β€” not the approximations that single-pass "CFG-like" implementations use. UltraGen uses norm-preserving CFG rescaling that makes high CFG values (8–10) safe at low resolution for locking in composition, with lower CFG (2–4) at higher resolution stages for refinement.

9. Automatic VRAM management

Transformer is automatically offloaded to CPU before upscale VAE decode at every exit point. Tiled decode is used for large images. The pipeline manages device placement so you don't have to wire manual offload nodes.

10. Chainable LoRA with weight control

Apply multiple LoRAs in sequence with independent weight control (βˆ’2.0 to 2.0), and cleanly unload all LoRAs to restore the base model. Works on both edit and generation pipelines.

Installation

Option 1: ComfyUI Manager

Search for "Eric Qwen-Edit" in ComfyUI Manager.

Option 2: Manual

cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/Eric_Qwen_Edit_Experiments.git

Requirements


Nodes

Eric Qwen-Edit Load Model

Loads the Qwen-Image-Edit pipeline from a local directory.

ParameterTypeDefaultDescription
model_pathSTRINGβ€”Path to the Qwen-Image-Edit model directory
precisionCOMBObf16Weight precision: bf16 (recommended), fp16, fp32
deviceCOMBOcudaDevice: cuda, cuda:0, cuda:1, cpu
keep_in_vramBOOLEANTrueCache pipeline between runs to avoid reload
offload_vaeBOOLEANFalseMove VAE to CPU when not in use (saves ~1 GB)
attention_slicingBOOLEANFalseTrade speed for lower peak VRAM
sequential_offloadBOOLEANFalseExtreme VRAM savings via sequential CPU offload

Output: QWEN_EDIT_PIPELINE


Eric Qwen-Edit Component Loader

Advanced loader that lets you swap individual sub-models (transformer, VAE, or text encoder) from different directories. Useful for testing fine-tuned components without duplicating the full ~54 GB model.

Important β€” architecture constraints: Every component must be architecture-compatible with Qwen-Image-Edit. The text encoder is Qwen2.5-VL (Qwen2_5_VLForConditionalGeneration), not CLIP. You cannot plug in a Stable Diffusion UNet, a standard CLIP model, or an unrelated VAE. You can use different fine-tuned or quantised versions of the same Qwen-Image-Edit components.

base_pipeline_path is always required, even if you override all three components. The base path provides the scheduler config, tokenizer, and processor files that have no separate override.

What the base path must contain

The minimum viable base_pipeline_path folder needs these files (the small config/tokenizer files, not the large weights):

base_pipeline_path/
β”œβ”€β”€ model_index.json                 ← pipeline class mapping (required)
β”œβ”€β”€ scheduler/
β”‚   └── scheduler_config.json        ← FlowMatchEulerDiscreteScheduler config
β”œβ”€β”€ tokenizer/
β”‚   β”œβ”€β”€ vocab.json
β”‚   β”œβ”€β”€ merges.txt
β”‚   β”œβ”€β”€ tokenizer_config.json
β”‚   β”œβ”€β”€ added_tokens.json
β”‚   β”œβ”€β”€ special_tokens_map.json
β”‚   └── chat_template.jinja
└── processor/
    β”œβ”€β”€ tokenizer.json
    β”œβ”€β”€ preprocessor_config.json
    β”œβ”€β”€ video_preprocessor_config.json
    β”œβ”€β”€ vocab.json
    β”œβ”€β”€ merges.txt
    β”œβ”€β”€ tokenizer_config.json
    β”œβ”€β”€ added_tokens.json
    β”œβ”€β”€ special_tokens_map.json
    └── chat_template.jinja

If you don't override a component, its weights are also loaded from the base path.

Component folder structures

Each override path must contain a config.json plus the weight files for that component:

Transformer (~38 GB, QwenImageTransformer2DModel β€” 20B-parameter MMDiT):

transformer_path/
β”œβ”€β”€ config.json
β”œβ”€β”€ diffusion_pytorch_model.safetensors.index.json
β”œβ”€β”€ diffusion_pytorch_model-00001-of-00005.safetensors
β”œβ”€β”€ diffusion_pytorch_model-00002-of-00005.safetensors
β”œβ”€β”€ diffusion_pytorch_model-00003-of-00005.safetensors
β”œβ”€β”€ diffusion_pytorch_model-00004-of-00005.safetensors
└── diffusion_pytorch_model-00005-of-00005.safetensors

Also accepts: a parent folder with a transformer/ subfolder, or a single .safetensors file (loaded as state dict into the base architecture).

VAE (~0.24 GB, AutoencoderKLQwenImage):

vae_path/
β”œβ”€β”€ config.json
└── diffusion_pytorch_model.safetensors

Also accepts a parent folder with a vae/ subfolder.

Text Encoder (~15.5 GB, Qwen2_5_VLForConditionalGeneration β€” Qwen2.5-VL 7B):

text_encoder_path/
β”œβ”€β”€ config.json
β”œβ”€β”€ generation_config.json
β”œβ”€β”€ model.safetensors.index.json
β”œβ”€β”€ model-00001-of-00004.safetensors
β”œβ”€β”€ model-00002-of-00004.safetensors
β”œβ”€β”€ model-00003-of-00004.safetensors
└── model-00004-of-00004.safetensors

Also accepts a parent folder with a text_encoder/ subfolder.

Typical use cases

ScenarioWhat to set
Fine-tuned transformer onlybase_pipeline_path = full model, transformer_path = fine-tune dir
Quantised text encoderbase_pipeline_path = full model, text_encoder_path = quantised dir
Everything stockJust use the standard Load Model node instead

Node parameters

ParameterTypeDefaultDescription
base_pipeline_pathSTRINGβ€”Path to complete Qwen-Image-Edit model (always required β€” provides scheduler, tokenizer, processor, and defaults for unset components)
transformer_pathSTRING(empty)Optional override β€” transformer weights directory or single .safetensors file
vae_pathSTRING(empty)Optional override β€” VAE weights directory
text_encoder_pathSTRING(empty)Optional override β€” text encoder weights directory
precisionCOMBObf16bf16, fp16, fp32
deviceCOMBOcudacuda, cuda:0, cuda:1, cpu
keep_in_vramBOOLEANTrueCache between runs
offload_vaeBOOLEANFalseOffload VAE to CPU when idle
attention_slicingBOOLEANFalseAttention slicing for lower VRAM
sequential_offloadBOOLEANFalseSequential CPU offload

Output: QWEN_EDIT_PIPELINE

Note for ComfyUI users: The standard ComfyUI "Load Diffusion Model" / "Load CLIP" / "Load VAE" nodes produce ComfyUI-internal model wrappers and will not work with these nodes. Qwen-Image-Edit requires the diffusers from_pretrained loading path, which is what both the Load Model and Component Loader nodes provide.


Eric Qwen-Edit Unload

Free VRAM by unloading the pipeline. Connect after the last generation node.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINE(optional)Pipeline to unload
imagesIMAGE(optional)Passthrough β€” connect to trigger unload after generation

Output: status (STRING)


Eric Qwen-Edit Image

Edit a single image using a text prompt.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From any loader node
imageIMAGEβ€”Image to edit
promptSTRINGβ€”Describe the edit
negative_promptSTRING(empty)What to avoid
stepsINT8Inference steps (8 for lightning LoRA, 50 for base model)
true_cfg_scaleFLOAT4.0True CFG strength (1.0–20.0)
seedINT0Random seed
max_mpFLOAT8.0Maximum output megapixels (0.5–16.0)

Output: IMAGE


Eric Qwen-Edit Inpaint

Inpaint masked regions of an image. The model has no native mask input β€” this node blanks the masked area, lets the model regenerate it, then composites the result back onto the original with feathered blending.

Strategy: blank masked region β†’ model sees hole and prompt β†’ post-composite with Gaussian-feathered mask.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
imageIMAGEβ€”Image to inpaint
maskMASKβ€”White = inpaint, black = keep
promptSTRINGβ€”Describe what to generate in masked area
mask_modeCOMBOblank_whiteHow to blank the mask: blank_white, blank_gray, color_overlay
featherINT8Gaussian blur radius for mask edge blending
negative_promptSTRING(empty)What to avoid
stepsINT8Inference steps
true_cfg_scaleFLOAT4.0True CFG strength
seedINT0Random seed
max_mpFLOAT8.0Maximum output megapixels

Output: IMAGE


Eric Qwen-Edit Inpaint Transfer

Transfer content from a reference image into the masked region of the original. Combines pre-compositing, model harmonisation, and post-compositing for seamless results.

Strategy:

  1. Scale the transfer image (+ optional transfer mask) proportionally so the source region fits inside the target mask bounding box
  2. Pre-composite the transfer into the masked area β€” model sees content already in place
  3. Model harmonises lighting, color, and edges via the prompt
  4. Post-composite with feathered mask to preserve the original outside the mask
ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
imageIMAGEβ€”Original image (target)
maskMASKβ€”Target region (white = where to place transfer)
transfer_imageIMAGEβ€”Reference image containing the content to transfer
promptSTRINGβ€”Describe what you want (e.g. "harmonise the pasted element with its surroundings")
transfer_maskMASK(optional)Mark which part of the transfer image to use (white = keep). When provided, both masks' bounding boxes are used for proportional scaling.
transfer_vl_refBOOLEANTrueAlso send full transfer image as a VL semantic reference
blend_strengthFLOAT1.0Pre-composite alpha (0.0–1.0)
featherINT8Gaussian blur radius for post-composite blending
negative_promptSTRING(empty)What to avoid
stepsINT8Inference steps
true_cfg_scaleFLOAT4.0True CFG strength
seedINT0Random seed
max_mpFLOAT8.0Maximum output megapixels

Output: IMAGE


Eric Qwen-Edit Multi-Image Fusion

Combine 2–4 images with composition modes and per-image conditioning control over both the VL (semantic) and VAE/ref (pixel) paths.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
image_1 – image_4IMAGEβ€” (2 required)Input images (image_3, image_4 optional)
promptSTRINGβ€”Describe the desired composition
composition_modeCOMBOgroupgroup / scene / merge / raw
subject_labelSTRING(empty)Optional label for subject identification
main_imageCOMBOimage_1Which image seeds the output resolution and denoising
vae_target_sizeINT0VAE encoding resolution for ref images (0 = match output)
vl_1 – vl_4BOOLEANTrueInclude each image in the VL semantic path
ref_1BOOLEANTrueInclude image_1 in the VAE/ref pixel path
ref_2 – ref_4BOOLEANFalseInclude secondary images in VAE/ref path (default off β€” VL-only)
negative_promptSTRING(empty)What to avoid
stepsINT8Inference steps
true_cfg_scaleFLOAT4.0True CFG strength
seedINT0Random seed
max_mpFLOAT8.0Maximum output megapixels

Output: IMAGE


Eric Qwen-Edit Style Transfer

Apply the visual style of one image to the content of another, with fine-grained control over which aspects of style are transferred.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
style_imageIMAGEβ€”Reference providing the aesthetic
content_imageIMAGEβ€”Image to restyle
style_modeCOMBOfull_stylefull_style / color_palette / lighting / artistic_medium / texture / custom
custom_promptSTRING(empty)When non-empty, always overrides the style_mode template
additional_guidanceSTRING(empty)Extra instructions appended to the auto-generated prompt
style_strengthFLOAT1.0Scales CFG for stronger/weaker style (0.1–3.0)
vae_target_sizeINT1024VAE encoding resolution for style image
vl_styleBOOLEANTrueStyle image in VL semantic path
vl_contentBOOLEANTrueContent image in VL semantic path
ref_styleBOOLEANFalseStyle image in VAE/ref pixel path (off by default β€” avoids pixel bleed)
ref_contentBOOLEANTrueContent image in VAE/ref pixel path
negative_promptSTRING(empty)What to avoid
stepsINT8Inference steps
true_cfg_scaleFLOAT4.0True CFG strength
seedINT0Random seed
max_mpFLOAT8.0Maximum output megapixels

Output: IMAGE


Eric Qwen-Edit Spectrum Accelerator

Training-free diffusion acceleration based on the Spectrum method (CVPR 2026). Uses Chebyshev polynomial feature forecasting to skip redundant transformer forward passes, achieving ~3–5Γ— speedup with minimal quality loss.

Attach this node between the loader and any generation node. The config is stored on the pipeline and takes effect during the next denoising run. Automatically disabled when total steps < min_steps.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
enableBOOLEANTrueToggle acceleration on/off
warmup_stepsINT3Full-compute warm-up steps before forecasting begins
window_sizeINT2History window for Chebyshev polynomial fitting
flex_windowFLOAT0.75Fraction of remaining steps to recompute vs. forecast (0.0–1.0)
wFLOAT0.5Blend weight between forecast and previous features
lamFLOAT0.1Regularisation coefficient for the forecaster
MINT4Chebyshev polynomial degree
min_stepsINT15Spectrum auto-disables below this step count

Output: QWEN_EDIT_PIPELINE (same pipeline with spectrum config attached)


Eric Qwen-Edit LoRA

Load a LoRA adapter into the pipeline. Use the lightning LoRA for 8-step inference.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”From loader
lora_nameCOMBOβ€”Dropdown of .safetensors files in ComfyUI/models/loras/
weightFLOAT1.0LoRA scale (0.0–2.0)
lora_path_overrideSTRING(empty, optional)Full path to a LoRA file outside the standard loras folder

Output: QWEN_EDIT_PIPELINE


Eric Qwen-Edit Unload LoRA

Remove all LoRA adapters from the pipeline, restoring base weights.

ParameterTypeDefaultDescription
pipelineQWEN_EDIT_PIPELINEβ€”Pipeline with LoRA loaded

Output: QWEN_EDIT_PIPELINE


Eric Qwen-Edit Delta Overlay

Compare an edited image with the original, extract a change mask, and composite the edit onto the original only where changes occurred. Useful for upscaling an edit at full resolution and applying it precisely.

ParameterTypeDefaultDescription
original_imageIMAGEβ€”Original (before edit)
edited_imageIMAGEβ€”Edited (after edit) β€” may be a different resolution
thresholdFLOAT0.05Minimum per-pixel difference to count as a change (0.0–1.0)
blur_radiusINT5Gaussian blur on the change mask for softer edges
expand_maskINT3Dilate the mask by this many pixels
upscale_methodCOMBOlanczosResampling method when resizing: lanczos, bicubic, bilinear, nearest
input_maskMASK(optional)If provided, intersected with the auto-detected change mask

Outputs:

NameTypeDescription
compositeIMAGEOriginal with edit applied only where changes were detected
change_maskMASKBinary mask of detected changes
upscaled_editIMAGEEdited image resized to match original resolution

Eric Qwen-Edit Apply Mask

Simple mask-based compositing utility. Blends a foreground and background image using a mask.

ParameterTypeDefaultDescription
foregroundIMAGEβ€”Image shown in white areas of the mask
backgroundIMAGEβ€”Image shown in black areas of the mask
maskMASKβ€”Blend mask: white = foreground, black = background
blur_maskINT0(optional) Additional Gaussian blur on the mask (0–50)

Output: IMAGE


Qwen-Image Generation Nodes

These nodes use Qwen-Image / Qwen-Image-2512 for text-to-image generation. They share the same 20B MMDiT transformer and VAE architecture as the edit model, but take only text input β€” no source image required.

Generation nodes use a separate pipeline type (QWEN_IMAGE_PIPELINE) that is not interchangeable with the edit pipeline (QWEN_EDIT_PIPELINE). You need separate loader nodes for each.

Eric Qwen-Image Load Model

Loads the Qwen-Image-2512 (or Qwen-Image) text-to-image pipeline.

ParameterTypeDefaultDescription
model_pathSTRINGβ€”Path to the Qwen-Image model directory
precisionCOMBObf16Weight precision: bf16 (recommended), fp16, fp32
deviceCOMBOcudaDevice: cuda, cuda:0, cuda:1, cpu
keep_in_vramBOOLEANTrueCache pipeline between runs
offload_vaeBOOLEANFalseMove VAE to CPU when not in use
attention_slicingBOOLEANFalseTrade speed for lower peak VRAM
sequential_offloadBOOLEANFalseSequential CPU offload for extreme VRAM savings

Output: QWEN_IMAGE_PIPELINE


Eric Qwen-Image Component Loader

Advanced loader that lets you swap individual sub-models (transformer, VAE, or text encoder) from different directories.

The generation pipeline has no processor component (unlike the edit pipeline). The base path must provide model_index.json, scheduler/, and tokenizer/.

ParameterTypeDefaultDescription
base_pipeline_pathSTRINGβ€”Path to complete Qwen-Image model (always required)
transformer_pathSTRING(empty)Optional override β€” transformer weights directory or .safetensors
vae_pathSTRING(empty)Optional override β€” VAE weights directory
text_encoder_pathSTRING(empty)Optional override β€” text encoder weights directory
precisionCOMBObf16bf16, fp16, fp32
deviceCOMBOcudacuda, cuda:0, cuda:1, cpu
keep_in_vramBOOLEANTrueCache between runs
offload_vaeBOOLEANFalseOffload VAE to CPU when idle
attention_slicingBOOLEANFalseAttention slicing for lower VRAM
sequential_offloadBOOLEANFalseSequential CPU offload

Output: QWEN_IMAGE_PIPELINE


Eric Qwen-Image Generate

Generate images from text prompts. Choose a resolution preset or set custom dimensions.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”From any generation loader node
promptSTRINGβ€”Describe the image to generate
negative_promptSTRING(empty)What to avoid
resolutionCOMBO1024Γ—1024 (1:1)Resolution preset (9 common aspect ratios, or "custom")
widthINT1024Custom width β€” only used when resolution = "custom"
heightINT1024Custom height β€” only used when resolution = "custom"
stepsINT50Inference steps
true_cfg_scaleFLOAT4.0True CFG strength (>1 enables dual forward passes)
seedINT0Random seed (0 = random)
max_mpFLOAT1.0Maximum output megapixels

Resolution presets available: 1024Γ—1024 (1:1), 1152Γ—896 (9:7), 896Γ—1152 (7:9), 1216Γ—832 (19:13), 832Γ—1216 (13:19), 1344Γ—768 (7:4), 768Γ—1344 (4:7), 1536Γ—640 (12:5), 640Γ—1536 (5:12), custom

Output: IMAGE


Eric Qwen-Image Unload

Free VRAM by unloading the generation pipeline.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINE(optional)Pipeline to unload
imagesIMAGE(optional)Passthrough β€” connect to trigger unload after generation

Output: status (STRING)


Eric Qwen-Image Apply LoRA

Apply a LoRA to the Qwen-Image generation pipeline. Loads LoRA weights onto the transformer. Multiple Apply LoRA nodes can be chained to stack several LoRAs with different weights. LoRAs are loaded from ComfyUI/models/loras/.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”From any generation loader node
lora_nameCOMBOβ€”Select LoRA from ComfyUI/models/loras/
weightFLOAT1.0LoRA weight strength (βˆ’2.0 to 2.0, step 0.05). 1.0 = full, 0.5 = half
lora_path_overrideSTRING(empty)Optional: custom path override (leave empty to use dropdown)

Output: QWEN_IMAGE_PIPELINE


Eric Qwen-Image Unload LoRA

Unload all LoRAs from the Qwen-Image generation pipeline. Use to reset the model to its base state before applying different LoRAs, or to free memory.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”Pipeline with LoRAs to unload

Output: QWEN_IMAGE_PIPELINE


Eric Qwen-Image Multi-Stage Generate

Progressive multi-stage text-to-image generation with full per-stage control. Up to 3 stages with independent steps, CFG, resolution, and denoise settings. Latents are upscaled between stages via bislerp and re-noised according to the per-stage denoise strength before re-sampling.

  • Set upscale_to_stage2 = 0 β†’ output Stage 1 only (single-stage).
  • Set upscale_to_stage3 = 0 β†’ stop after Stage 2 (two-stage).
ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”From any generation loader node
promptSTRINGβ€”Describe the image you want to generate
negative_promptSTRING(empty)What to avoid in the output
aspect_ratioCOMBO1:1 SquareAspect ratio applied at every stage
seedINT0Random seed (0 = random)
Stage 1
s1_mpFLOAT0.5Stage 1 resolution in megapixels (0.3–2.0)
s1_stepsINT15Stage 1 inference steps (txt2img from noise)
s1_cfgFLOAT8.0Stage 1 true CFG scale
Stage 2
upscale_to_stage2FLOAT2.0Upscale factor (area) S1β†’S2. 0 = skip S2 & S3, output S1
s2_stepsINT20Stage 2 inference steps
s2_cfgFLOAT4.0Stage 2 true CFG scale
s2_denoiseFLOAT1.0Stage 2 denoise (1.0 = full, lower preserves prior detail)
Stage 3
upscale_to_stage3FLOAT2.0Upscale factor (area) S2β†’S3. 0 = skip S3, output S2
s3_stepsINT15Stage 3 inference steps
s3_cfgFLOAT2.0Stage 3 true CFG scale
s3_denoiseFLOAT1.0Stage 3 denoise

Output: IMAGE


Eric Qwen-Image UltraGen

Quality-focused multi-stage text-to-image generation (v2). Incorporates all Qwen-Image-2512 best practices: official Chinese negative prompt as default, max_sequence_length up to 1024 for detailed prompts, Spectrum acceleration on Stage 1, tuned defaults (0.5 MP s1 β†’ 4Γ— upscale β†’ 26-step s2 refinement), per-stage seed modes, sigma schedule selection, and optional upscale VAE for 2Γ— super-resolution decode.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”From any generation loader node
promptSTRINGβ€”Describe the image. For best results ~200 words. Connect Prompt Rewriter to auto-enhance.
negative_promptSTRING(official Chinese default)Official Qwen-Image-2512 negative prompt
aspect_ratioCOMBO1:1 SquareAspect ratio applied at every stage
seedINT0Random seed (0 = random)
seed_modeCOMBOoffset_per_stagesame_all_stages, offset_per_stage (S2=seed+1, S3=seed+2), or random_per_stage
max_sequence_lengthINT1024Max prompt token length (128–1024, step 64). Full capacity by default.
Stage 1
s1_mpFLOAT0.5Stage 1 resolution in megapixels
s1_stepsINT15Stage 1 inference steps
s1_cfgFLOAT10.0Stage 1 true CFG. High CFG at low res locks in composition.
Stage 2
upscale_to_stage2FLOAT4.0Upscale factor (area) S1β†’S2. 0 = skip S2 & S3.
s2_stepsINT26Stage 2 inference steps (main refinement)
s2_cfgFLOAT4.0Stage 2 true CFG (matches official recommendation)
s2_denoiseFLOAT0.85Stage 2 denoise
s2_sigma_scheduleCOMBOlinearlinear, balanced (Karras ρ=3), or karras (Karras ρ=7)
Stage 3
upscale_to_stage3FLOAT2.0Upscale factor (area) S2β†’S3. 0 = disabled.
s3_stepsINT18Stage 3 inference steps
s3_cfgFLOAT2.0Stage 3 true CFG
s3_denoiseFLOAT0.45Stage 3 denoise (0.3–0.5 recommended for final polish)
s3_sigma_scheduleCOMBOkarrasSigma schedule for S3 (karras recommended for fine micro-texture)
Upscale VAE
upscale_vaeUPSCALE_VAE(optional)From Eric Qwen Upscale VAE Loader
upscale_vae_modeCOMBObothdisabled, inter_stage, final_decode, or both (see Upscale VAE section below)

Output: IMAGE


Eric Qwen-Image ControlNet Loader

Loads an InstantX Qwen-Image ControlNet model. Supports both the Union model (Canny, SoftEdge, Depth, Pose) and the Inpainting model. The model is kept on CPU and moved to GPU automatically when called by UltraGen CN or UltraGen Inpaint CN.

ParameterTypeDefaultDescription
model_pathSTRINGInstantX/Qwen-Image-ControlNet-UnionHuggingFace model ID or local path
dtypeCOMBObfloat16Model precision: bfloat16, float16, float32

Output: QWEN_IMAGE_CONTROLNET

Models:


Eric Qwen-Image UltraGen CN

ControlNet-guided multi-stage text-to-image generation. Same architecture as UltraGen but uses the InstantX/Qwen-Image-ControlNet-Union model on Stage 1 (and optionally Stage 2) to guide composition and structure from a control image. Supports Canny edge maps, SoftEdge/HED, depth maps, and OpenPose skeletons. Output up to 50 MP+ with upscale VAE.

Includes ControlNet auto-scaling that calibrates CN signal magnitude to match the transformer's hidden states, so the same cn_target_strength value works across different fine-tuned transformers without manual scale hunting.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”From any generation loader node
controlnetQWEN_IMAGE_CONTROLNETβ€”From the ControlNet Loader
control_imageIMAGEβ€”Control image (Canny, depth, pose, or soft edge map)
cn_typeCOMBOcannyControlNet type: canny, soft_edge, depth, pose
promptSTRINGβ€”Describe the image
negative_promptSTRING(official default)Negative prompt
ControlNet
cn_auto_scaleBOOLEANTrueAuto-calibrate CN strength to transformer magnitude
cn_target_strengthFLOAT1.0CN influence (1.0 = standard, higher = stronger guidance)
controlnet_conditioning_scaleFLOAT1.0Manual CN scale (when auto-scale OFF)
control_guidance_startFLOAT0.0When CN guidance begins (fraction of steps)
control_guidance_endFLOAT1.0When CN guidance ends
S2 ControlNet
s2_cn_scaleFLOAT1.0CN strength on Stage 2 (0 = disable CN for S2)
s2_cn_startFLOAT0.0S2 CN guidance start
s2_cn_endFLOAT1.0S2 CN guidance end
Stages(Same stage parameters as UltraGen β€” s1_mp, s1_steps, s1_cfg, upscale_to_stage2, s2_steps, etc.)
Upscale VAE(Same upscale VAE parameters as UltraGen)

Output: IMAGE


Eric Qwen-Image Spectrum Accelerator

Training-free diffusion sampling speedup using adaptive spectral feature forecasting (CVPR 2026). Predicts transformer outputs on skipped steps via Chebyshev polynomial regression instead of running all transformer blocks. Best for β‰₯20 inference steps and true CFG runs (2Γ— transformer passes per step β†’ double the savings). Wire between the Image Loader and any generation node.

ParameterTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEβ€”Pipeline to accelerate
enableBOOLEANTrueEnable/disable Spectrum acceleration
warmup_stepsINT3Initial denoising steps that always run the full transformer (2–4 recommended)
window_sizeINT2Base period between actual transformer evaluations. 2 = every other step cached.
flex_windowFLOAT0.75Window growth rate. Later steps change less, so larger windows are safe. 0 = fixed window.
wFLOAT0.5Blend between Chebyshev predictor (1.0) and Newton forward-difference predictor (0.0)
lamFLOAT0.1Ridge regularization for Chebyshev regression. Higher = smoother predictions.
MINT4Chebyshev polynomial degree (1–8). Higher captures complex trajectories but risks overfitting.
min_stepsINT15Auto-disable when num_inference_steps < this (low step counts don't benefit)

Output: QWEN_IMAGE_PIPELINE


Eric Qwen Prompt Rewriter

Enhance image prompts using a local or remote LLM. Rewrites terse prompts into rich ~200-word descriptions following Qwen-Image-2512 recommended methodology. Connects to any OpenAI-compatible API (Ollama, LM Studio, DeepSeek, OpenAI, etc.). API keys are loaded securely from environment variables or api_keys.ini β€” never stored in the workflow file. Output connects to the prompt input of any generation node.

ParameterTypeDefaultDescription
promptSTRINGβ€”Original image description to enhance
api_urlSTRINGhttp://localhost:11434/v1OpenAI-compatible API base URL
modelSTRINGqwen3:8bModel name on the API server
languageCOMBOEnglishLanguage for the rewritten prompt (English or Chinese)
temperatureFLOAT0.7LLM temperature β€” lower = more faithful, higher = more creative
max_tokensINT2048Max tokens for LLM response
custom_instructionsSTRING(empty)Additional instructions appended to the system prompt
lora_triggersSTRING(empty)LoRA trigger words/phrases, one per line or comma-separated
trigger_modeCOMBOoffHow to apply trigger words: incorporate, prepend, append, or off
passthroughBOOLEANFalseSkip rewriting and pass prompt through unchanged (for A/B testing)

Output: enhanced_prompt (STRING)

LoRA Trigger Words

Many LoRAs require specific trigger words or phrases in the prompt to activate their trained style or concept. The lora_triggers and trigger_mode inputs let you inject these automatically:

ModeBehavior
offTrigger words are ignored
incorporateThe LLM is instructed to weave the trigger words verbatim into the rewritten prompt naturally. Falls back to prepend when passthrough is enabled (no LLM call).
prependTrigger words are prepended to the prompt (before the rewritten text). Works even in passthrough mode.
appendTrigger words are appended to the prompt (after the rewritten text). Works even in passthrough mode.

Usage: Enter one trigger per line, or separate with commas. For example:

ohwx woman
cinematic lighting
film grain

When using incorporate mode, the LLM receives an additional system instruction requiring the trigger words to appear verbatim in the output, so they blend naturally into the description rather than being awkwardly tacked on.


⚠️ Experimental: ControlNet Inpainting Nodes

Motivation: Qwen-Image-Edit redraws the entire image on every edit, which progressively degrades areas outside the edit region β€” fine details, textures, and sharpness are lost across the whole canvas. A true inpainting pipeline would regenerate only the masked region while leaving the rest of the image completely untouched, preserving full original quality. That is the goal of these ControlNet inpainting nodes.

Status: Experimental β€” not fully working. These nodes are functional but produce visible halos and ghosting artifacts from double-sampling at mask boundaries. The multi-stage pipeline generates the full image from noise while the ControlNet conditions on the masked source, but compositing the result back onto the original creates noticeable seams that the harmonization pass has not yet fully resolved. We believe techniques from the Qwen-Edit inpaint nodes (which use a fundamentally different conditioning approach) may help, but this has not been explored yet.

Alternative: The Eric Qwen-Edit Inpaint node provides a separate experimental approach to masked inpainting using the Qwen-Image-Edit model. It blanks out the masked region before sending the image through both the VL and VAE encoders, then composites the generated output back onto the original using the mask with edge feathering. This approach currently produces better results than the ControlNet inpainting nodes, though it still relies on Qwen-Edit (which reprocesses the full image internally) and is itself experimental.

These nodes are included for experimentation.

Eric Qwen-Image UltraGen Inpaint CN

ControlNet-guided multi-stage inpainting and outpainting using the InstantX/Qwen-Image-ControlNet-Inpainting model. Uses QwenImageControlNetInpaintPipeline with 17-channel conditioning (16ch VAE-encoded masked image + 1ch mask). Supports object replacement, background replacement, text modification, and outpainting.

Architecture: Up to 3 stages β€” S1 (CN draft), S2A (CN refine + dilated mask), S2B (whole-image harmonize, no CN), S3 (polish upscale, no CN). Smart stage selection (auto_stages) skips S1 when input is already large enough. Final feathered composite preserves original pixels outside the mask.

Known issues:

  • Halo artifacts at mask boundaries due to double-sampling
  • Ghosting where generated content overlaps original pixels
  • Harmonization pass (S2B) reduces but does not eliminate boundary artifacts

Eric Qwen Inpaint Prompt Rewriter

VLM-powered prompt rewriter for inpainting. Analyzes the source image and mask to generate short, change-focused prompts (40–80 words) describing the desired edit. Uses mask outline overlay for spatial awareness.

Eric Qwen ControlNet Prompt Rewriter

VLM-powered prompt rewriter for ControlNet-guided generation. Generates full scene descriptions (200–400 words) with CN-type awareness (Canny, SoftEdge, Depth, Pose). Outputs both the prompt and a cn_type_index integer.


2Γ— Upscale VAE (Super-Resolution Decode)

The Wan2.1-VAE-upscale2x by spacepxl is a decoder-only finetune of the Wan2.1 VAE that outputs 12 channels instead of 3. After decode, pixel_shuffle(12β†’3, 2Γ—) produces a 2Γ— upscaled image β€” effectively free super-resolution during VAE decode with no extra diffusion steps.

The Wan2.1 and Qwen-Image VAEs are architecturally identical (AutoencoderKLWan / AutoencoderKLQwenImage) and share the same latent space, so the upscale VAE works directly with Qwen-Image latents.

How it works

  1. Load the upscale VAE with the Eric Qwen Upscale VAE Loader node
  2. Connect it to the upscale_vae input on the Eric Qwen-Image UltraGen node
  3. Choose a mode via the upscale_vae_mode dropdown

Upscale VAE Modes

ModeDescription
disabledUpscale VAE ignored even if connected (safe default)
inter_stageDecode S2 latents at 2× via the upscale VAE, re-encode back to latents, and feed the 2× canvas to S3. Replaces the bislerp inter-stage upscale with a higher-quality decode→2×→re-encode round trip. Requires 3 active stages.
final_decodeReplace the final stage's normal VAE decode with the 2Γ— upscale decode. The output image is 2Γ— the resolution of the final denoising stage.
bothInter-stage S2β†’S3 and 2Γ— final decode. These stack: S3 runs on a 2Γ— canvas from inter-stage, then the output gets another 2Γ— from final decode = 4Γ— total vs. S2.

VRAM Management

The upscale VAE is kept on CPU until needed. Before decode, the diffusion transformer is automatically offloaded to CPU to free VRAM. For large images, tiled VAE decoding is automatically enabled when latent spatial dimensions exceed 128 (roughly β‰₯1024 px per side before the 2Γ— upscale).

Typical workflow

[Qwen-Image Loader] β†’ [LoRA] β†’ [Spectrum] β†’ [Upscale VAE Loader] β†’ [UltraGen]
                                                     ↑                    ↑
                                              upscale_vae ──────── upscale_vae
                                                              upscale_vae_mode = final_decode

Eric Qwen Upscale VAE Loader

Load the Wan2.1 2Γ— upscale VAE. The model is kept on CPU until decode is requested.

ParameterTypeDefaultDescription
model_pathSTRINGspacepxl/Wan2.1-VAE-upscale2xHuggingFace model ID or local path
subfolderSTRINGdiffusers/Wan2.1_VAE_upscale2x_imageonly_real_v1Subfolder within the repo containing config.json + weights. Leave blank if model_path already points to the correct directory.
dtypeCOMBObfloat16Model precision: bfloat16 (recommended), float16, float32

Output: UPSCALE_VAE

The first run downloads the model from HuggingFace (~0.5 GB). Subsequent runs load from the local HuggingFace cache. You can also download the model manually and point model_path to the local directory.

Model source: spacepxl/Wan2.1-VAE-upscale2x β€” a decoder-only finetune of the Wan2.1 VAE by spacepxl. The specific subfolder used is diffusers/Wan2.1_VAE_upscale2x_imageonly_real_v1 (image-only variant, trained on real images).


Architecture Notes

Qwen-Image-Edit-2511 uses a dual conditioning path:

  1. VL path β€” Each input image is processed by the built-in Qwen2.5-VL vision-language encoder at ~384 px to produce semantic token embeddings. These tell the model what is in each image.
  2. VAE/ref path β€” Each input image is VAE-encoded at output resolution to produce pixel-level latents. These tell the model how to render the pixels.

Most multi-image nodes expose per-image vl_* and ref_* toggles so you can control which path each image participates in. For example, in Style Transfer, the style image defaults to VL-only (semantic style cues) while the content image defaults to both VL + ref (preserving pixel structure).

Example Workflows

All workflow PNGs below have the full ComfyUI workflow embedded β€” drag them directly into ComfyUI to load.

Qwen-Edit Hi-Res β€” Simple

A minimal editing workflow: loader β†’ LoRA β†’ edit node β†’ output. Quick to set up and great for getting started.

Qwen-Edit Hi-Res Simple workflow

Qwen-Edit Hi-Res β€” Advanced

A full-featured editing workflow with multi-stage generation, Spectrum acceleration, upscale VAE, and fine-grained stage controls.

Qwen-Edit Hi-Res Advanced workflow

Qwen-Image Hi-Res with ControlNet

Text-to-image generation guided by ControlNet (Canny, SoftEdge, Depth, or Pose) using the InstantX Union model, with multi-stage UltraGen upscaling.

Qwen-Image Hi-Res ControlNet workflow

Qwen-Image UltraGen Hi-Res (30 MP+)

Text-to-image generation without ControlNet using the UltraGen multi-stage pipeline. Produces 30 MP+ output with Spectrum acceleration and upscale VAE.

Qwen-Image UltraGen Hi-Res 30MP+ workflow

Qwen-Image UltraGen β€” Advanced

Advanced UltraGen workflow with Prompt Rewriter, selective sharpening, and several other features for high-quality text-to-image generation.

Qwen-Image UltraGen Advanced workflow

See the examples/ and workflows/ folders for additional workflow files and screenshots.

Example Prompts

  • "Change the background to a sunset over the ocean"
  • "Make the person smile"
  • "Add a red hat to the person"
  • "Change the car color from blue to red"
  • "Remove the text from the image"
  • "Make it look like a painting"
  • "Harmonise the pasted element with its surroundings" (inpaint transfer)
  • "Apply the watercolor style of Picture 1 to Picture 2" (style transfer)

Tips

  1. Start with lower max_mp (4–6) to test edits, then increase
  2. Use the lightning LoRA with 8 steps for fast iteration on edit nodes (50 steps without)
  3. Use negative prompts to avoid unwanted elements
  4. VAE tiling is automatic β€” no configuration needed
  5. Progress bars appear in ComfyUI during denoising on all edit and generation nodes
  6. Spectrum accelerator can cut generation time by 3–5Γ— with β‰₯15 steps (works with both edit and generation pipelines)
  7. For inpaint transfer, provide a transfer_mask to select exactly which part of the reference image to use. The node handles all scaling and positioning automatically.
  8. Delta Overlay is great for up-res workflows: edit at low resolution, upscale the original, then apply only the changed pixels at full resolution.
  9. Generation resolution presets let you quickly choose common aspect ratios without doing pixel math.
  10. Edit and generation pipelines are separate β€” you can load both simultaneously if you have enough VRAM.
  11. Increase max_sequence_length in UltraGen if you use very detailed prompts or the Prompt Rewriter node (see below).

Extended Prompt Token Length (max_sequence_length)

Most Qwen-Image ComfyUI workflows and the default diffusers pipeline hard-code the prompt token budget at 512 tokens. The UltraGen node exposes this as a configurable parameter (max_sequence_length, 128–1024) β€” a feature not available in other Qwen-Image nodes or workflows.

How it works: After the Qwen2.5-VL text encoder produces token embeddings from your prompt, the sequence is truncated to max_sequence_length before being fed to the transformer. If your prompt is shorter than the limit, the extra positions are zero-padded and ignored via the attention mask β€” so there is no quality penalty for setting it higher than needed.

ConsiderationImpact
Prompt fidelityHigher values preserve more detail from long prompts. At 512, prompts over ~200 words may be silently truncated.
Generation timeSlightly more cross-attention compute per step. Negligible for most prompts β€” the image latent sequence dominates.
VRAM~8 MB extra per batch item at 1024 vs 512 (trivial vs. the 38 GB transformer).
QualityNo degradation β€” unused positions are masked out.

Recommendation: Leave at 512 for typical prompts. Increase to 768–1024 when using the Prompt Rewriter node or manually writing very detailed descriptions (300+ words). The maximum is 1024 (hard limit in the model architecture).

Credits

  • Qwen-Image-Edit / Qwen-Image: Developed by Qwen Team (Alibaba)
  • Wan2.1-VAE-upscale2x: 2Γ— super-resolution VAE by spacepxl β€” model weights: Apache-2.0, reference code: MIT
  • Spectrum: Han et al., "Adaptive Spectral Feature Forecasting for Diffusion Sampling Acceleration" (CVPR 2026)
  • ComfyUI Nodes: Eric Hiss (GitHub: EricRollei)

License

Dual licensed: CC BY-NC 4.0 for non-commercial use, separate commercial license available. See LICENSE.txt for full terms.

Contact: [email protected] / [email protected]

50mp
comfy
comfyui-custom-node
custom-nodes
diffusers
firered
flowmatch
generative-ai
hires
iamge-edit
image-fusion
qwen-image
qwen-image-edit-2511
spectrum
workflow