Nodes/ComfyUI-ArchAi3d-Qwen/๐ŸŽญ Smart USDU Mask Denoise
ComfyUI Node

๐ŸŽญ Smart USDU Mask Denoise

The simpler sibling of diffdiff upscaling

By amir84ferdosยทCreated 11 months agoยทUpdated 5 months agoยท 70
๐ŸŽญ Smart USDU Mask Denoise
  • image
  • model
  • conditionings
  • negative
  • vae
  • denoise_mask
  • upscale_model
  • IMAGE
โ—„upscale_by2.00โ–บ
โ—„seed0โ–บ
โ—„steps20โ–บ
โ—„cfg8.00โ–บ
โ—„sampler_nameโ–พโ–บ
โ—„schedulerโ–พโ–บ
โ—„denoise_masked0.50โ–บ
โ—„denoise_unmasked0.20โ–บ
โ—„mode_typeโ–พโ–บ
โ—„tile_width512โ–บ
โ—„tile_height512โ–บ
โ—„mask_blur8โ–บ
โ—„tile_padding32โ–บ
โ—„seam_fix_modeโ–พโ–บ
โ—„seam_fix_denoise1.00โ–บ
โ—„seam_fix_width64โ–บ
โ—„seam_fix_mask_blur8โ–บ
โ—„seam_fix_padding16โ–บ
โ—„force_uniform_tilestrueโ–บ
โ—„tiled_decodefalseโ–บ

If the Differential Diffusion node's per-pixel mask feels like too much machinery, this is the trimmed-down version. Smart USDU Mask Denoise takes one mask and two denoise values - one for white regions, one for black - and works out the rest. The example the author ships with is the perfect mental model: mask the sky white, mask the building black, set denoise_masked to 0.5 and denoise_unmasked to 0.2, and the sky gets rebuilt while the structure only gets a light detail pass. Gray in the mask interpolates between the two.

The difference from DiffDiff is real but subtle. DiffDiff patches the model with a per-pixel threshold function and lets any mask value do its own thing. This node instead computes a single denoise value per tile from the mask intensity over that tile's region - so regions that are mostly white get sampled at ~denoise_masked, mostly-black at ~denoise_unmasked. It's a coarser tool, but it's also far easier to reason about, and it runs in a single pass without the diffdiff model patch. Reach for it when two zones is all you have.

The inputs that matter

  • denoise_mask (required MASK) - the map. White = high denoise zone, black = low.
  • denoise_masked (default 0.5) - denoise for white regions. The tooltip suggests "sky."
  • denoise_unmasked (default 0.2) - denoise for black regions. The tooltip suggests "building."
  • conditionings - per-tile CONDITIONING_LIST in row-major order; short lists reuse the last entry.
  • upscale_model + the USDU core (mode_type, tile size/padding/blur, seam fix, tiled_decode) - this variant does its own pixel upscale (upscale_by default 2).

Output is a single IMAGE.

Installing it

One of the ~100 nodes in ComfyUI-ArchAi3d-Qwen by Amir Ferdos (ArchAi3d). ComfyUI Manager โ†’ search "ArchAi3d Qwen" โ†’ install โ†’ restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/amir84ferdos/ComfyUI-ArchAi3d-Qwen.git
cd ComfyUI-ArchAi3d-Qwen
pip install -r requirements.txt

Restart after. Only ComfyUI's own torch/numpy/Pillow are required here; the heavy deps in requirements.txt serve other pack nodes. Free for personal/non-commercial use; commercial work needs the author's paid license.

Common gotchas

The mask is resized to the output size, so a low-res hand-drawn mask gets blurrier edges than you expect - leave a bit of margin around boundaries. Both denoise values still get applied to every tile; the tooltip is explicit that black regions are "less denoise, but still processed." If you need a region truly untouched, you want an inpaint-style mask with a real "no touch" value, not this node. And because the per-tile denoise is computed from mask intensity, a mask with lots of gray ends up averaging out - keep your mask high-contrast if you want crisp zone behavior.

CategoryArchAi3d/Upscaling/USDU

Inputs (27)

NameTypeDefaultDescription
imageIMAGEโ€”
modelMODELโ€”
conditioningsCONDITIONING_LISTโ€”
negativeCONDITIONINGโ€”
vaeVAEโ€”
upscale_byFLOAT2.000.05โ€“4โ€”
seedINT00โ€“18446744073709550000โ€”
stepsINT201โ€“10000โ€”
cfgFLOAT8.000โ€“100โ€”
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoise_maskMASKโ€”
denoise_maskedFLOAT0.500โ€“1Denoise for WHITE/masked regions (e.g., sky)
denoise_unmaskedFLOAT0.200โ€“1Denoise for BLACK/unmasked regions (e.g., building)
upscale_modelUPSCALE_MODELโ€”
mode_typeCOMBO3 options: Linear, Chess, None
tile_widthINT51264โ€“8192โ€”
tile_heightINT51264โ€“8192โ€”
mask_blurINT80โ€“64โ€”
tile_paddingINT320โ€“8192โ€”
seam_fix_modeCOMBO4 options: None, Band Pass, Half Tile, Half Tile + Intersections
seam_fix_denoiseFLOAT1.000โ€“1โ€”
seam_fix_widthINT640โ€“8192โ€”
seam_fix_mask_blurINT80โ€“64โ€”
seam_fix_paddingINT160โ€“8192โ€”
force_uniform_tilesBOOLEANtrueโ€”
tiled_decodeBOOLEANfalseโ€”

Outputs (1)

NameTypeDescription
IMAGEIMAGEโ€”