Real-ESRGAN:用纯合成数据训练的真实世界盲超分辨率算法
Real-ESRGAN 是由腾讯 ARC Lab 与中国科学院深圳先进技术研究院联合开发的图像/视频修复算法,旨在解决真实世界中低分辨率图像的复原问题。项目自 2021 年开源以来,已成为最流行的图像超分辨率工具之一1)。
背景与动机
传统的超分辨率(Super-Resolution, SR)方法通常假设低分辨率图像的降质过程是已知且简单的(如双三次降采样)。然而,真实世界的图像退化往往复杂且未知,包含噪声、模糊、JPEG 压缩伪影、振铃效应等多种混合因素。
Real-ESRGAN 的核心创新在于使用纯合成数据来模拟这些复杂降质,从而训练出一个能应对真实世界退化场景的模型2)。
技术原理
Real-ESRGAN 在经典的 ESRGAN(Enhanced Super-Resolution GAN)架构基础上做了三方面的扩展:
高阶降质建模(High-Order Degradation Model):传统的 ESRGAN 使用一阶降质模型(模糊 → 降采样 → 噪声 → JPEG 压缩),Real-ESRGAN 引入了高阶(second-order)降质过程,即重复应用多个降质阶段。这能更好地模拟真实世界中叠加的、复杂的降质链。
振铃与过冲伪影的模拟:在实际图像处理流程中(如锐化、压缩),常会出现振铃(ringing)和过冲(overshoot)伪影。Real-ESRGAN 在合成训练数据时特意模拟了这些现象,使模型学会去除它们。
U-Net 判别器 + 谱归一化:采用 U-Net 结构的判别器取代传统的 PatchGAN,配合谱归一化(Spectral Normalization)来稳定 GAN 的训练过程,提升判别能力。
可用模型
Real-ESRGAN 官方提供了多个针对不同场景优化的预训练模型3):
| 模型名称 | 适用场景 | 缩放倍数 | 特点 |
|---|---|---|---|
| RealESRGAN_x4plus | 通用图片 | ×4 | 主力模型,适用范围最广 |
| RealESRGAN_x2plus | 通用图片 | ×2 | 适合轻度放大需求 |
| RealESRGAN_x4plus_anime_6B | 动漫/插画 | ×4 | 针对二次元图片优化,体积小、效果好 |
| realesr-general-x4v3 | 通用场景 | ×4 | 小模型,支持 -dn 降噪强度调节 |
| RealESRGAN AnimeVideo-v3 | 动漫视频 | ×2/×3/×4 | 小体积模型,专为视频帧修复设计 |
安装方式
Real-ESRGAN 提供三种使用方式,满足不同用户需求。
1. Python 包(pip 安装)
适合需要集成到 Python 项目中的开发者:
pip install basicsr facexlib gfpgan pip install realesrgan
或从源码安装:
git clone https://github.com/xinntao/Real-ESRGAN.git cd Real-ESRGAN pip install -r requirements.txt python setup.py develop
2. 便携版可执行文件(NCNN)
适合不想配置 Python/CUDA 环境的普通用户。Real-ESRGAN 基于 ncnn 框架提供了跨平台的绿色版可执行文件4):
这些可执行文件无需 CUDA 或 PyTorch 环境即可运行,支持 Intel/AMD/Nvidia 显卡。
3. 在线体验
无需安装,直接在浏览器中使用:
基本使用
Python 命令方式:
# 4 倍放大,带人脸增强 python inference_realesrgan.py -n RealESRGAN_x4plus -i input.jpg --face_enhance # 对动漫图片使用专用模型 python inference_realesrgan.py -n RealESRGAN_x4plus_anime_6B -i anime_input.png
NCNN 可执行文件方式:
./realesrgan-ncnn-vulkan -i input.jpg -o output.png -n realesrgan-x4plus
参数说明:
| 参数 | 说明 |
|---|---|
| -n / –model_name | 选择模型(如 RealESRGAN_x4plus) |
| -s / –outscale | 最终放大倍数(默认 4) |
| -t / –tile | 分块大小,大图建议设为 0(自动)或 256 |
| –face_enhance | 启用 GFPGAN 人脸增强(需安装 facexlib + gfpgan) |
| –fp32 | 使用 fp32 精度(默认 fp16 半精度) |
GFPGAN 人脸增强集成
Real-ESRGAN 集成了腾讯 ARC Lab 的另一明星项目 GFPGAN(Generative Facial Prior GAN),专门用于人脸修复。启用 ``–face_enhance`` 参数后,系统会先检测图像中的人脸区域,再用 GFPGAN 进行面部细节修复,最后与超分辨率结果融合5)。
安装依赖:
pip install facexlib gfpgan
然后使用:
python inference_realesrgan.py -n RealESRGAN_x4plus -i old_photo.jpg --face_enhance
典型应用场景
老照片修复:对扫描或翻拍的老照片进行去噪、去模糊和放大,配合 GFPGAN 人脸增强后效果尤为明显。
动漫/插画放大:RealESRGAN_x4plus_anime_6B 模型专为二次元图片优化,效果超越传统的 waifu2x6)。
游戏纹理增强:将低分辨率游戏纹理放大到 4K 画质,广泛用于经典游戏的高清化 Mod。
动漫视频修复:AnimeVideo-v3 模型可逐帧处理视频,实现动漫的清晰度提升7)。
系统需求
| 运行方式 | 最低配置 | 推荐配置 |
|---|---|---|
| Python (PyTorch) | NVIDIA GPU 4GB VRAM + CUDA | NVIDIA GPU 6GB+ VRAM |
| NCNN 可执行文件 | Intel/AMD/Nvidia GPU | 任何支持 Vulkan 的 GPU |
| CPU 运行 | 16GB RAM(速度慢) | 32GB RAM |
| Colab 在线 | 浏览器即可 | 免费 T4 GPU |
CPU 模式下也可以运行,但对于大图处理速度较慢,建议使用 GPU。
相关生态项目
Real-ESRGAN 生态系统中有多个衍生项目和图形界面工具8):
| 项目名称 | 类型 |
|---|---|
| Waifu2x-Extension-GUI | 桌面图形界面,支持批量处理 |
| Upscayl | 跨平台 AI 图像放大 GUI |
| chaiNNer | 节点式 AI 图像处理流水线 |
| vs-realesrgan | VapourSynth 视频处理插件 |
| RealSR-NCNN-Android | 手机端 NCNN 实现 |
此外,同团队的相关项目还包括:
总结
Real-ESRGAN 通过创新的高阶降质建模、纯合成数据训练策略和 GAN 架构优化,弥合了学术超分辨率算法与真实世界应用之间的鸿沟。其 BSD-3-Clause 开源协议、多平台支持和活跃的社区生态,使其成为图像修复领域最值得推荐的工具之一。