这是是一个基于 RealESRGAN 算法的 Windows 桌面应用程序演示,用于对图像进行超分辨率增强处理。本项目使用 C# WinForms 开发,通过 ONNX Runtime 加载 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 加速推理)

依赖库

包名 版本 说明
OpenCvSharp4 4.13.0 OpenCV 的 .NET 封装,用于图像处理
Microsoft.ML.OnnxRuntime 1.20.1 ONNX 模型推理运行时
System.Drawing.Common 10.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 加速(可选)

如果计算机配备 NVIDIA GPU 并已安装 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 包配置文件
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐