GFPGAN

Restore realistic detail to low-quality faces in PyTorch using a pretrained GAN prior

Library
PyPI
v1.3.8
37,659stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
48/100Fair
Development Activity0
Maintenance20
Community72
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
79/100Good
Architecture80
Code Quality74
Innovation88
Learning Curve72

GFPGAN is a PyTorch library for practical, real-world blind face restoration. Developed by Tencent ARC, it leverages the rich generative priors encapsulated in a pretrained face GAN (StyleGAN2) to recover natural, high-fidelity facial detail from old, compressed, or degraded photographs without needing a matched high-quality reference.

It wraps the whole pipeline - face detection and alignment, restoration, optional background upsampling with Real-ESRGAN, and pasting faces back into the full image - behind a single GFPGANer class, and ships pretrained model weights so you can enhance images in a few lines of code or from the command line.

What You Get

  • A GFPGANer class that runs the full detect-align-restore-paste-back pipeline in one call to enhance()
  • Pretrained model versions (V1.3, V1.4) tuned for natural restoration and identity preservation
  • Optional background upsampling via Real-ESRGAN for whole-image enhancement
  • A command-line inference script for batch-restoring folders of images
  • Both CUDA-accelerated and clean CPU/Windows-friendly architectures

Common Use Cases

  • Restoring old, blurry, or compressed family photographs to sharp, natural-looking images
  • Enhancing faces in AI-upscaling and super-resolution pipelines
  • Cleaning up low-quality user-uploaded portraits in a media application
  • Improving face quality as a post-processing step for generative image output

Under The Hood

Architecture - The user-facing entry point is GFPGANer in gfpgan/utils.py, which orchestrates the restoration pipeline: it uses a FaceRestoreHelper (from facexlib) to detect and align faces, runs the GFPGAN network defined under gfpgan/archs/ (StyleGAN2-based clean and original architectures), optionally routes the background through a Real-ESRGAN upsampler, and pastes restored faces back into the source image. Training code, datasets, and models live under gfpgan/models, gfpgan/data, and train.py, built on the BasicSR framework.

Tech Stack - Python and PyTorch, layered on BasicSR for training/architecture infrastructure and facexlib for face detection and alignment, with Real-ESRGAN for background super-resolution and NumPy/OpenCV for image handling. Pretrained weights are distributed via GitHub releases.

Code Quality - The repository includes a meaningful test suite covering the GFPGAN architecture, ArcFace and StyleGAN2 clean archs, the degradation dataset, the model, and utilities. Code follows BasicSR conventions with modular arch/model/data separation, and the project is backed by a published CVPR 2021 paper.

API Design - For inference the API is very approachable: construct GFPGANer with a model path and call enhance(img) to get cropped and restored faces plus the composited result, with sensible defaults for upscaling and alignment. Advanced training use requires understanding the BasicSR option-file workflow, which is heavier but well-established.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search