Loading...

文章背景图

Real-ESRGAN:图像视频AI超分辨率修复部署指南

2024-08-06
0
- 字
- 分钟
|

Real-ESRGAN:图像视频AI超分辨率修复部署指南

Real-ESRGAN

官方信息

项目名称Real-ESRGAN
仓库地址https://github.com/xinntao/Real-ESRGAN
官方网站GitHub 主页
论文地址arXiv:2107.10833
最新更新2024-08-06
项目定位面向真实世界退化图像的盲超分辨率算法,能把模糊、压缩、噪点严重的老照片/视频放大到 4 倍分辨率并修复细节

项目背景

超分辨率(Super-Resolution)是计算机视觉的经典问题:把一张低分辨率小图放大成高清大图。传统双三次插值放大只是模糊拉伸,而基于深度学习的超分模型(如 SRCNN、ESRGAN)虽然效果好,但训练时用的"退化模型"过于理想化——只考虑 bicubic 下采样,遇到真实世界中 JPEG 压缩噪点、模糊、屏幕拍摄摩尔纹等复杂退化就抓瞎。

Real-ESRGAN 由腾讯 ARC 实验室王鑫涛博士开发,核心创新是用纯合成数据训练:在训练时模拟真实世界的复杂退化过程(多种模糊核、噪声、JPEG 压缩、 sinc 模糊),让模型学会应对各种真实退化。论文发表于 ICCV 2021,一经开源便成为老照片修复、漫画线稿放大、视频补帧等场景的事实标准工具。

项目在 GitHub 上收获超过 28K Star,被集成进 Upscayl、video2x、ComfyUI、WebUI 等几乎所有主流 AI 图像工具,是真正的"基础设施级"开源模型。

核心特性

  • 真实世界退化建模:专门针对 JPEG 压缩、噪点、模糊等真实损伤训练
  • 多模型变体:通用图(RealESRGAN_x4plus)、动漫图(RealESRGAN_x4plus_anime_6B)、通用视频(RealESRGAN_x4plus)
  • 人脸增强:自动集成 GFPGAN 修复人脸,老照片中模糊的人脸也能清晰还原
  • 图像/视频双模式:支持单张图片放大,也支持逐帧超分视频
  • 便携绿色版:提供基于 ncnn 的 Windows/Linux/macOS 可执行文件,无需 Python 环境
  • Python API:可直接 import 到自己的项目中调用
  • 跨 GPU 支持:CUDA、Apple MPS、CPU 都能跑
  • 开源协议:BSD-3-Clause,可商用

环境要求

  • 操作系统:Windows 10+/macOS 12+/Ubuntu 18.04+
  • Python:3.8 ~ 3.10
  • 显卡:NVIDIA GPU 推荐(6GB 显存以上),Apple Silicon M 系列也可,CPU 可跑但慢
  • CUDA:10.1 ~ 12.x
  • 内存:最低 8GB,推荐 16GB
  • 磁盘空间:约 3GB(含模型权重)

详细部署步骤

方式一:pip 安装(最简单)

# 创建虚拟环境
conda create -n realesrgan python=3.10 -y
conda activate realesrgan

# 安装 PyTorch(根据 CUDA 版本选择)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118

# 安装 realesrgan
pip install realesrgan

方式二:源码部署(推荐,含全部模型)

第 1 步:克隆仓库

git clone https://github.com/xinntao/Real-ESRGAN.git
cd Real-ESRGAN

第 2 步:创建环境并安装依赖

conda create -n realesrgan python=3.10 -y
conda activate realesrgan

# 安装 PyTorch
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118

# 安装 basicsr(作者自研的训练推理框架)
pip install basicsr

# 人脸修复相关
pip install facexlib
pip install gfpgan

# 安装其余依赖
pip install -r requirements.txt

# 以开发模式安装本项目
python setup.py develop

第 3 步:验证安装

python inference_realesrgan.py --version

方式三:便携绿色版(无需 Python)

不想装 Python 环境的用户,直接下载官方编译好的 ncnn 可执行文件:

  1. 前往 Releases 页面
  2. 下载对应平台版本:
    • Windows:realesrgan-ncnn-v2.0-windows.zip
    • Linux:realesrgan-ncnn-v2.0-linux.zip
    • macOS:realesrgan-ncnn-v2.0-macos.zip
  3. 解压后把图片拖到 realesrgan-ncnn-v2.exe 上即可自动放大
  4. 命令行用法:
# Windows 命令行示例
realesrgan-ncnn-v2.exe -i input.jpg -o output.png -n realesrgan-x4plus -s 4

# 参数说明:
# -i 输入图片
# -o 输出图片
# -n 模型名(realesrgan-x4plus / realesr-animevideov3 / realesrgan-x4plus-anime)
# -s 放大倍数(2/3/4)
# -f 输出格式(jpg/png)

使用方法

图片超分辨率(源码版)

# 通用图片放大 4 倍
python inference_realesrgan.py -n RealESRGAN_x4plus -i inputs/ -o results/ --face_enhance

# 动漫图片专用模型
python inference_realesrgan.py -n RealESRGAN_x4plus_anime_6B -i anime.png -o anime_hd.png

# 参数说明:
# -n 指定模型名
# -i 输入文件或目录
# -o 输出目录
# --face_enhance 启用人脸增强(老照片必备)
# --tile 分块大小(显存不够时调小,如 --tile 256)

视频超分辨率

# 把视频拆帧 → 逐帧超分 → 合成视频
python inference_realesrgan.py -n RealESRGAN_x4plus -i video.mp4 -o video_out.mp4 --face_enhance

# 注意:视频模式会自动调用 FFmpeg 拆帧合成,请确保已安装 FFmpeg

Python API 调用

from realesrgan import RealESRGANer
from PIL import Image

# 初始化超分器
upsampler = RealESRGANer(
    scale=4,
    model_path='https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth',
    model=None,
    tile=0,
    tile_pad=10,
    pre_pad=0,
    half=True  # GPU 用 True,CPU 用 False
)

# 处理图片
img = Image.open('old_photo.jpg')
output, _ = upsampler.enhance(np.array(img), outscale=4)
Image.fromarray(output).save('old_photo_hd.png')

常见问题 FAQ

Q1:报"CUDA out of memory"怎么办?
A:加大 --tile 参数(如 --tile 256 或 --tile 128),分块处理可以显著降低显存占用。8GB 显存建议 tile=256,4GB 显存建议 tile=128。

Q2:macOS M 系列芯片能跑吗?
A:源码版支持 MPS 后端,但首次安装需要修改代码把 device 改为 'mps'。更推荐直接下载 macOS 便携版 ncnn 可执行文件,性能最好。

Q3:处理动漫图用哪个模型?
A:用 RealESRGAN_x4plus_anime_6B 模型,专门针对二次元线条优化,效果远好于通用模型。视频超分则推荐 realesr-animevideov3。

Q4:老照片里人脸模糊,怎么修复?
A:加 --face_enhance 参数,会自动调用 GFPGAN 模型检测并修复人脸。这是老照片修复的标配。

Q5:为什么 pip 安装的 realesrgan 和源码版效果不一样?
A:pip 包可能不是最新版本,且不包含全部模型权重。生产环境建议用源码版,模型权重会自动从 GitHub Releases 下载。

跳转链接

评论交流

文章目录