基于C#winform部署RealESRGAN的onnx模型实现超分辨率图片无损放大模糊图片变清晰
这是是一个基于 RealESRGAN 算法的 Windows 桌面应用程序演示用于对图像进行超分辨率增强处理。本项目使用 C# WinForms 开发通过 ONNX Runtime 加载 RealESRGAN 模型实现高质量的图像放大与细节重建。效果展示算法原理RealESRGAN 简介RealESRGANReal-World Enhanced Super-Resolution Generative Adversarial Networks是一种针对真实世界图像的超分辨率重建算法生成对抗网络GAN采用生成器-判别器架构生成器负责重建高分辨率图像判别器评估图像真实性ESRGAN 基础在 ESRGAN 基础上改进专门针对真实场景下的退化图像进行优化高阶退化模拟通过模拟真实世界中复杂的图像退化过程模糊、噪声、压缩伪影等进行训练U-Net 判别器使用 U-Net 结构的判别器提供像素级的真实感判断处理流程图像预处理将输入图像转换为 FP32 浮点型并归一化到 [0, 1] 范围维度转换将图像从 HWC高×宽×通道格式转换为 CHW通道×高×宽格式模型推理通过 ONNX Runtime 执行神经网络前向传播后处理将输出张量转换回图像格式进行反归一化和像素值裁剪0-255结果输出生成增强后的高分辨率图像环境要求系统要求操作系统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. 克隆或下载项目gitclone项目仓库地址或直接下载项目压缩包并解压。2. 安装 Visual Studio确保已安装 Visual Studio 2019 或更高版本并包含以下工作负载.NET 桌面开发3. 还原 NuGet 包打开项目后Visual Studio 会自动还原 NuGet 包。如需手动还原在解决方案资源管理器中右键点击解决方案选择还原 NuGet 包4. 准备模型文件将 RealESRGAN ONNX 模型文件放置在bin/x64/Release/weights/目录下weights/ ├── RealESRGAN_x2.onnx # 2倍放大模型 ├── RealESRGAN_x4.onnx # 4倍放大模型 └── RealESRGAN_x8.onnx # 8倍放大模型注意模型文件需要单独下载可参考 real-esrgan-onnx 项目获取。运行步骤编译运行使用 Visual Studio 打开FIRC.sln解决方案文件选择配置为Release平台为x64按F5或点击开始按钮运行程序直接使用如果已存在编译好的版本进入bin/x64/Release/目录双击运行FIRC.exe使用说明选择模型从下拉列表中选择要使用的 RealESRGAN 模型x2/x4/x8加载模型点击加载模型按钮等待模型加载完成选择图像点击选择图像按钮选择要增强的图像文件支持 JPG、PNG、BMP 格式开始增强点击开始增强按钮程序将自动处理并保存结果查看结果增强后的图像将保存在原图像所在目录的enhanced文件夹中CUDA 加速可选如果计算机配备 NVIDIA GPU 并已安装 CUDA勾选使用 CUDA选项加载模型时将自动使用 GPU 加速推理注意事项模型文件首次使用前请确保已下载 RealESRGAN ONNX 模型文件并放置在正确位置内存占用处理高分辨率图像时需要较大内存建议处理前关闭其他占用内存较大的程序图像尺寸程序会自动处理奇数尺寸的图像裁剪为偶数可能导致极轻微的边缘像素损失CUDA 支持使用 GPU 加速需要NVIDIA 显卡计算能力 5.0 及以上安装 CUDA Toolkit 和 cuDNN确保显卡驱动为最新版本输出格式增强后的图像保持与原图相同的格式JPG/PNG/BMP文件名规则输出文件命名格式为{原文件名}_x{放大倍数}_enhanced.{扩展名}异常处理如遇到模型加载失败或处理错误请检查模型文件是否完整是否选择了正确的平台配置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 包配置文件