| --- |
| title: Custom AI Face Enhancer |
| emoji: ✨ |
| colorFrom: purple |
| colorTo: pink |
| sdk: docker |
| pinned: false |
| license: apache-2.0 |
| --- |
| |
| # Custom AI Face Enhancer & Restorer |
|
|
| A self-hosted, local AI image enhancement web application built using **Python, Streamlit, PyTorch, and OpenCV**. It integrates the state-of-the-art **CodeFormer** model locally for face restoration with custom blending controls. |
|
|
| This project is configured to run out-of-the-box both **locally** on your CPU/GPU and **hosted on Hugging Face Spaces**. |
|
|
| --- |
|
|
| ## Key Features |
|
|
| - **Local Execution:** Runs directly on local CPU or NVIDIA GPU (via CUDA) for maximum privacy and processing speed. |
| - **Fidelity Weight Tuning ($w$):** Control the balance between generating rich realistic details (low $w$) and keeping high resemblance to the original face (high $w$). |
| - **Custom Blending Softness:** Exposes an adjustable soft mask feathering parameter to ensure smooth, seamless pasting of restored faces back into the upscaled background image. |
| - **Multiple Face Detectors:** Choose between highly accurate detectors (RetinaFace) or faster detectors for groups (YOLOv5). |
| - **Dark Mode UI:** Designed with custom glassmorphism and modern Outfit typography. |
|
|
| --- |
|
|
| ## Local Execution Instructions |
|
|
| ### Prerequisites |
| - Python 3.11 |
| - Git |
|
|
| ### Setup |
| 1. Clone this repository to your local machine. |
| 2. Initialize the virtual environment and install dependencies: |
| ```bash |
| python -m venv .venv |
| .venv\Scripts\activate # On Windows (PowerShell/CMD) |
| source .venv/bin/activate # On Linux/macOS |
| ``` |
| 3. Run the custom BasicSR package patching script: |
| ```bash |
| python tools/patch_and_install_basicsr.py |
| ``` |
| 4. Install the remaining requirements: |
| ```bash |
| pip install -r requirements.txt |
| ``` |
|
|
| ### Running the App |
| Start the Streamlit server locally: |
| ```bash |
| streamlit run app.py |
| ``` |
| Open `http://localhost:8501` in your browser. The app will automatically download the pretrained model weights on its first run. |
|
|
| --- |
|
|
| ## Hugging Face Spaces Deployment |
|
|
| This repository deploys as a **Docker Space**, not a Streamlit SDK Space. The |
| Dockerfile installs the pinned Python 3.11 CPU runtime and starts Streamlit on |
| port `7860`. |
|
|
| 1. Log in to [Hugging Face](https://huggingface.co/) and create a new Space. |
| 2. Set the Space SDK to **Docker** and select a CPU hardware tier appropriate |
| for CodeFormer inference. |
| 3. Push this repository to the Space. Keep Git LFS enabled: the tracked |
| `weights/CodeFormer/codeformer.pth` model is required at build/runtime. |
| 4. Wait for the Space build to complete, then open the Space URL. Additional |
| optional model files are downloaded by the application only if unavailable. |
|
|
| ### GitHub Actions sync |
|
|
| The included workflow syncs `main` to the configured Hugging Face Space and |
| uploads Git LFS objects first. Add a Hugging Face **write** token as the GitHub |
| Actions secret `HF_TOKEN`; do not place a token in a Git remote URL or commit it |
| to the repository. The sync intentionally does not force-push, so resolve any |
| divergent Space changes before running it again. |
|
|