Nodes/Eric_Image_Processing_Nodes/Restormer Restoration
ComfyUI Node

Restormer Restoration

Ten restoration tasks, one efficient transformer

By EricRollei·Created 9 months ago·Updated 8 months ago· 9
Restormer Restoration
  • image
  • enhanced_image
taskreal_sr_x4
sharpness_profilebalanced
processing_strength0.85
detail_boost0.12
detail_radius1.3
tile_size512
tile_overlap64
device_preferenceauto

Restormer showed up a couple of years after SwinIR with a specific goal: get transformer-quality restoration without transformer-scale compute, so it could actually run on high-resolution images. This node exposes it as a ten-way restoration tool - super-resolution, three denoising strengths, real-world denoising, motion and defocus deblurring, indoor/outdoor derain, and dehaze - plus a detail-boost pass layered on top. It's the pack's middle ground: heavier and more capable than SwinIR, much lighter than the full diffusion pipeline in DiffBIR.

How it works

Where SwinIR's transformer computes attention over spatial windows, Restormer's efficiency trick is different: it computes attention across channels instead of across pixel positions, plus a gated feed-forward design, which keeps compute roughly linear with image size instead of blowing up quadratically the way naive attention would. That's what lets it run on genuinely large images without needing aggressive tiling just to fit in memory. This node adds one more step past raw Restormer output: an optional unsharp-style detail-boost pass, computed as a Gaussian-based high-frequency layer added back on top of the restoration - the same underlying idea as this pack's SmartSharpeningNode, but built into the restoration step so you don't need a second node for it.

The inputs and outputs that matter

  • image - required.
  • task - ten choices: real_sr_x4, denoise_sigma15/25/50, real_denoise, motion_deblur, defocus_deblur, derain_indoor/outdoor, dehaze. Match this to what's actually wrong with your image - a defocused shot wants defocus_deblur, not motion_deblur, and they're not interchangeable.
  • sharpness_profile - presets balancing restoration against the detail-boost pass: balanced (default), detail_boost, texture_preserve, denoise_priority, superres_edges, or custom for manual control via the fields below.
  • processing_strength (optional, 0–1, default 0.85) - blend between the original and Restormer's output. Below 1.0 if you want a gentler pass.
  • detail_boost (optional, 0–0.6, default 0.12) and detail_radius (optional, 0.3–2.5, default 1.3) - the strength and Gaussian radius of the post-restoration sharpening layer.
  • tile_size (optional, default 512) and tile_overlap (optional, default 64) - the usual tiling controls for running on high-resolution images without exceeding VRAM.
  • device_preference - auto/cpu/cuda.
  • Output: enhanced_image.

How to install it

Search Eric_Image_Processing_Nodes in ComfyUI Manager, or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/Eric_Image_Processing_Nodes
cd Eric_Image_Processing_Nodes
pip install -r requirements.txt

Restart ComfyUI. Torch is the optional-extra dependency this node actually needs; the pack's core requirements (numpy, opencv-python, scikit-image, scipy, PyWavelets) gate the initial import. Restormer's task-specific checkpoints auto-download the first time you use each one - with ten tasks available, expect a fresh download the first time you try a task you haven't used before, even if you've already used others.

Common issues & troubleshooting

Wrong task for the actual problem. This node can't tell a motion-blurred photo from a defocused one - that's on you to diagnose. Camera shake during exposure is motion_deblur; an out-of-focus lens is defocus_deblur. Picking the wrong one gives you a restoration model actively working against the artifact you actually have.

Denoise result too soft or barely changed. Same idea as SwinIR's noise levels - denoise_sigma15/25/50 need to roughly match your actual noise level. Too low a sigma leaves noise behind; too high smooths away real detail. If you're not sure, real_denoise is trained on more realistic (non-synthetic) noise and is often the safer default for actual photos.

Output looks over-sharpened with visible halos. That's the detail-boost pass, not the base restoration. Drop detail_boost toward 0, or switch sharpness_profile to texture_preserve or denoise_priority instead of detail_boost/superres_edges.

Slow or OOM on high-resolution images. Reduce tile_size before reducing input resolution - Restormer's channel-attention design is more memory-friendly than full spatial attention, but it still needs tiling headroom on very large images. Keep tile_overlap reasonable (the default 64) so tile seams don't become visible.

CategoryEric's Image Processing/Transformer Enhancements

Inputs (9)

NameTypeDefaultDescription
imageIMAGE
taskCOMBOreal_sr_x4Select pre-trained Restormer model
sharpness_profileCOMBObalancedPreset balance between restoration and detail boost
processing_strengthoptFLOAT0.850–1Blend ratio between original and Restormer output
detail_boostoptFLOAT0.120–0.6Amount of high-frequency enhancement after restoration
detail_radiusoptFLOAT1.30.3–2.5Gaussian radius when computing detail layer
tile_sizeoptINT512128–1024Tile size for high-resolution inference (set 0 for auto)
tile_overlapoptINT6416–256Overlap between tiles to avoid seams
device_preferenceoptCOMBOautoDevice preference for Restormer

Outputs (1)

NameTypeDescription
enhanced_imageIMAGE