Nodes/comfyui-nafnet/NAFNet Deblur (GoPro)
ComfyUI Node

NAFNet Deblur (GoPro)

A specialist for GoPro motion blur, not a magic sharpen button

By marduk191·Created 7 months ago·Updated 7 months ago· 0
NAFNet Deblur (GoPro)
  • image
  • IMAGE
model_variantwidth64
tile_size0

NAFNet Deblur is the narrowest specialist in this pack, and the README is refreshingly blunt about it: the models are trained on the GoPro dataset, so they deblur GoPro-style motion blur and not much else. Apply them to a different kind of blur and instead of a clean image you get colorful noise and artifacts - the model would rather hallucinate than admit it doesn't know what it's looking at. So before you use this node, the honest question is: does your image have actual directional motion smear, like an action-cam shot or a hand-held photo taken mid-wobble? If yes, this node might genuinely save it. If it's just "soft" or out of focus, you want a sharpener or an upscaler, not NAFNet.

That framing matters because this is the node in the pack most likely to get blamed unfairly. Someone tries it on a blurred JPEG, gets rainbow noise, and calls the pack broken. The pack isn't broken - the model was trained on one specific kind of blur, and that's by design.

Inputs and outputs

Identical shape to NAFNet Denoise, which is the other auto-loading quick button:

  • image - any IMAGE tensor.
  • model_variant - width64 (default) or width32. Same trade as the denoiser: width64 is the 259 MB checkpoint and the better quality; width32 is 66 MB and roughly a quarter of the compute. Try width64 first, drop to width32 for quick iteration.
  • tile_size (optional, default 0) - leave at 0. Large images auto-tile above about a megapixel so you don't OOM.

Output: one IMAGE, ready for Save Image or the next stage of a cleanup-then-upscale pipeline.

Under the hood

The node loads NAFNet-GoPro-*.pth from the pack's models/ folder and caches it in memory, so the first run in a session is slower and subsequent runs are fast; switching width variants reloads. The architecture is the same nonlinear-activation-free NAFNet from MEGVII's ECCV 2022 paper - simple blocks, cheap inference, solid restoration. That's the whole point of the name: "Simple Baselines for Image Restoration."

Worth knowing: the pack's REDS model (available through NAFNet Load Model + NAFNet Restore, not through this quick node) is the video-deblurring cousin, trained on video frames with their own blur and compression patterns. If your frames are video-capture deblur, that's the checkpoint to reach for instead of the GoPro one.

Install

ComfyUI Manager, search "NAFNet", install. Or manually:

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

Restart ComfyUI afterward. Requirements are torch, torchvision, numpy, and gdown - you already have torch from ComfyUI.

The gotcha that gets everyone

The ~1.3 GB of models come via Git LFS. If Git LFS isn't installed, the clone leaves tiny pointer files instead of weights and the node fails with model-not-found. Either run git lfs install && git lfs pull, or run the downloader fallback, which fetches the real weights from Google Drive:

python download_models.py

Then the real troubleshooting is the domain check from the top: GoPro-style motion blur in, clean image out. Anything else - out-of-focus, gaussian softness, heavy compression - is a different job.

Categoryimage/restoration

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
model_variantCOMBOwidth642 options: width64, width32
tile_sizeoptINT00–2048Tile size for processing. 0 = auto (tiles large images automatically)

Outputs (1)

NameTypeDescription
IMAGEIMAGE