Load Face Enhancer Model
ComfyUI Node Guide
- face_enhance_model
This node loads the model that does the actual face-sharpening work in this pack - separate and distinct from the general Stage 1 restoration model. It exists because a model trained on whole photos, restoring general fading and contrast, simply doesn't have the resolution budget to fix fine facial detail the way a model trained purely on cropped, zoomed-in faces can. It's the same logic behind detail-pass tools like ADetailer in the diffusion world - a small face occupying a fraction of a full image never gets enough attention from a general model, so you crop it out and give it a dedicated pass - just implemented here with an older GAN architecture from the original Microsoft research rather than diffusion inpainting.
Required inputs: device_ids (string, default "0" - comma-separated GPU ids, or -1 for CPU), face_enhance_model (a dropdown bound to whichever checkpoint file you've downloaded), and model_face_size (256 or 512, default 512). Output: face_enhance_model (type FACE_ENHANCE_MODEL), which feeds into Enhance Faces, Enhance Faces (Advanced), or the all-in-one Detect-Enhance-Blend Faces node.
The one setting that actually matters here for a beginner is model_face_size, and it needs to match the checkpoint you actually downloaded - not a preference, a hard requirement. The README ships two face-enhancement checkpoints: Setting_9_epoch_100, trained at 256×256, and FaceSR_512, trained at 512×512. If you load the 512 checkpoint but leave model_face_size set to 256 (or vice versa), the dimensions won't line up with what Detect Faces is cropping downstream, since that node's face_size setting also needs to match. Pick one resolution, download that checkpoint, and set both this node's model_face_size and Detect Faces's face_size to agree - 512 is generally the sharper, heavier option; 256 is lighter and faster.
Installing the model: download face_checkpoints.zip from the microsoft/Bringing-Old-Photos-Back-to-Life releases page, then extract Setting_9_epoch_100/latest_net_G.pth and/or FaceSR_512/latest_net_G.pth into models/checkpoints/. You don't need both - just whichever resolution you've decided to run.
Before that, the pack itself needs installing: through ComfyUI Manager (search "Bringing Old Photos Back to Life") or git clone into custom_nodes/ followed by a restart, then pip install -r requirements.txt against ComfyUI's own Python environment. That requirements file also installs dlib for the face-detection side of the pack, and even though this particular loader doesn't use dlib directly, it's one shared install - and dlib's compiled-C++ nature is the genuine pain point people hit. It's a well-documented issue in the wild: real users have reported burning ten-plus days on install failures before finding the fix, which usually comes down to grabbing a prebuilt dlib wheel that matches your exact Python version (ComfyUI's portable build often runs a different minor version than your system Python) or having CMake on PATH so it can compile from source instead.
If the dropdown is empty, it's almost certainly that the zip landed somewhere other than models/checkpoints/. If output faces come out garbled or oddly scaled, double-check model_face_size against both the checkpoint you loaded and the face_size set on Detect Faces - a mismatch there is a much more common cause of bad results than anything wrong with the model itself.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| device_ids | STRING | 0 | — |
| face_enhance_model | COMBO | 0 options: | |
| model_face_size | COMBO | 512 | 2 options: 256, 512 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| face_enhance_model | FACE_ENHANCE_MODEL | — |