ComfyUI Node

Global Restoration

The first pass in ComfyUI's old-photo restoration pipeline

By Haoming02·Created 2 years ago·Updated about a year ago· 66
Global Restoration
  • image
  • IMAGE
gpu_id0

Global Restoration is the workhorse node in ComfyUI Old Photo Restoration - the one you plug a scanned photo into when it's just generally beat up: faded, grainy, a bit blurry, colors gone weird, but no actual tears or scratches running through it. Its display name in the node picker is "Global Restoration," and it's a native ComfyUI port of Bringing-Old-Photos-Back-to-Life, the 2020 Microsoft Research paper that most old-photo tooling since has quietly built on. If your photo does have scratches or missing chunks, you want its sibling, Global Restoration with Scratch Processing (Stage1S) - this node's job is simpler and skips the scratch-detection step, so it runs faster on photos that don't need it.

Worth knowing where this sits in 2026: the community's current default for general photo restoration is a diffusion pairing (Qwen-Edit for cleanup, SeedVR2 for detail), which handles scanning artifacts and general damage more flexibly than a fixed, decade-old GAN can. What this pack still does that a generic upscaler doesn't is run the exact restoration network the paper trained for this exact job, natively, with no diffusion model to load and no prompt to write. It's a narrower tool, and for a straightforward "clean up this old family photo" job that narrowness is a feature - you get a deterministic pass instead of something you have to steer.

How it works

Stage1 runs your image through the paper's "Global" restoration network - a GAN trained specifically to correct the fading, noise, and blur patterns typical of aged and scanned photographs. It's not generative or hallucinatory the way a diffusion model is; it's a restoration model with one fixed job, closer in spirit to the old GFPGAN/CodeFormer era of face-restore tools than to a modern diffusion pipeline. That's also why it's fast and predictable - same input, same output, no seed to fight with.

Inputs and outputs

The node only takes two things:

  • image (IMAGE) - the photo to restore.
  • gpu_id (STRING, default "0") - which GPU to run on. Set it to -1 to force CPU, which is what you want if you don't have an Nvidia card, or if you're hitting an out-of-memory error on this stage.

Output is a single IMAGE - the globally restored photo. From here you'd typically either call it done, or feed this same output into Face Detection (Stage2) to start the face-specific refinement chain, since Global Restoration alone tends to soften faces along with everything else.

Note there's no hr (higher-parameters) toggle on this node - that setting exists on the Scratch variant and the face-pipeline nodes, but not here.

Installing it

Easiest path is ComfyUI Manager: search "ComfyUI Old Photo Restoration" and install. Manually, it's:

cd ComfyUI/custom_nodes
git clone https://github.com/Haoming02/comfyui-old-photo-restoration

then restart ComfyUI. Either way, check that a lib_bopb2l folder exists inside the custom node's directory afterward - if it doesn't, grab backend.zip from the pack's GitHub Releases and extract it in yourself.

Then comes the part people actually get stuck on: model checkpoints. Download global_checkpoints.zip from the Releases page of Haoming02's other repo, sd-webui-old-photo-restoration (the original A1111 extension this was ported from - same author, same checkpoints), and extract the checkpoints folder itself - not just the files inside it - into lib_bopb2l/Global/. There's a Google Drive mirror too if GitHub Releases is slow for you.

Common issues

Out of memory. This came up in the pack's own launch thread - one person tried it and got OOMed, while another reported running fine on 4GB VRAM with a couple of upscale nodes stacked on top. So it's hardware- and workflow-dependent; if you OOM, set gpu_id to -1 and run on CPU. Slower, but it'll finish.

"Nothing happens" or import errors. Almost always the checkpoint folder structure - verify you extracted the whole checkpoints folder, not the loose .pth files, and that it landed in Global/checkpoints, not directly in lib_bopb2l/Global.

Results look softened rather than restored. That's expected - this stage optimizes for correcting degradation, and a side effect is that it can flatten fine detail, especially on faces. That's exactly the gap the Face Detection → Face Enhancement → Face Align chain is built to close.

Categoryold-photo

Inputs (2)

NameTypeDefaultDescription
imageIMAGE
gpu_idSTRING0

Outputs (1)

NameTypeDescription
IMAGEIMAGE