基于C#winform部署RealESRGAN的onnx模型实现超分辨率图片无损放大模糊图片变清晰
这是是一个基于 RealESRGAN 算法的 Windows 桌面应用程序演示,用于对图像进行超分辨率增强处理。本项目使用 C# WinForms 开发,通过ONNXRuntime 加载 RealESRGAN 模型,实现高质量的图像放大与细节重建。
效果展示
算法原理
RealESRGAN 简介
RealESRGAN(Real-World Enhanced Super-Resolution Generative Adversarial Networks)是一种针对真实世界图像的超分辨率重建算法:
- • 生成对抗网络(GAN) :采用生成器-判别器架构,生成器负责重建高分辨率图像,判别器评估图像真实性
- • ESRGAN 基础 :在 ESRGAN 基础上改进,专门针对真实场景下的退化图像进行优化
- • 高阶退化模拟 :通过模拟真实世界中复杂的图像退化过程(模糊、噪声、压缩伪影等)进行训练
- • U-Net 判别器 :使用 U-Net 结构的判别器,提供像素级的真实感判断
处理流程
- 1. 图像预处理 :将输入图像转换为 FP32 浮点型并归一化到 [0, 1] 范围
- 2. 维度转换 :将图像从 HWC(高×宽×通道)格式转换为 CHW(通道×高×宽)格式
- 3. 模型推理 :通过 ONNX Runtime 执行神经网络前向传播
- 4. 后处理 :将输出张量转换回图像格式,进行反归一化和像素值裁剪(0-255)
- 5. 结果输出 :生成增强后的高分辨率图像
环境要求
系统要求
- • 操作系统 :Windows 10/11 (x64)
- • 开发环境 :Visual Studio 2019 或更高版本
- • 目标框架 :.NET Framework 4.7.2
硬件要求
- • 最低配置 :
- • CPU:支持 x64 指令集的处理器
- • 内存:4GB RAM
- • 显卡:集成显卡(CPU 推理模式)
- • 推荐配置 :
- • CPU:多核处理器
- • 内存:8GB RAM 或更高
- • 显卡:NVIDIA GPU(支持 CUDA,用于 GPU 加速推理)
依赖库
包名版本说明OpenCvSharp44.13.0OpenCV 的 .NET 封装,用于图像处理Microsoft.ML.OnnxRuntime1.20.1ONNX 模型推理运行时System.Drawing.Common10.0.3图像绘制支持
安装步骤
1. 克隆或下载项目
git clone <项目仓库地址>
或直接下载项目压缩包并解压。
2. 安装Visual Studio
确保已安装 Visual Studio 2019 或更高版本,并包含以下工作负载:
- • .NET 桌面开发
3. 还原NuGet包
打开项目后,Visual Studio 会自动还原 NuGet 包。如需手动还原:
- 1. 在解决方案资源管理器中右键点击解决方案
- 2. 选择"还原 NuGet 包"
4. 准备模型文件
将 RealESRGAN ONNX 模型文件放置在 bin/x64/Release/weights/ 目录下:
weights/
├── RealESRGAN_x2.onnx # 2倍放大模型
├── RealESRGAN_x4.onnx # 4倍放大模型
└── RealESRGAN_x8.onnx # 8倍放大模型
注意 :模型文件需要单独下载,可参考 real-esrgan-onnx 项目获取。
运行步骤
编译运行
- 1. 使用 Visual Studio 打开
FIRC.sln解决方案文件 - 2. 选择配置为 Release ,平台为 x64
- 3. 按
F5或点击"开始"按钮运行程序
直接使用
如果已存在编译好的版本:
- 1. 进入
bin/x64/Release/目录 - 2. 双击运行
FIRC.exe
使用说明
- 1. 选择模型 :从下拉列表中选择要使用的 RealESRGAN 模型(x2/x4/x8)
- 2. 加载模型 :点击"加载模型"按钮,等待模型加载完成
- 3. 选择图像 :点击"选择图像"按钮,选择要增强的图像文件(支持 JPG、PNG、BMP 格式)
- 4. 开始增强 :点击"开始增强"按钮,程序将自动处理并保存结果
- 5. 查看结果 :增强后的图像将保存在原图像所在目录的
enhanced文件夹中
CUDA加速(可选)
如果计算机配备NVIDIAGPU 并已安装 CUDA:
- 1. 勾选"使用 CUDA"选项
- 2. 加载模型时将自动使用 GPU 加速推理
注意事项
- 1. 模型文件 :首次使用前请确保已下载 RealESRGAN ONNX 模型文件并放置在正确位置
- 2. 内存占用 :处理高分辨率图像时需要较大内存,建议处理前关闭其他占用内存较大的程序
- 3. 图像尺寸 :程序会自动处理奇数尺寸的图像(裁剪为偶数),可能导致极轻微的边缘像素损失
- 4. CUDA 支持 :使用 GPU 加速需要:
- • NVIDIA 显卡(计算能力 5.0 及以上)
- • 安装 CUDA Toolkit 和 cuDNN
- • 确保显卡驱动为最新版本
- 5. 输出格式 :增强后的图像保持与原图相同的格式(JPG/PNG/BMP)
- 6. 文件名规则 :输出文件命名格式为
{原文件名}_x{放大倍数}_enhanced.{扩展名} - 7. 异常处理 :如遇到模型加载失败或处理错误,请检查:
- • 模型文件是否完整
- • 是否选择了正确的平台配置(x64)
- • 系统是否满足运行要求
文件夹结构
FIRC/
├── .qoder/ # Qoder 编辑器配置
│ ├── agents/
│ └── skills/
├── .vs/ # Visual Studio 临时文件
├── Properties/ # 项目属性文件
│ ├── AssemblyInfo.cs # 程序集信息
│ ├── Resources.resx # 资源文件
│ └── Settings.settings # 应用程序设置
├── bin/
│ └── x64/
│ ├── Debug/ # 调试输出目录
│ └── Release/ # 发布输出目录
│ ├── dll/x64/ # OpenCV 外部依赖 DLL
│ ├── weights/ # RealESRGAN 模型文件目录
│ │ ├── RealESRGAN_x2.onnx
│ │ ├── RealESRGAN_x4.onnx
│ │ └── RealESRGAN_x8.onnx
│ └── FIRC.exe # 可执行文件
├── images/ # 示例图像目录
│ ├── enhanced/ # 增强后的图像输出
│ └── 1.png # 示例输入图像
├── packages/ # NuGet 包缓存目录
├── App.config # 应用程序配置文件
├── FIRC.csproj # 项目文件
├── FIRC.sln # 解决方案文件
├── Form1.cs # 主窗体逻辑代码
├── Form1.Designer.cs # 窗体设计器代码
├── Form1.resx # 窗体资源文件
├── Program.cs # 程序入口点
├── RealESRGAN.cs # RealESRGAN 模型封装类
└── packages.config # NuGet 包配置文件