|
|
--- |
|
|
license: apache-2.0 |
|
|
library_name: realesrgan |
|
|
pipeline_tag: image-to-image |
|
|
tags: |
|
|
- image-upscaling |
|
|
- super-resolution |
|
|
- realesrgan |
|
|
- esrgan |
|
|
- post-processing |
|
|
- image-enhancement |
|
|
--- |
|
|
|
|
|
<!-- README Version: v1.3 --> |
|
|
|
|
|
# FLUX Upscale Models Collection v1.3 |
|
|
|
|
|
This repository contains Real-ESRGAN upscale models for post-processing and enhancing generated images. These models can upscale images by 2x or 4x while adding fine details and improving sharpness. |
|
|
|
|
|
## Model Description |
|
|
|
|
|
Real-ESRGAN (Real Enhanced Super-Resolution Generative Adversarial Networks) models for high-quality image upscaling. These models are commonly used as post-processing steps for AI-generated images to increase resolution and enhance details. |
|
|
|
|
|
**Key Capabilities**: |
|
|
- 2x and 4x image upscaling |
|
|
- Detail enhancement and sharpening |
|
|
- Noise reduction and artifact removal |
|
|
- Optimized for AI-generated images |
|
|
- CPU and GPU compatible |
|
|
|
|
|
## Repository Contents |
|
|
|
|
|
**Total Size**: ~192MB |
|
|
|
|
|
### Upscale Models (upscale_models/) |
|
|
- `4x-UltraSharp.pth` - 64MB - 4x upscaling with ultra-sharp detail enhancement |
|
|
- `RealESRGAN-x2plus.pth` - 64MB - 2x upscaling model |
|
|
- `RealESRGAN-x4plus.pth` - 64MB - 4x upscaling model |
|
|
|
|
|
## Hardware Requirements |
|
|
|
|
|
- **VRAM**: 4GB+ recommended for GPU inference |
|
|
- **Disk Space**: 192MB |
|
|
- **Memory**: 8GB+ system RAM recommended |
|
|
- **Compatible with**: CPU or GPU inference (CUDA, ROCm, or CPU) |
|
|
|
|
|
## Usage Examples |
|
|
|
|
|
### Basic Usage with Real-ESRGAN |
|
|
|
|
|
```python |
|
|
from basicsr.archs.rrdbnet_arch import RRDBNet |
|
|
from realesrgan import RealESRGANer |
|
|
import cv2 |
|
|
|
|
|
# Load the upscaler model |
|
|
model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32) |
|
|
|
|
|
upsampler = RealESRGANer( |
|
|
scale=4, |
|
|
model_path="E:\\huggingface\\flux-upscale\\upscale_models\\4x-UltraSharp.pth", |
|
|
model=model, |
|
|
tile=0, |
|
|
tile_pad=10, |
|
|
pre_pad=0, |
|
|
half=True # Use FP16 for faster inference on GPU |
|
|
) |
|
|
|
|
|
# Load and upscale an image |
|
|
img = cv2.imread("input.png", cv2.IMREAD_COLOR) |
|
|
output, _ = upsampler.enhance(img, outscale=4) |
|
|
cv2.imwrite("output_upscaled.png", output) |
|
|
``` |
|
|
|
|
|
### Using with FLUX Pipeline |
|
|
|
|
|
```python |
|
|
from diffusers import FluxPipeline |
|
|
from realesrgan import RealESRGANer |
|
|
from basicsr.archs.rrdbnet_arch import RRDBNet |
|
|
import torch |
|
|
import numpy as np |
|
|
|
|
|
# Generate image with FLUX |
|
|
pipe = FluxPipeline.from_pretrained( |
|
|
"E:\\huggingface\\flux-dev-fp16", |
|
|
torch_dtype=torch.float16 |
|
|
) |
|
|
pipe.to("cuda") |
|
|
|
|
|
image = pipe( |
|
|
prompt="a beautiful landscape with mountains", |
|
|
num_inference_steps=30 |
|
|
).images[0] |
|
|
|
|
|
# Convert PIL to numpy/cv2 format |
|
|
img_array = np.array(image) |
|
|
|
|
|
# Initialize upscaler |
|
|
model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32) |
|
|
upsampler = RealESRGANer( |
|
|
scale=4, |
|
|
model_path="E:\\huggingface\\flux-upscale\\upscale_models\\4x-UltraSharp.pth", |
|
|
model=model, |
|
|
half=True |
|
|
) |
|
|
|
|
|
# Upscale the generated image |
|
|
upscaled, _ = upsampler.enhance(img_array, outscale=4) |
|
|
|
|
|
# Save result |
|
|
import cv2 |
|
|
cv2.imwrite("flux_upscaled_4x.png", upscaled) |
|
|
``` |
|
|
|
|
|
### Tiled Processing for Large Images |
|
|
|
|
|
```python |
|
|
from basicsr.archs.rrdbnet_arch import RRDBNet |
|
|
from realesrgan import RealESRGANer |
|
|
import cv2 |
|
|
|
|
|
# Configure for large images with tiling |
|
|
model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32) |
|
|
|
|
|
upsampler = RealESRGANer( |
|
|
scale=4, |
|
|
model_path="E:\\huggingface\\flux-upscale\\upscale_models\\RealESRGAN_x4plus.pth", |
|
|
model=model, |
|
|
tile=512, # Process in 512x512 tiles |
|
|
tile_pad=10, # Padding to avoid seams |
|
|
pre_pad=0, |
|
|
half=True |
|
|
) |
|
|
|
|
|
# Process large image |
|
|
img = cv2.imread("large_image.png", cv2.IMREAD_COLOR) |
|
|
output, _ = upsampler.enhance(img, outscale=4) |
|
|
cv2.imwrite("large_upscaled.png", output) |
|
|
``` |
|
|
|
|
|
## Model Comparison |
|
|
|
|
|
| Model | Scale | Best For | File Size | Speed | |
|
|
|-------|-------|----------|-----------|-------| |
|
|
| 4x-UltraSharp | 4x | Sharp details, AI-generated images | 64MB | Moderate | |
|
|
| RealESRGAN_x2plus | 2x | Moderate upscaling, faster processing | 64MB | Fast | |
|
|
| RealESRGAN_x4plus | 4x | General purpose 4x upscaling | 64MB | Moderate | |
|
|
|
|
|
**Model Selection Guide**: |
|
|
- **4x-UltraSharp**: Best for AI-generated images needing maximum sharpness |
|
|
- **RealESRGAN_x2plus**: Quick 2x upscaling with balanced quality |
|
|
- **RealESRGAN_x4plus**: General-purpose 4x upscaling for various image types |
|
|
|
|
|
## Model Specifications |
|
|
|
|
|
- **Architecture**: RRDB (Residual in Residual Dense Block) |
|
|
- **Input Channels**: 3 (RGB) |
|
|
- **Output Channels**: 3 (RGB) |
|
|
- **Feature Dimensions**: 64 |
|
|
- **Network Blocks**: 23 (standard configuration) |
|
|
- **Growth Channels**: 32 |
|
|
- **Format**: PyTorch `.pth` files |
|
|
- **Precision**: FP32 (supports FP16 inference) |
|
|
|
|
|
## Performance Tips |
|
|
|
|
|
- **GPU Acceleration**: Use `half=True` for FP16 inference on compatible GPUs (approximately 2x faster) |
|
|
- **Tiling for VRAM**: Enable tiling with `tile=512` to reduce VRAM usage for large images |
|
|
- **Tile Padding**: Use `tile_pad=10` to minimize visible seams between tiles |
|
|
- **Batch Processing**: Process multiple images sequentially to amortize model loading time |
|
|
- **CPU Fallback**: Models work on CPU but will be significantly slower (~10-20x) |
|
|
- **Optimal Scale**: Use 2x for faster processing, 4x for maximum detail enhancement |
|
|
- **Input Quality**: Better input images produce better upscaling results |
|
|
- **File Formats**: Use lossless formats (PNG) for best quality preservation |
|
|
|
|
|
## Use Cases |
|
|
|
|
|
- Post-processing AI-generated images from FLUX.1, Stable Diffusion, etc. |
|
|
- Enhancing FLUX.1-dev outputs for high-resolution prints |
|
|
- Increasing resolution of generated artwork for commercial use |
|
|
- Adding fine details to synthetic images |
|
|
- Print preparation for generated images (posters, canvas prints) |
|
|
- Upscaling video frames for AI video generation pipelines |
|
|
- Restoring and enhancing low-resolution generated content |
|
|
|
|
|
## Installation |
|
|
|
|
|
```bash |
|
|
pip install realesrgan basicsr |
|
|
``` |
|
|
|
|
|
**Dependencies**: |
|
|
- Python 3.8+ |
|
|
- PyTorch 1.7+ |
|
|
- basicsr |
|
|
- realesrgan |
|
|
- opencv-python |
|
|
- numpy |
|
|
|
|
|
## License |
|
|
|
|
|
These models are released under the Apache 2.0 license. |
|
|
|
|
|
## Citation |
|
|
|
|
|
```bibtex |
|
|
@InProceedings{wang2021realesrgan, |
|
|
author = {Xintao Wang and Liangbin Xie and Chao Dong and Ying Shan}, |
|
|
title = {Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data}, |
|
|
booktitle = {International Conference on Computer Vision Workshops (ICCVW)}, |
|
|
year = {2021} |
|
|
} |
|
|
``` |
|
|
|
|
|
## Links and Resources |
|
|
|
|
|
- **Real-ESRGAN Paper**: [arXiv:2107.10833](https://arxiv.org/abs/2107.10833) |
|
|
- **Official Repository**: [xinntao/Real-ESRGAN](https://github.com/xinntao/Real-ESRGAN) |
|
|
- **BasicSR Library**: [xinntao/BasicSR](https://github.com/xinntao/BasicSR) |
|
|
- **Hugging Face**: [Real-ESRGAN Models](https://huggingface.co/models?other=real-esrgan) |
|
|
- **Model Downloads**: Available through official Real-ESRGAN releases |
|
|
|
|
|
## Model Card Contact |
|
|
|
|
|
For questions about Real-ESRGAN models, refer to the official Real-ESRGAN repository and documentation at https://github.com/xinntao/Real-ESRGAN |
|
|
|