NAFNet Deblur (GoPro)
A specialist for GoPro motion blur, not a magic sharpen button
- image
- IMAGE
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) orwidth32. 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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model_variant | COMBO | width64 | 2 options: width64, width32 |
| tile_sizeopt | INT | 00–2048 | Tile size for processing. 0 = auto (tiles large images automatically) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |