Real-ESRGAN超分辨率实战:从环境搭建到4倍高清还原

发布时间:2026/7/21 17:59:39

Real-ESRGAN超分辨率实战:从环境搭建到4倍高清还原 Real-ESRGAN 超分辨率实战从环境搭建到 4 倍高清还原一、引言在实际项目中我们经常遇到低分辨率图像需要放大的场景监控视频取证、老照片修复、医学影像增强、卫星图像处理等。传统的双三次插值Bicubic放大后图像模糊、细节丢失严重。Real-ESRGAN是腾讯 ARC 实验室开源的盲超分辨率模型能够将低分辨率图像放大 4 倍甚至更多同时恢复逼真的纹理细节。本文将带你从零开始搭建 Real-ESRGAN 环境完成第一张图像的超分辨率还原。二、Real-ESRGAN 技术原理速览Real-ESRGAN 基于 ESRGANEnhanced Super-Resolution GAN改进核心创新在于高阶退化建模High-order Degradation Model传统超分模型假设输入是理想的下采样图像但真实世界的低分辨率图像包含模糊、噪声、JPEG 压缩伪影等多种退化。Real-ESRGAN 使用二阶退化管线模拟真实退化过程HR → [Blur Downsample Noise JPEG] → [Blur Downsample Noise JPEG] → LRRRDBNetResidual-in-Residual Dense Block Network生成器采用 RRDB 结构在残差块内部使用密集连接最大化信息流动每个 RRDB 包含 3 个密集连接的卷积层残差缩放因子 β0.2稳定训练总共 23 个 RRDB 块约 1600 万参数U-Net 判别器 频谱归一化增强判别器对全局和局部纹理的感知能力避免伪影。纯合成数据训练完全使用合成的退化图像训练但通过多样化的退化管线在真实场景中表现出色。三、环境搭建3.1 创建虚拟环境conda create-nrealesrganpython3.9-yconda activate realesrgan3.2 安装依赖# 克隆仓库gitclone https://github.com/xinntao/Real-ESRGAN.gitcdReal-ESRGAN# 安装 PyTorch根据 CUDA 版本选择pipinstalltorch2.0.1torchvision0.15.2 --index-url https://download.pytorch.org/whl/cu118# 安装其他依赖pipinstallbasicsr pipinstallfacexlib pipinstallgfpgan pipinstallopencv-python pipinstallnumpy3.3 下载预训练模型# 下载通用模型推荐wgethttps://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth-Pweights/# 下载动漫专用模型可选wgethttps://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth-Pweights/四、图像超分辨率实战4.1 命令行快速使用# 单张图像 4 倍放大python inference_realesrgan.py\-nRealESRGAN_x4plus\-iinput.jpg\-ooutput.jpg\--outscale4\--face_enhance# 批量处理python inference_realesrgan.py\-nRealESRGAN_x4plus\-i./input_folder/\-o./output_folder/\--outscale4\--suffix_4x4.2 Python API 调用importcv2importtorchimportnumpyasnpfrombasicsr.archs.rrdbnet_archimportRRDBNetfromrealesrganimportRealESRGANerdefsuper_resolve_image(input_path,output_path,scale4):\\\ 使用 Real-ESRGAN 进行图像超分辨率 \\\# 1. 加载模型modelRRDBNet(num_in_ch3,num_out_ch3,num_feat64,num_block23,num_grow_ch32,scalescale)# 2. 创建上采样器upsamplerRealESRGANer(scalescale,model_pathweights/RealESRGAN_x4plus.pth,modelmodel,tile400,# 分块处理避免 OOMtile_pad10,pre_pad0,halfFalse# FP16 推理需 GPU 支持)# 3. 读取图像imgcv2.imread(input_path,cv2.IMREAD_COLOR)h,wimg.shape[:2]print(fInput:{w}x{h})# 4. 超分辨率处理output,_upsampler.enhance(img,outscalescale)h_new,w_newoutput.shape[:2]print(fOutput:{w_new}x{h_new})# 5. 保存结果cv2.imwrite(output_path,output)print(fSaved to{output_path})returnoutput# 使用示例if__name____main__:super_resolve_image(input.jpg,output_4x.png,scale4)4.3 关键参数说明参数说明推荐值tile分块大小显存不足时减小4008GB显存tile_pad块边缘填充像素10pre_pad预处理填充0halfFP16 推理降低显存占用TrueRTX 20xxoutscale输出放大倍数4默认alpha_upsampler二次上采样方法‘realesrgan’4.4 人脸增强Real-ESRGAN 内置了 GFPGAN 人脸增强upsamplerRealESRGANer(scale4,model_pathweights/RealESRGAN_x4plus.pth,modelmodel,tile400,face_enhanceTrue# 启用人脸增强)五、效果对比与评估指标5.1 常用评估指标fromskimage.metricsimportpeak_signal_noise_ratioaspsnrfromskimage.metricsimportstructural_similarityasssimimportlpips# PSNR SSIMpsnr_valuepsnr(gt_img,sr_img)ssim_valuessim(gt_img,sr_img,channel_axis2)# LPIPS感知相似度loss_fnlpips.LPIPS(netalex)lpips_valueloss_fn(gt_tensor,sr_tensor).item()5.2 典型效果数据方法PSNR↑SSIM↑LPIPS↓推理时间(512×512)Bicubic26.880.8250.3401msESRGAN27.510.8350.195120msReal-ESRGAN28.120.8420.178150msReal-ESRGAN28.350.8480.165180ms六、常见问题与解决方案6.1 OOM显存不足减小tile参数如 200启用halfTrue降低输入图像分辨率6.2 输出图像偏色检查输入图像是否为 RGB 格式cv2.imread默认读取为 BGR需转换cv2.cvtColor(img, cv2.COLOR_BGR2RGB)6.3 纹理过度锐化使用RealESRGAN_x4plus通用模型而非anime模型调低outscale七、总结Real-ESRGAN 是目前最实用的开源超分辨率方案之一在盲超分场景下的效果远超传统插值方法。本文覆盖了从环境搭建、模型推理到参数调优的完整流程。下一篇我们将深入 RRDBNet 架构解析其设计精髓。参考资源项目地址https://github.com/xinntao/Real-ESRGAN论文Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data在线 Demohttps://huggingface.co/spaces/akhaliq/Real-ESRGAN

相关新闻