Dev.to · 9 min read

Qwen Image 2.1: Four Different Control, Turbo, and Detail-Fix Experiments

Qwen Image 2.1: Four Different Control, Turbo, and Detail-Fix Experiments

“75 settings,” “nine-in-one,” and “11 comparisons” describe different things in this collection. The first is a parameter grid. The second is a set of independent pipelines. The third is a collection of paired examples. None of those labels establishes that the files have just been executed, timed, or accepted for quality. The source folder contains five JSON files covering four purposes. Files 03 and 05 are versions of the same Turbo comparison graph, not two independent capabilities. Across the five files there are 1,201 node records, including the repeated variant; this is not one 1,201-node inference graph. This walkthrough uses the actual exports. The creator's transcript describes acceleration and favorable comparisons, but no new inference, timing measurement, or quality benchmark was performed for this article. Files and asset differences File code Purpose Nodes 01 Depth-control parameter grid 316 02 Eight structural-control routes plus Mask 265 03 Eleven Base/Turbo comparison pairs 290 04 Baseline versus detail-fix LoRA 39 05 Alternate export of the Turbo comparison 291 Files 01, 03, 04, and 05 reference Qwen-Image_2.1.safetensors and qwen3vl_8b_int8_convrot.safetensors. File 02 instead references qwen_image_2.1_bf16.safetensors and qwen3vl_8b_fp8_scaled.safetensors. All reference qwen_image_2.1_vae_bf16.safetensors. The control experiments use Qwen-Image-2.1-Fun-Controlnet-Union-ComfyUI.safetensors. The Turbo paths add qwen_image_2.1_turbo_lora_avg_rank_178_bf16.safetensors; the Fix graph selects qwen2.1-detail-fix-opinionated-v1.0.safetensors. Treat these as filename references, not bundled weights or proof of compatibility, quantization implementation, ownership, or licensing. Resolve the specific graph's dependencies instead of assuming that all five exports use an interchangeable asset set. 01 — The Depth grid is three sets of 25 previews This graph contains 75 QwenImage21UnionApply branches. The author's labels organize the stored recipes as three START values—0, 0.25, and 0.5—crossed with five END values from 0.6 through 1.0 and five WEIGHT values from 0.2 through 1.0. That gives 3 × 5 × 5 = 75 combinations. The arrays are positional; for example, the first Apply node stores ["Depth", 0.2, 0, 0.6]. The axis names come from the source labels. They are not a substitute for confirming the custom node's implementation and effective schedule. The layout comprises three sets of 5×5 preview positions. There is no grid-compositor node and no SaveImage node. Do not describe the graph as automatically saving a 75-cell contact sheet. Follow the shared inputs Image node 1 feeds depth preprocessor 3, which selects depth_anything_v2_vitb.pth and stores a 1024 scalar. The depth output feeds all 75 control-image inputs and QwenImage21UnionLatentFromImage at node 10. That node supplies the latent used by every sampler. The baseline sampler bypasses Union application but still uses the same latent-producing path from the depth image. It is therefore not safe to describe it as wholly independent of that input geometry. The custom latent node's exact behavior has not been independently inspected here. There are 76 samplers and decoders including the baseline, plus 78 preview nodes including source and depth previews. All samplers store the same raw array, and source labels describe a Seed9527/Euler25/CFG3.5 setup. Those labels do not prove identical execution behavior or a completed controlled experiment. Before running Select an authorized source image, inspect the depth preview, and choose a small, understood subset of branches in a separate working copy before committing to a large experiment. Do not assume only one cell executes merely because one preview is visible. Record the actual outputs and effective settings. There are no named width/height controls in this export. Raw 1024 scalars do not establish a fixed 1024×1024 result. The axis-label text nodes are disconnected labels, not live parameter controls. 02 — Nine independent pipelines, not stacked ControlNets This file contains Canny, Depth, HED, Lineart, MLSD, Pose, Scribble, Grayscale, and Mask routes. They are separate generation pipelines with their own inputs and outputs, not a sequence applying all controls to one image. The Canny, Depth, HED, and Lineart branches are saved in mode 4. The other five branches are in mode 0. Inspect the enabled routes and matching node behavior before assuming all nine will execute. The first seven structural routes resize their source, downscale for preprocessing, run their selected AIO preprocessor, and resize the control image. Their preprocessors include CannyEdge, MiDaS depth, HED, LineArt, M-LSD, DW pose, and Scribble. This Depth route is not the same preprocessor configuration as the separate grid in file 01. Read settings rather than stale titles The Depth, MLSD, and Pose Apply nodes have titles describing 0.4 / 0.25 / 0.8, but their stored arrays contain 0.8 / 0 / 0.8 after the type label. Other branch values also differ. Do not copy one title into a universal configuration table. The linked dimension expressions use source dimensions, a roughly four-million-pixel target, a longest-side factor, and rounding to multiples of 32. They override the stored 2048×2048 latent defaults. “4MP” in a prefix does not establish an exact area or a fixed square output. Each Turbo path uses a manual sigma list with nine entries, hence eight intervals. That arithmetic is not a wall-clock speed measurement or a guarantee about internal model-call counts. Know which image reaches the LLM The first seven structural branches send their resized source image to an RH LLM node. The Grayscale branch sends the original source image, not its grayscale control image. The returned text passes through concatenation into the text encoder. The encoder reference-image inputs are unlinked in those routes. The source image contributes through structural control and visual-description generation, not through a directly connected reference-image input at that encoder. These nodes store google/gemini-3.1-flash-lite-preview. Confirm the actual service setup, authorization to transmit the images, and potential fees before queueing. Cached display text does not prove a new API response, and this review made no such requests. The Mask route is a separate case The Mask branch has no RH LLM path. Source node 385 supplies an image and mask. The image is resized; the mask passes through image conversion, nearest-exact resizing, and red-channel conversion. The resulting mask and resized image enter Union node 388 through mask and inpaint_image. Although that node stores the label Grayscale, its control_image input is unlinked. Calling it another grayscale-control branch would ignore its actual inputs. The sampler receives an empty latent. After decoding, ImageCompositeMasked combines the generated image with the resized source using the mask, and that composite reaches preview and save nodes. This is not evidence of a conventional source-encoded masked-latent path, nor a guarantee that every original pixel outside the edit remains untouched. Inspect mask orientation, dimensions, and the final composite after a real run. 03 / 05 — Eleven paired examples with two export versions Both files contain eleven baseline samplers, eleven Turbo custom samplers, twenty-two decoders, twenty-two previews, and eleven comparers. The first five pairs use text-only inputs and empty latents. The next three pairs connect two reference images each; the final three connect three each. The image-conditioned pairs use latent output from their text/image encoder. They are not eleven interchangeable text-to-image tests. Within each pair, the baseline and Turbo routes share conditioning and a latent input, while differing in model processing and sampling. The baseline's linked controls describe 25 steps and CFG3.5; the Turbo route applies its LoRA at strength 1, uses CFG1, and receives the nine-entry sigma list. These are multiple changed variables, not simply “the same run with fewer steps.” What differs between the files? The common nodes retain identical saved widget values, but their input/output metadata and several titles differ. In particular, the alternate export includes additional unlinked KSamplerAdvanced control inputs and corresponding slot-index changes for linked controls. Import and inspect each complete file rather than splicing them together by node number. File 03 has no SaveImage node. File 05 adds one: node 291 receives decoder 106, the baseline output of the fifth pair, with prefix ComfyUI. This is not an automatic saver for all twenty-two comparison outputs. Use real, authorized images for the image-conditioned examples and inspect each pair's effective inputs. Saved comparison galleries are historical display data, not fresh benchmark evidence; those caches have been cleared from the distribution copies without changing the connections or other widgets. 04 — The Fix graph has one selected Fix LoRA The filename mentions Fix 1.0/2.0, but the actual graph has a single LoRA loader selecting qwen2.1-detail-fix-opinionated-v1.0.safetensors at strength 1. It compares a baseline model path with that LoRA-modified path. There is no separate v2.0 loader or demonstrated v1/v2 selector. Shared control node 858 is saved true and routes image-conditioned encoding and its latent to both samplers. The image is loaded at node 855. The false branch instead uses the text-only encoder and empty latent. Confirm this mode before explaining whether an image influences the result. A different switch, node 771, is saved false and selects the direct prompt text. Its true branch receives processed text from the expansion route. TextGenerate has no connected image input, so it should not be described as automatic visual captioning in this export. Both sampler routes receive linked controls from the same constants, including 20 steps and CFG3.5. Inspect those controls rather than carrying over the 25-step label from the Turbo comparison files. The two comparers show the source image against the baseline and the source against the Fix result. They are not a single direct baseline-versus-Fix comparator. Save nodes 861 and 862 provide separate configured output prefixes; no new saved output is claimed here. A practical acceptance order Choose a purpose before choosing a file: parameter exploration, structural control, paired sampling comparison, or a Fix-LoRA comparison. Resolve the exact model, encoder, node, and preprocessor selections for that file. Check enabled branches, actual prompt/image inputs, connected dimensions, and output destinations. Start with a small test and inspect actual images, names, masks, counts, and errors before a larger experiment. Record every changed variable and measured result before claiming speed, quality parity, or a best setting. The source-provided tutorial offers the creator's context; the URL was not live-verified for this package. No runtime compatibility, hardware requirement, or blanket license is established here. Confirm rights for workflows, weights, node code, artwork, and source images separately. Getting the workflows Published by this channel. The graphs are free; the weights, LoRAs and ControlNet files are separate and carry their own terms. Hugging Face: AI-KSK/qwen21-controlnet-turbo-fix-316 — four JSONs, covers, SHA256 manifest. Start here. ModelScope (魔搭): Sunjian520/qwen21-controlnet-turbo-fix-316 Civitai: Depth grid · Union + Mask · Turbo comparison · Detail-Fix Run without a local GPU: Depth · Union + Mask · Turbo · Fix Tutorial: YouTube · Bilibili One distribution note: the source folder holds two Turbo exports (a 290-node and a 291-node file). The repositories above ship the 291-node file — the same bytes the Civitai entry already hosts — so every platform serves one identical file per purpose.

This is a summary aggregated from Dev.to. Read the complete article on the original site:

Read full article at Dev.to

More AI & Machine Learning News