Nodes/Forbidden Vision/Forbidden Vision 💎 Refiner
ComfyUI Node

Forbidden Vision 💎 Refiner

One node that actually fixes washed-out colors

By luxdelux7·Created about a year ago·Updated about 12 hours ago· 104
Forbidden Vision 💎 Refiner
  • latent
  • vae
  • image
  • refined_latent
  • refined_image_preview
◄enable_upscalefalse►
◄upscale_modelSimple: Bicubic (Standard)►
◄upscale_factor1.20►
◄neural_correctortrue►
◄corrector_tone1.00►
◄corrector_color0.70►
◄depth_relightfalse►
◄depth_relight_stringth0.30►
◄depth_dof_enablefalse►
◄depth_dof_strength0.40►
◄depth_dof_focus0.75►
◄depth_dof_modelV2-Small►
◄maintain_aspect_ratiotrue►
◄enforce_mod32_boundariestrue►
◄use_tiled_vaefalse►
◄tile_size512►
◄offload_models_to_cputrue►

Half the reason people stop sharing a first pass is that it looks flat: muddy shadows, washed-out highlights, colors that lean too warm or too dead. The Refiner (LatentRefiner) is Forbidden Vision's answer to that - a single node that analyzes an image with a custom-trained neural corrector and fixes exposure, black levels, and tone automatically, then optionally upscales it and even fakes depth of field. It's the pack's second-most-used node for a reason: you can drop it after any sampler, hit go, and the output simply looks more finished.

How it works

The core is the neural corrector, a model trained on curated pairs to reproduce the color-and-exposure adjustments the author used to do by hand. It runs a YUV-based analysis, lifts shadows, protects highlights from clipping, and balances color. Two strength dials blend between your original and the fully-corrected result: corrector_tone (default 1.0, full power) and corrector_color (default 0.7). If the image comes out too bright or too dark in places, pull corrector_tone down; if the "temperature" shifts, lower corrector_color. That's the entire tuning model - two sliders.

On top of that sit three optional extras, all off by default:

  • Upscaling - enable_upscale + upscale_factor (the author's pick is 1.2 before a second diffusion pass). It loads any upscaler from your upscale_models folder, with a plain Bicubic fallback.
  • AI relight - depth_relight gently brightens the foreground subject using a depth map, useful for lifting a face without flattening shadows.
  • Depth of field - depth_dof_enable blurs background and foreground around a computed focus plane. depth_dof_focus (0.5–0.99) sets where that plane sits; depth_dof_model chooses Depth Anything V2-Small (faster, less VRAM) or V2-Base (more stable). The depth-estimation lineage here is solid - Depth Anything V2 is the standard modern monocular depth estimator, not an obscure hack.

Inputs, outputs, and where it goes

The node accepts a latent, an image, or both, plus a vae. The convenience design: if you feed it a latent it decodes it (with caching so repeated runs don't re-decode), processes the pixels, and if a vae is connected it re-encodes the result - so it works mid-workflow and as a final enhancer. Outputs are refined_latent and refined_image_preview.

The two quirks to know about:

  • use_tiled_vae - if you're re-encoding a high-res image, tiled VAE encoding avoids seams and cuts VRAM. tile_size default 512; bigger tiles are faster but hungrier.
  • maintain_aspect_ratio and enforce_mod32_boundaries - the node may crop a few edge pixels to keep the output a multiple of 32 and unstretched. Leave them on.

The README's suggested slot is a pre-pass before your second sampling stage: refine the tone first, then resample on top of a correctly-graded image. The neural corrector model auto-downloads on first run with the rest of the pack. One honest note: the corrector is marked experimental by the author, and tone corrections are taste - if it's too aggressive for your checkpoint, the tone/color sliders are there to dial it back rather than off.

CategoryForbidden Vision

Inputs (20)

NameTypeDefaultDescription
enable_upscaleBOOLEANfalse—
upscale_modelCOMBOSimple: Bicubic (Standard)1 options: Simple: Bicubic (Standard)
upscale_factorFLOAT1.201–8—
neural_correctorBOOLEANtrue—
corrector_toneFLOAT1.000–1—
corrector_colorFLOAT0.700–1—
depth_relightBOOLEANfalse—
depth_relight_stringthFLOAT0.300–1—
depth_dof_enableBOOLEANfalse—
depth_dof_strengthFLOAT0.400–1—
depth_dof_focusFLOAT0.750.5–0.99—
depth_dof_modelCOMBOV2-Small2 options: V2-Small, V2-Base
maintain_aspect_ratioBOOLEANtrueIf Enabled: Crops edges slightly to fit grid without stretching.
enforce_mod32_boundariesBOOLEANtrueForces output resolution to be a multiple of 32.
use_tiled_vaeBOOLEANfalse—
tile_sizeINT512256–2048—
offload_models_to_cpuBOOLEANtrueMove neural corrector and depth models from VRAM to RAM after processing. Frees GPU memory for other nodes (e.g. checkpoint swaps in queued workflows). Disable if you're chaining many refiner passes and want to skip the small reload overhead.
latentoptLATENT—
vaeoptVAE—
imageoptIMAGE—

Outputs (2)

NameTypeDescription
refined_latentLATENT—
refined_image_previewIMAGE—