NAFSSR Stereo Super-Resolution
Upscaling both eyes of a stereo pair at once
- left_image
- right_image
- left_sr
- right_sr
NAFSSR Stereo SR is the specialist of the pack, and it's a genuine specialist: it upscales stereo pairs - a left view and a right view of the same scene - and it needs both to do its thing. If you don't have stereo content, this node does nothing for you, and that's not a bug. It's the one node here that solves a problem most people don't have, which is also why it's the least-searched node on this page.
Where it earns its keep: 3D renders (two cameras offset by eye distance), VR and 360-camera stills, side-by-side stereo content, lenticular print pipelines - anywhere you have a matched pair that needs to come out at 2x or 4x while keeping the two views consistent. Upscale each eye independently and the left and right versions drift apart; NAFSSR upscales them together and uses the information in one view to fill in the other. That cross-view sharing is the whole trick, and it's what makes this different from just running a regular upscaler twice.
Inputs and outputs
- left_image and right_image - two IMAGE tensors, from two separate Load Image nodes. They need to be aligned views of the same scene; the README says it plainly: NAFSSR works best with properly aligned stereo pairs. Feed it misaligned or unrelated images and the output will be mush.
- scale -
2xor4x(default 2x). Each is a separate checkpoint (NAFSSR-L_2x.pth / NAFSSR-L_4x.pth), and the node loads whichever matches and caches it, so switching scales triggers a reload.
Two outputs: left_sr and right_sr - the upscaled left and right views. Wire both to Save Image.
How it works
Under the hood, the node concatenates the two views into a single 6-channel tensor (3 channels per eye) and feeds it to the NAFSSR network, a dual-stream NAFNet from MEGVII's CVPR 2022 workshop paper. The two streams run through the same backbone with fusion layers that exchange information between views - which is how detail present in one eye's view but occluded or noisy in the other gets reconstructed. It's the stereo equivalent of a non-generative super-resolution upscale: it adds pixels, not invention.
The honest gotchas
First, there's no tiling on this node. The denoise/deblur/restore nodes auto-tile big images to protect VRAM; NAFSSR processes the whole pair in one shot. A large stereo pair on a mid-range card can run out of memory. If you hit that, keep inputs modest, or do a 2x pass before a 4x one rather than jumping straight to 4x on a huge source.
Second, model downloads: same Git LFS story as the rest of the pack. The ~1.3 GB of weights ship via LFS, and if it isn't installed you'll get pointer files instead of real checkpoints and the node will fail. git lfs install && git lfs pull, or run the fallback downloader in the pack folder:
python download_models.py
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. Dependencies are torch, torchvision, numpy and gdown - nothing beyond what ComfyUI already pulls in.
Real talk: this is a niche tool for people doing actual stereoscopic work, and it does that job well - both views upscaled in lockstep, sharing detail across the pair. If you don't work with stereo content, there's no reason to reach for it. If you do, it's the only node in the pack that understands what you're doing.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| left_image | IMAGE | — | |
| right_image | IMAGE | — | |
| scale | COMBO | 2x | 2 options: 2x, 4x |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| left_sr | IMAGE | — |
| right_sr | IMAGE | — |