Nodes/ComfyUI-ppm/Tile Preprocessor (PPM)
ComfyUI Node

Tile Preprocessor (PPM)

A ControlNet Tile prep with no extra installs

By pamparamm·Created 2 years ago·Updated 4 days ago· 265
Tile Preprocessor (PPM)
  • image
  • IMAGE
blur_iters3
downscale_methodarea
upscale_methodbilinear
rescale_to_inputtrue

If you do tiled upscaling with ControlNet Tile, you need a preprocessor to prep the control image - and the usual one lives inside the big comfyui_controlnet_aux pack with its own pile of dependencies. This is the lightweight alternative. Tile Preprocessor (PPM) does the same job using only kornia, which ships as part of ComfyUI already. No extra installs, no dependency headaches.

What a Tile preprocessor does

ControlNet Tile is the backbone of realistic upscaling workflows - it feeds the original image back into the model as a low-frequency condition, so the model can add fresh detail while staying faithful to the source structure. The community's favorite recipe is Tile ControlNet plus a tiled diffusion pass, and it produces genuinely convincing high-res results.

The preprocessor's role is to prepare that condition image. It deliberately softens the input - blurring and downscaling it - so the ControlNet gets the composition and broad tones to anchor to, without the fine detail that would just get copied verbatim. Blur it right and the model rebuilds the details itself, guided but not straitjacketed. Blur it too little and you lock in the original's (low-res) texture; too much and the ControlNet loses its grip on the structure. The blur amount is the whole craft here.

The inputs

  • image (IMAGE) in - the picture you're conditioning on (usually the thing you're upscaling).
  • blur_iters (default 3) - how many blur passes. This is the main dial. More iterations = softer condition = more freedom for the model to invent detail; fewer = tighter adherence to the source. If your upscale is coming out too faithful (grainy, just bigger), raise it; if it's drifting off the source, lower it.
  • downscale_method (default "area") - the interpolation used when shrinking. "area" is the right default for downscaling; it avoids aliasing.
  • upscale_method (default "bilinear") - the interpolation used to bring it back up. Bilinear gives the smooth, detail-free result you want for a tile condition.
  • rescale_to_input (boolean, default true) - whether to return the result at the original input size. Usually leave this on so the condition lines up with your workflow's dimensions.

Output is an IMAGE you feed into your ControlNet Apply node as the control input.

Install

The appeal is that there's nothing extra to install - kornia is already a ComfyUI requirement, so this works out of the box:

  • ComfyUI Manager: search "ComfyUI-ppm", install, restart.
  • Manual: cd ComfyUI/custom_nodes && git clone https://github.com/pamparamm/ComfyUI-ppm, then restart.

You still need an actual Tile ControlNet model for your base - that's a separate download (a Tile-trained ControlNet for SDXL/SD1.5, or a base with a Tile union). The preprocessor preps the image; the ControlNet model does the conditioning.

Honest take and gotchas

The reason to use this specifically is dependency-avoidance. If you already run comfyui_controlnet_aux, its tile preprocessor is fine and you don't strictly need this one. But if you're keeping a lean install, or the aux pack is fighting you, this drops in with zero new dependencies and does the same job - a nice bit of engineering.

Watch the model side, because it's where tiled upscaling actually goes wrong. Not every ControlNet union has a Tile mode - Shakker's Flux Union Pro 2.0 famously dropped tile, so if you loaded that expecting the upscaler workflow, it won't work. Z-Image, by contrast, has a dedicated Tile model. Match your preprocessor to a ControlNet that actually supports tile, or you'll get no control effect and blame the wrong node. And tune blur_iters per image - there's no universal value; it depends on how much detail your source already has versus how much you want the model to add.

Pack rule: erroring after an update? Delete and re-add the node.

Categoryimage/preprocessors

Inputs (5)

NameTypeDefaultDescription
imageIMAGE
blur_itersINT31–10
downscale_methodCOMBOarea4 options: nearest-exact, bilinear, area, bicubic
upscale_methodCOMBObilinear4 options: nearest-exact, bilinear, area, bicubic
rescale_to_inputBOOLEANtrue

Outputs (1)

NameTypeDescription
IMAGEIMAGE