Skip to main content

Towards Robust Blind Face Restoration with Codebook Lookup Transformer (NeurIPS 2022)

Paper | Project Page | Video

google colab logo Hugging Face Replicate visitors

Shangchen Zhou, Kelvin C.K. Chan, Chongyi Li, Chen Change Loy

S-Lab, Nanyang Technological University

:star: If CodeFormer is helpful to your images or projects, please help star this repo. Thanks! :hugs:

Install

poetry add codeformer-perceptor

or

pip install codeformer-perceptor

Usage

from PIL import Image
from codeformer import CodeFormer

model = CodeFormer().cuda()

image = Image.open("test.jpg")
restored_image = model(image)

[News]: :whale: Due to copyright issues, we have to delay the release of the training code (expected by the end of this year). Please star and stay tuned for our future updates!

Update

  • 2022.10.05: Support video input --input_path [YOUR_VIDOE.mp4]. Try it to enhance your videos! :clapper:
  • 2022.09.14: Integrated to :hugs: Hugging Face. Try out online demo! Hugging Face
  • 2022.09.09: Integrated to :rocket: Replicate. Try out online demo! Replicate
  • 2022.09.04: Add face upsampling --face_upsample for high-resolution AI-created face enhancement.
  • 2022.08.23: Some modifications on face detection and fusion for better AI-created face enhancement.
  • 2022.08.07: Integrate Real-ESRGAN to support background image enhancement.
  • 2022.07.29: Integrate new face detectors of ['RetinaFace'(default), 'YOLOv5'].
  • 2022.07.17: Add Colab demo of CodeFormer. google colab logo
  • 2022.07.16: Release inference code for face restoration. :blush:
  • 2022.06.21: This repo is created.

TODO

  • Add checkpoint for face inpainting
  • Add checkpoint for face colorization
  • Add training code and config files
  • Add background image enhancement

:panda_face: Try Enhancing Old Photos / Fixing AI-arts

Face Restoration

Face Color Enhancement and Restoration

Face Inpainting

Dependencies and Installation

  • Pytorch >= 1.7.1
  • CUDA >= 10.1
  • Other required packages in requirements.txt
# git clone this repository
git clone https://github.com/sczhou/CodeFormer
cd CodeFormer

# create new anaconda env
conda create -n codeformer python=3.8 -y
conda activate codeformer

# install python dependencies
pip3 install -r requirements.txt
python basicsr/setup.py develop

Quick Inference

Download Pre-trained Models:

Download the facelib pretrained models from [Google Drive | OneDrive] to the weights/facelib folder. You can manually download the pretrained models OR download by runing the following command.

python scripts/download_pretrained_models.py facelib

Download the CodeFormer pretrained models from [Google Drive | OneDrive] to the weights/CodeFormer folder. You can manually download the pretrained models OR download by runing the following command.

python scripts/download_pretrained_models.py CodeFormer

Prepare Testing Data:

You can put the testing images in the inputs/TestWhole folder. If you would like to test on cropped and aligned faces, you can put them in the inputs/cropped_faces folder.

Testing on Face Restoration:

[Note] If you want to compare CodeFormer in your paper, please run the following command indicating --has_aligned (for cropped and aligned face), as the command for the whole image will involve a process of face-background fusion that may damage hair texture on the boundary, which leads to unfair comparison.

🧑🏻 Face Restoration (cropped and aligned face)

# For cropped and aligned faces
python inference_codeformer.py -w 0.5 --has_aligned --input_path [input folder]

:framed_picture: Whole Image Enhancement

# For whole image
# Add '--bg_upsampler realesrgan' to enhance the background regions with Real-ESRGAN
# Add '--face_upsample' to further upsample restorated face with Real-ESRGAN
python inference_codeformer.py -w 0.7 --input_path [image folder/image path]

:clapper: Video Enhancement

# For video clips
# Set frame rate of saved video via '--save_video_fps 24'
python inference_codeformer.py --bg_upsampler realesrgan --face_upsample -w 1.0 --input_path [video path] --save_video_fps 24

Fidelity weight w lays in [0, 1]. Generally, smaller w tends to produce a higher-quality result, while larger w yields a higher-fidelity result.

The results will be saved in the results folder.

Citation

If our work is useful for your research, please consider citing:

@inproceedings{zhou2022codeformer,
    author = {Zhou, Shangchen and Chan, Kelvin C.K. and Li, Chongyi and Loy, Chen Change},
    title = {Towards Robust Blind Face Restoration with Codebook Lookup TransFormer},
    booktitle = {NeurIPS},
    year = {2022}
}

License

This project is licensed under S-Lab License 1.0. Redistribution and use for non-commercial purposes should follow this license.

Acknowledgement

This project is based on BasicSR. Some codes are brought from Unleashing Transformers, YOLOv5-face, and FaceXLib. We also adopt Real-ESRGAN to support background image enhancement. Thanks for their awesome works.

Contact

If you have any question, please feel free to reach me out at shangchenzhou@gmail.com.

Release files for codeformer-perceptor 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for codeformer-perceptor 0.1.2
File Size Uploaded
codeformer-perceptor-0.1.2.tar.gz 58.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for codeformer-perceptor 0.1.2
File Interpreter ABI Platform
codeformer_perceptor-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 124.5 kB

Release files / codeformer-perceptor-0.1.2.tar.gz

Download URL codeformer-perceptor-0.1.2.tar.gz
Size 58.0 kB
Tags Source
SHA-256 checksum
How to use checksums
2997604a7006bc4a8926074aa8a944bcf93c413c72a2017d719935a436147376
BLAKE2b-256 checksum
How to use checksums
0537d34969f235aadff633b2453a2d92a0a676abb1fb86760fae7c6c62d426e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.1 CPython/3.9.12 Linux/5.15.0-50-generic

Release files / codeformer_perceptor-0.1.2-py3-none-any.whl

Download URL codeformer_perceptor-0.1.2-py3-none-any.whl
Size 66.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8606d3d552cfdd8d7a6eb5db784d039d996f05324f010ce7ab3572df0de30572
BLAKE2b-256 checksum
How to use checksums
31235532e97651fa2b1bebf1b21e43423fd3f8a05cdc7d109e8a57959df8f11f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.1 CPython/3.9.12 Linux/5.15.0-50-generic

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page