FaceEnhance / README.md
Rishi Desai
rename file fix
76fbdb5
---
title: FaceEnhance
emoji: 😎
colorFrom: red
colorTo: green
sdk: gradio
sdk_version: 5.25.2
app_file: demo.py
pinned: false
---
# FaceEnhance
A tool for improving facial consistency and quality in AI-generated images. Dramatically enhance facial fidelity while preserving the original image's background, lighting, and composition.
<div style="text-align: center;">
<img src="examples/elon_compare.gif" alt="Elon Comparison" width="600"/>
</div>
## Installation
### Prerequisites
- Python 3.11 or higher
- 1 GPU with 48GB VRAM
- At least 60GB of free disk space
### Setup
1. Log into Hugging Face and accept their terms of service to download [Flux.1-dev](https://huggingface.co./black-forest-labs/FLUX.1-dev)
2. Create the virtual environment:
```bash
python -m venv venv
source venv/bin/activate
python -m pip install -r requirements.txt
```
<details>
<summary>If you want a specific PyTorch+CUDA version</summary>
```bash
python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
python -m pip install xformers --index-url https://download.pytorch.org/whl/cu124
```
</details>
3. Run the install script:
```bash
python install.py
```
This will
- Install ComfyUI, custom nodes, and remaining dependencies to your venv
- Download all models to `HF_HOME` and create symlinks to `FaceEnhance/ComfyUI/models/`
4. Run inference on one example:
```bash
python test.py --input examples/dany_gpt_1.png --ref examples/dany_face.jpg --out examples/dany_enhanced.png
```
<details>
<summary>Arguments</summary>
- `--input` (str): Path to the input image.
- `--ref` (str): Path to the reference face image.
- `--output` (str): Path to save the output image.
- `--id_weight` (float): Face ID weight. Default: 0.75.
</details>
## Gradio Demo
A simple web interface for the face enhancement workflow. Run `python demo.py`
## ComfyUI
Run `python run_comfy.py`. There are two workflows:
- `FaceEnhance/workflows/FaceEnhancementProd.json` for face enhancement
- `FaceEnhance/workflows/FaceEmbedDist.json` for computing the [face embedding distance](https://github.com/cubiq/ComfyUI_FaceAnalysis)
### Notes
- The script and demo run a ComfyUI server ephemerally
- Gradio demo is faster than the script because the models remain loaded in memory and ComfyUI server is booted up.
- Images are saved in `FaceEnhance/ComfyUI/input/scratch/`
- `face_enhance.py` was created with the [ComfyUI-to-Python-Extension](https://github.com/pydn/ComfyUI-to-Python-Extension) and re-engineered for efficiency and function.
- Face cropping, upscaling, and captioning are unavailable; these will be added in an update.
### Troubleshooting
- **Out of memory errors**: If your GPU has less than 48 GB VRAM, install [Flux.1-dev at fp8 precision](https://huggingface.co./Comfy-Org/flux1-dev).
- **Face detection issues**: This method works for photorealistic images of people. It may not work on cartoons, anime characters, or non-human subjects.
- **Downloading models fails**: Check your Hugging Face token has proper permissions.
### Examples
<table>
<tr>
<th>Target image</th>
<th>Face image</th>
<th>Enhanced image</th>
</tr>
<tr>
<td><img src="examples/dany_gpt_1.png" alt="Dany Target 1" width="200"/></td>
<td><img src="examples/dany_face.jpg" alt="Dany Face" width="200"/></td>
<td><img src="examples/dany_enhanced_1.png" alt="Dany Enhanced 1" width="200"/></td>
</tr>
<tr>
<td><img src="examples/dany_gpt_2.png" alt="Dany Target 2" width="200"/></td>
<td><img src="examples/dany_face.jpg" alt="Dany Face" width="200"/></td>
<td><img src="examples/dany_enhanced_2.png" alt="Dany Enhanced 2" width="200"/></td>
</tr>
<tr>
<td><img src="examples/elon_gpt.png" alt="Elon Target" width="200"/></td>
<td><img src="examples/elon_face.png" alt="Elon Face" width="200"/></td>
<td><img src="examples/elon_enhanced.png" alt="Elon Enhanced" width="200"/></td>
</tr>
<tr>
<td><img src="examples/tim_gpt_1.png" alt="Tim Target 1" width="200"/></td>
<td><img src="examples/tim_face.jpg" alt="Tim Face" width="200"/></td>
<td><img src="examples/tim_enhanced_1.png" alt="Tim Enhanced 1" width="200"/></td>
</tr>
<tr>
<td><img src="examples/tim_gpt_2.png" alt="Tim Target 2" width="200"/></td>
<td><img src="examples/tim_face.jpg" alt="Tim Face" width="200"/></td>
<td><img src="examples/tim_enhanced_2.png" alt="Tim Enhanced 2" width="200"/></td>
</tr>
</table>