基于C#winform部署APISR算法的onnx模型实现动漫图片超分辨率无损放大模糊图片变清晰
效果展示
📖 项目简介
这是一个基于 APISR(Anime Processing with ISR GAN) 深度学习模型的图像超分辨率处理工具。该工具使用 C# WinForms 开发,通过 ONNX Runtime 进行模型推理,能够将低分辨率图像放大 4 倍,同时保持图像细节清晰锐利。
✨ 主要特性
- • 🎯 4 倍超分辨率放大 :采用先进的 GAN 网络结构
- • 🚀 硬件加速 :支持 CPU 和 CUDA GPU 两种推理模式
- • 🎨 RGB 颜色空间处理 :完整保留色彩信息
- • 💻 现代化界面 :采用 Material Design 扁平化设计风格
- • ⚡ 实时性能显示 :显示推理耗时和输出尺寸
- • 🔧 易于部署 :C# winform 开发,独立可执行文件
🧠 算法原理
APISR 模型架构
APISR(AnimeProcessing with ISR GAN)是一种基于生成对抗网络(GAN)的图像超分辨率模型,专门针对动漫和插画图像优化。
网络结构特点
输入图像 (H×W×3, RGB) ↓ 预处理 ├─ BGR → RGB 转换 ├─ 尺寸填充(确保能被 4 整除) ├─ 归一化到 [0,1] ↓ GRL (Global Residual Learning) 主干网络 ├─ 多层残差块提取特征 ├─ 全局跳跃连接 ↓ 上采样层 ├─ PixelShuffle 亚像素卷积 ├─ 4 倍放大 ↓ 后处理 ├─ RGB → BGR 转换 ├─ 裁剪填充区域 ↓ 输出图像 (4H×4W×3, RGB)
核心技术
- 1. GRL(Global Residual Learning)
- • 通过全局残差学习提升训练稳定性
- • 深层网络也能有效收敛
- • 保留低频信息的同时增强高频细节
- 2. GAN 对抗训练
- • 生成器(Generator):负责超分辨率重建
- • 判别器(Discriminator):区分真实图像和生成图像
- • 对抗损失使结果更加逼真自然
- 3. RGB 三通道联合处理
- • 与 ESPCN 不同,APISR 同时处理 R、G、B 三个通道
- • 更好地保留色彩信息和纹理细节
- • 适合动漫、插画等色彩丰富的图像
- 4. 边缘填充策略
- • 输入尺寸必须能被 4 整除
- • 使用零填充(zero-padding)补齐尺寸
- • 推理完成后裁剪回原始比例的 4 倍
数学公式
全局残差学习的核心思想:
F(x) = x + G(x)
其中:
- •
x是输入图像 - •
G(x)是网络学习的残差映射 - •
F(x)是最终输出(原始图像 + 残差)
💻 环境要求
开发环境
组件版本要求说明操作系统Windows 10/11 (64 位)必须为 64 位系统IDEVisual Studio 2019 Community/Professional/Enterprise需包含".NET 桌面开发"工作负载.NET Framework4.7.2 或以上VS 2019 默认集成C# 语言版本5.0项目已配置MSBuild16.0 或以上VS 2019 自带
运行环境
最低配置
- • CPU :Intel Core i3 或同等处理器
- • 内存 :4 GB RAM
- • 硬盘空间 :500 MB 可用空间
- • 显卡 :支持 DirectX 11 的集成显卡
推荐配置
- • CPU :Intel Core i5 或更高
- • 内存 :8 GB RAM
- • 硬盘空间 :1 GB 可用空间(含 CUDA)
- • 显卡 :NVIDIA GTX 1060 或更高(支持 CUDA 加速),注意不支持 RTX500 系列显卡
CUDA加速要求(可选)
如需启用 GPU 加速,需要:
组件版本下载地址NVIDIA 显卡驱动≥ 451.48NVIDIA 官网CUDA Toolkit 12.x12.0 或以上NVIDIA CUDAcuDNN9.xNVIDIA cuDNN
注意 :项目已内置 CUDA 12.x 运行时 DLL,通常无需单独安装 CUDA Toolkit。
📦 安装步骤
步骤 1:克隆或下载项目
# 如果使用 Git
git clone
cd FIRC
# 或直接解压下载的 ZIP 文件
步骤 2:准备ONNX模型文件
将 APISR 模型文件放置到指定目录:
# 模型文件应位于以下路径
FIRC/
└── bin/
└── x64/
└── Release/
└── weights/
└── 4x_APISR_GRL_GAN_generator.onnx.onnx # 4 倍放大模型
模型获取方式 :
- 1. 从 APISR 官方仓库下载预训练模型
- 2. 或自行训练并导出为 ONNX 格式
步骤 3:安装依赖包
项目已通过 NuGet 配置自动恢复依赖,如需手动安装:
# 在 Visual Studio 中打开 FIRC.sln
# 右键解决方案 → 管理 NuGet 程序包
# 安装以下包:
# 或使用 Package Manager Console
Install-Package Microsoft.ML.OnnxRuntime.Gpu -Version 1.20.1
Install-Package OpenCvSharp4 -Version 4.10.0.20241024
Install-Package OpenCvSharp4.Extensions -Version 4.10.0.20241024
步骤 4:编译项目
方法一:Visual Studio 图形界面
- 1. 双击打开
FIRC.sln解决方案文件 - 2. 顶部菜单栏选择: 生成 → 重新生成解决方案
- 3. 等待编译完成,输出窗口应显示"成功 1 个"
方法二:命令行编译
# 打开"Developer Command Prompt for VS 2019"
cd C:\Users\Administrator\Downloads\FIRC
# 清理并编译 Release 版本
& "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" FIRC.sln /p:Configuration=Release /p:Platform=x64 /t:Rebuild /verbosity:minimal
步骤 5:验证编译结果
编译成功后,检查以下文件是否存在:
bin/x64/Release/
├── FIRC.exe # 主程序(必需)
├── FIRC.pdb # 调试符号(可选)
├── Microsoft.ML.OnnxRuntime.dll
├── OpenCvSharp.dll
├── OpenCvSharp.Extensions.dll
└── weights/
└── 4x_APISR_GRL_GAN_generator.onnx.onnx
🚀 运行步骤
首次启动
- 1. 启动程序
# 方式 1:直接双击
bin\x64\Release\FIRC.exe
# 方式 2:命令行启动
cd bin\x64\Release
.\FIRC.exe
- 2. 检查界面
- • 窗口标题:“APISR 图像超分辨率工具 - GAN 模型”
- • 状态栏应显示:“状态:请加载 APISR 模型”(橙色文字)
- • 模型信息显示:“当前模型:4x_APISR_GRL_GAN (4 倍放大)”
完整使用流程
1️⃣ 加载模型
点击 “🔧 加载模型” 按钮:
- • 程序会自动从
weights文件夹读取4x_APISR_GRL_GAN_generator.onnx.onnx文件 - • 加载成功后,状态栏变为绿色:“状态:✓ APISR 模型已加载 (4 倍) [CPU]”
- • 此时 “⚡ 开始推理” 按钮变为可用
提示 :如需启用 CUDA 加速,勾选 “🚀 CUDA 加速” 复选框后再加载模型
2️⃣ 上传图片
点击 “📁 上传图片” 按钮:
- • 支持的格式:BMP, JPG, JPEG, TIFF, PNG
- • 选择的图像会显示在左侧"原始图像"区域
- • 状态栏显示:“状态:图像已加载 - xxx.png”(蓝色文字)
3️⃣ 开始推理
点击 “⚡ 开始推理” 按钮:
- • 状态栏变为蓝色:“状态:正在推理…”
- • 右下角显示推理耗时和输出尺寸,例如:“推理耗时:125.3ms 输出尺寸:1024x1024”
- • 处理完成后,结果图像显示在右侧"超分结果 (4 倍放大)"区域
- • 状态栏变为绿色:“状态:处理完成”
4️⃣ 保存结果
点击 “💾 保存结果” 按钮:
- • 选择保存位置和文件格式
- • 推荐保存为 PNG 格式以保留最佳质量
- • 系统会弹出"保存成功"提示框
使用示例
示例:4 倍放大动漫图像
1. 点击"🔧 加载模型"(确保 weights 文件夹有模型文件)
2. 勾选"🚀 CUDA 加速"(如果有 NVIDIA 显卡)
3. 再次点击"🔧 加载模型"
4. 点击"📁 上传图片" → 选择 anime_input.png
5. 点击"⚡ 开始推理"
6. 等待处理完成(取决于图像大小和硬件)
7. 查看效果,点击"💾 保存结果" → 保存为 anime_sr_x4.png
⚠️ 注意事项
1. 模型文件相关
- • ✅ 必须确保
weights文件夹中包含4x_APISR_GRL_GAN_generator.onnx.onnx文件 - • ❌ 模型文件不存在时,程序会弹出错误提示
- • 🔍 模型固定为 4 倍放大,不可更改
2. CUDA 加速相关
- • 📌 CUDA 检测 :首次使用 CUDA 加速时,程序会自动检测 CUDA 环境
- • ⚠️ 常见错误 :
- • “CUDA execution provider not available” → 未安装 CUDA Toolkit 或 cuDNN
- • “No CUDA-capable GPU is detected” → 显卡不支持 CUDA 或驱动过旧
- • RTX 500 系列不支持 → 请使用其他型号的 NVIDIA 显卡
- • 💡 解决方案 :
- • 更新 NVIDIA 显卡驱动到最新版本
- • 安装 CUDA Toolkit 12.x 和 cuDNN 9.x
- • 或取消勾选"CUDA 加速"使用 CPU 模式
3. 图像处理限制
- • 📐 最小图像尺寸 :建议输入图像不小于 50×50 像素
- • 📐 最大图像尺寸 :受限于系统内存,建议不超过 2000×2000 像素
- • 🎨 推荐图像类型 :
- • ✅ 动漫、漫画、插画(APISR 对此类图像效果最佳)
- • ✅ 二次元图片、游戏截图
- • ⚠️ 真实照片(效果良好,但可能不如专业照片超分模型)
4. 输入尺寸要求
- • 🔲 尺寸填充 :APISR 要求输入图像的宽和高都能被 4 整除
- • 📏 自动处理 :程序会自动填充图像到最近的 4 的倍数
- • ✂️ 智能裁剪 :输出时会自动裁剪掉填充区域
5. 性能优化建议
- • 🚀 GPU 加速 :对于 1080P 以上图像,强烈建议使用 CUDA 加速
- • CPU 模式:约 500-2000ms(取决于图像大小)
- • GPU 模式:约 50-200ms(提升 10 倍以上)
- • 💾 内存管理 :处理大图像时关闭其他占用内存的程序
- • 🔄 批量处理 :当前版本不支持批量处理,可通过多次操作实现
6. 常见问题排查
Q1: 程序启动后闪退
原因 :缺少运行时依赖库
解决 :确保 bin\x64\Release 目录下有所有必需的 DLL 文件
Q2: 模型加载失败
原因 :模型文件损坏或格式不正确
解决 :重新下载 APISR ONNX 模型文件
Q3: 推理速度极慢
原因 :图像过大或 CPU 负载过高
解决 :缩小输入图像尺寸,或启用 CUDA 加速
Q4: 输出图像有伪影
原因 :GAN模型对某些纹理的泛化能力有限
解决 :这是正常现象,可尝试使用其他超分模型对比
7. 兼容性说明
- • ✅ Windows 10/11 :完全兼容
- • ⚠️ Windows 7/8.1 :需要安装 .NET Framework 4.7.2,部分功能可能受限
- • ❌ macOS/Linux :不支持(可通过 Wine 或虚拟机运行)
📁 文件夹结构
完整项目结构
FIRC/
│
├── 📄 FIRC.sln # Visual Studio 解决方案文件
├── 📄 FIRC.csproj # C# 项目配置文件
├── 📄 App.config # 应用程序配置文件
├── 📄 Program.cs # 程序入口点
│
├── 📄 Form1.cs # 主窗体业务逻辑
├── 📄 Form1.Designer.cs # 主窗体 UI 设计代码
├── 📄 ApisrSuperResolver.cs # APISR 超分辨率核心处理器
│
├── 📂 Properties/
│ ├── AssemblyInfo.cs # 程序集元数据
│ ├── Resources.Designer.cs # 资源文件设计器
│ ├── Resources.resx # 资源文件
│ ├── Settings.Designer.cs # 设置设计器
│ └── Settings.settings # 用户设置
│
├── 📂 bin/
│ └── x64/
│ └── Release/
│ ├── FIRC.exe # 编译后的可执行文件
│ ├── FIRC.pdb # 调试符号
│ ├── *.dll # 依赖库(ONNX Runtime, OpenCvSharp 等)
│ ├── cublas64_12.dll # CUDA BLAS 库
│ ├── cudnn64_9.dll # CUDA DNN 库
│ ├── onnxruntime.dll # ONNX Runtime 核心库
│ └── weights/
│ └── 4x_APISR_GRL_GAN_generator.onnx.onnx
│
├── 📂 images/ # 示例图像目录
│ ├── 1.png # 测试输入图像
│ └── enhanced/
│ └── 1_x2_enhanced.png # 超分结果示例
│
├── 📄 README.md # 项目说明文档(本文件)
└── 📄 .gitignore # Git 忽略规则
核心文件说明
文件名类型作用描述ApisrSuperResolver.cs核心类APISR 模型推理引擎,包含预处理、推理、后处理全流程Form1.cs窗体类主界面业务逻辑,处理用户交互和事件响应Form1.Designer.cs设计器类界面控件布局和初始化代码FIRC.csproj项目文件定义编译配置、依赖引用、目标框架等4x_APISR_GRL_GAN_generator.onnx.onnx模型文件预训练的 APISR 超分辨率模型(ONNX 格式)
🛠️ 技术栈
开发语言与框架
- • 编程语言 :C# 5.0
- • UI 框架 :Windows Forms (.NET Framework 4.7.2)
- • 图像处理 :OpenCvSharp 4.x
- • AI 推理 :ONNX Runtime 1.20.1
第三方库
<PackageReference Include="Microsoft.ML.OnnxRuntime.Gpu" Version="1.20.1" />
<PackageReference Include="OpenCvSharp4" Version="4.10.0.20241024" />
<PackageReference Include="OpenCvSharp4.Extensions" Version="4.10.0.20241024" />
内置 CUDA 运行时
项目已打包以下 CUDA 相关 DLL,无需单独安装:
- •
cublas64_12.dll- CUDA BLAS 线性代数库 - •
cublasLt64_12.dll- CUDA BLAS Lite 库 - •
cudart64_12.dll- CUDA 运行时库 - •
cudnn64_9.dll- CUDA 深度神经网络库 - •
onnxruntime_providers_cuda.dll- ONNX CUDA 提供程序
👨💻 开发信息
- • 项目名称 :FIRC - APISR 图像超分辨率工具(GAN 模型)
- • 开发环境 :Visual Studio 2019 + .NET Framework 4.7.2
- • 主要技术 :C# WinForms, ONNX Runtime, OpenCvSharp
- • 适用场景 :动漫图像放大、二次元图片增强、老照片修复、截图清晰度增强