【图像恢复算法】 ESRGAN Real-ESRGAN的配置和应用
目录
一、什么是ESRGAN?什么是Real-ESRGAN?
1.ESRGAN
2.Real-ESRGAN
二、环境配置
1.ESRGAN
2.Real-ESRGAN
三、修复实战
1.ESRGAN
2.Real-ESRGAN
四、常见问题
1.CUDA out of memory
2.Error: No module named 'torchvision.transforms.functional_tensor'
一、什么是ESRGAN?什么是Real-ESRGAN?
1.ESRGAN
ESRGAN 由 Xintao Wang 等人于 2018 年提出,旨在通过对抗生成网络(GAN)进一步提升图像超分辨率重建的视觉效果。它是在 SRGAN(Super‑Resolution GAN)的基础上改进而来,重点解决了高频细节表现不足和生成结果偏“平滑”的问题。
- 优点:生成的细节更丰富、纹理更自然;在多项基准测试(如 DIV2K)上视觉效果显著提升。
- 局限:主要针对“理想降采样”场景(bicubic 降采样);对真实世界的噪声、模糊等退化情况适应性较差。
2.Real-ESRGAN
真实场景中的低分图像通常包含各种不可预知的退化:相机噪声、压缩伪影、镜头模糊等。Real‑ESRGAN 在 ESRGAN 的基础上,引入更贴近真实退化的训练策略,使模型对多种劣化情况具备鲁棒性。
- 对各种真实低质图像(监控、老照片、网络截图等)具有更好恢复能力。
- 在公开的“RealSR”数据集上,相比 ESRGAN、SRGAN 等传统方法,主观和客观指标均有显著提升。
二、环境配置
CUDA和CUDNN的配置不过多赘述,需要的可以参考之前的记录YOLO系列环境配置及训练_yolo环境配置-CSDN博客
1.ESRGAN
- Python 3
- PyTorch >= 1.0 (CUDA version >= 7.5 if installing with CUDA. )
- Python packages:
pip install numpy opencv-python
- 创建虚拟环境
# 创建conda虚拟环境
conda create -n esrgan python=3.9# 激活并进入环境
conda activate esrgan
- torch安装 及其他库安装(以ubuntu系统和CUDA11.8为例)
# torch安装
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 其他
pip install numpy opencv-python
- 克隆代码至本地,下载预训练模型
git clone https://github.com/xinntao/ESRGAN
cd ESRGAN
模型下载:ESRGAN_models_免费高速下载|百度网盘-分享无限制
2.Real-ESRGAN
环境创建及torch安装同ESRGAN
- 项目克隆到本地
git clone https://github.com/xinntao/Real-ESRGAN.git
cd Real-ESRGAN
- 安装各种依赖
# 安装 basicsr - https://github.com/xinntao/BasicSR
# 使用BasicSR来训练以及推断
pip install basicsr
# facexlib和gfpgan是用来增强人脸的
pip install facexlib
pip install gfpgan
pip install -r requirements.txt
python setup.py develop
- 预训练模型下载
# RealESRGAN_x4plus.pth
wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth -P weights# RealESRGAN_x4plus_anime_6B
wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth -P weights
RealESRGAN_x4plus.pth 和 RealESRGAN_x4plus_anime_6B 的区别在于,后者anime针对模型尺寸小得多的动漫图像进行了优化。
三、修复实战
1.ESRGAN
在ESRGAN项目文件夹中找到 test.py 文件,将参数test_img_folder的内容改为自己需要处理图片的文件夹路径(或者我们把图片直接放入项目默认的LR文件夹中),直接运行即可
修复后的图片会在ESRGAN项目的results 文件夹中,可以看到效果还是很不错的
2.Real-ESRGAN
直接在命令窗口执行,注意:先cd至Real-ESRGAN项目所在目录
python inference_realesrgan.py -n RealESRGAN_x4plus -i inputs --face_enhance
命令各参数如下:
-h show this help -i --input Input image or folder. Default: inputs -o --output Output folder. Default: results -n --model_name Model name. Default: RealESRGAN_x4plus -s, --outscale The final upsampling scale of the image. Default: 4 --suffix Suffix of the restored image. Default: out -t, --tile Tile size, 0 for no tile during testing. Default: 0 --face_enhance Whether to use GFPGAN to enhance face. Default: False --fp32 Whether to use half precision during inference. Default: False --ext Image extension. Options: auto | jpg | png, auto means using the same extension as inputs. Default: auto
效果如下:(可以看到明显清晰了很多)
四、常见问题
1.CUDA out of memory
修改参数tile,根据情况设置即可
python inference_realesrgan.py -n RealESRGAN_x4plus -i input --tile 200
2.Error: No module named 'torchvision.transforms.functional_tensor'
高版本pytorch的torchvision.transforms._functional_tensor名字改了,在前面加了一个下划线,但是torchvision.transforms.augmentation里面的import没把名字改过来,所以会找不到
import torchvision.transforms._functional_tensor as F_t