基于C#winform部署人脸图像修复变清晰codeformer的onnx模型
CodeFormer 图像修复工具
基于 ONNX Runtime 和 OpenCvSharp 的人脸图像修复 WinForms 应用程序,将 C++ 实现移植到 C# .NET Framework 平台。
效果展示

📖 算法原理
CodeFormer 模型
CodeFormer 是一种强大的人脸修复算法,基于 Transformer 架构,能够:
- 人脸修复:恢复模糊、低质量的人脸图像
- 细节增强:重建丢失的面部细节和纹理
- 降噪处理:去除图像中的噪声和压缩伪影
处理流程
输入图像 → 预处理 → ONNX推理 → 后处理 → 输出结果
💻 环境要求
开发环境
- IDE:Visual Studio 2019 或更高版本
- .NET Framework:4.7.2
- C# 语言版本:6.0
- 平台目标:x64
运行时依赖
- OpenCvSharp:4.13.0
- OpenCvSharp.dll
- OpenCvSharp.Extensions.dll
- ONNX Runtime:1.20.1
- Microsoft.ML.OnnxRuntime.dll
- CUDA 相关 DLL(如果使用 GPU 加速)
GPU 加速(可选)
如果使用 CUDA 加速,需要安装:
- NVIDIA CUDA Toolkit:12.x
- cuDNN:9.x
- 支持的 GPU:支持 CUDA 的 NVIDIA 显卡
系统要求
- 操作系统:Windows 10/11 (64位)
- 内存:至少 4GB RAM
- 磁盘空间:至少 2GB(包含模型文件)
📦 安装步骤
1. 克隆或下载项目
# 如果从 Git 仓库获取
git clone <repository-url>
cd FIRC
2. 准备模型文件
确保模型文件已放置在正确位置:
FIRC/bin/x64/Release/weights/codeformer.onnx
模型文件大小约为 360MB。如果缺失,需要从官方渠道下载。
3. 检查依赖 DLL
确保以下 DLL 文件存在于 bin/x64/Release/ 目录:
OpenCvSharp 相关:
- OpenCvSharp.dll
- OpenCvSharp.Extensions.dll
- dll/x64/OpenCvSharpExtern.dll
- dll/x64/opencv_videoio_ffmpeg4130_64.dll
ONNX Runtime 相关:
- Microsoft.ML.OnnxRuntime.dll
- onnxruntime.dll
- onnxruntime_providers_cuda.dll(CUDA 支持)
- onnxruntime_providers_shared.dll
- onnxruntime_providers_tensorrt.dll
CUDA 相关(如果使用 GPU):
- cublas64_12.dll
- cublasLt64_12.dll
- cudart64_12.dll
- cudnn64_9.dll
- 以及其他 cudnn_*.dll 文件
4. 打开项目
在 Visual Studio 2019 中打开解决方案文件:
FIRC.sln
🚀 运行步骤
方式一:Visual Studio 运行
- 在 Visual Studio 中打开项目
- 选择配置:Release | x64
- 按
F5或点击"启动"按钮运行
方式二:直接运行可执行文件
- 导航到输出目录:
cd bin/x64/Release - 双击运行:
FIRC.exe
使用流程
-
上传图片
- 点击"上传图片"按钮
- 选择要修复的图像文件(支持 BMP、JPG、JPEG、TIFF、PNG)
-
加载模型
- 选择是否启用"CUDA 加速"(需要 GPU 环境)
- 点击"加载模型"按钮
- 等待模型加载完成(状态栏显示"模型已加载 [CPU/CUDA]")
-
开始推理
- 点击"开始推理"按钮
- 等待处理完成
- 查看结果和耗时统计
-
查看结果
- 左侧显示原始图像
- 右侧显示修复后的结果
- 底部显示推理耗时(毫秒)
⚠️ 注意事项
CUDA GPU 加速
-
首次使用 CUDA:
- 确保已安装 CUDA Toolkit 12.x 和 cuDNN 9.x
- 将 CUDA bin 目录添加到系统 PATH 环境变量
- 如果 CUDA 初始化失败,程序会自动回退到 CPU 模式
-
性能对比:
- CPU 模式:推理时间约 5-15 秒(取决于 CPU 性能)
- CUDA 模式:推理时间约 0.5-2 秒(取决于 GPU 性能)
图像要求
- 输入尺寸:任意尺寸(程序会自动缩放到 512×512)
- 输出尺寸:与输入尺寸相同
- 推荐格式:PNG(无损)或高质量 JPEG
- 最大分辨率:建议不超过 4000×4000 像素
内存使用
- 模型加载约占用 400-500MB 内存
- 推理过程临时内存约 200-300MB
- 处理大图像时可能需要更多内存
常见问题
Q: 提示"模型文件不存在"
A: 检查 bin/x64/Release/weights/codeformer.onnx 是否存在
Q: CUDA 加速不生效
A:
- 确认 GPU 支持 CUDA
- 检查 CUDA 和 cuDNN 版本是否匹配
- 查看 CUDA DLL 是否完整
Q: 推理速度慢
A:
- 启用 CUDA 加速
- 降低输入图像分辨率
- 关闭其他占用资源的程序
📁 项目结构
FIRC/
├── FIRC.sln # Visual Studio 解决方案文件
├── FIRC.csproj # 项目配置文件
├── App.config # 应用程序配置文件
├── Program.cs # 程序入口点
│
├── CodeFormer.cs # CodeFormer 模型推理类(核心)
├── Form1.cs # 主窗体业务逻辑
├── Form1.Designer.cs # 主窗体 UI 设计
├── Form1.resx # 窗体资源文件
│
├── Properties/ # 项目属性
│ ├── AssemblyInfo.cs # 程序集信息
│ ├── Resources.resx # 资源文件
│ ├── Resources.Designer.cs # 资源设计器
│ ├── Settings.settings # 设置文件
│ └── Settings.Designer.cs # 设置设计器
│
├── images/ # 测试图像目录
│ ├── 41.png
│ ├── naruto.jpg
│ └── ...(其他测试图像)
│
├── bin/x64/Release/ # 编译输出目录
│ ├── FIRC.exe # 可执行文件
│ ├── FIRC.pdb # 调试符号
│ │
│ ├── weights/ # 模型文件目录
│ │ └── codeformer.onnx # CodeFormer ONNX 模型 (360MB)
│ │
│ ├── dll/x64/ # OpenCvSharp 原生 DLL
│ │ ├── OpenCvSharpExtern.dll
│ │ └── opencv_videoio_ffmpeg4130_64.dll
│ │
│ ├── OpenCvSharp.dll # OpenCvSharp 托管库
│ ├── OpenCvSharp.Extensions.dll
│ ├── Microsoft.ML.OnnxRuntime.dll
│ ├── onnxruntime.dll # ONNX Runtime 核心
│ │
│ ├── CUDA 相关 DLL/ # GPU 加速支持
│ │ ├── cublas64_12.dll
│ │ ├── cudart64_12.dll
│ │ ├── cudnn64_9.dll
│ │ └── ...(其他 CUDA/cuDNN DLL)
│ │
│ └── 其他依赖 DLL/
│ ├── System.Buffers.dll
│ ├── System.Memory.dll
│ └── ...(.NET 运行时库)
│
├── main.cpp # 原始 C++ 实现参考代码
├── README.md # 项目说明文档(本文件)
└── 使用说明.txt # 简单使用说明
特别注意
codeformer人脸修复正确步骤是:第一步检测人脸然后裁剪出人脸进行修复,而不是对着整个图像进行人脸修复,此外不能对涂抹损坏区域进行修复,因为这个模型只是面向人脸修复,模糊变清晰,实际上codeformer提供还有face inpainting模型和图像人脸上色模型。比如你直接用下面图像修复是错误做法
失败修复示例1:不能修复涂抹区域因为模型没有使用inpainting模型
失败修复示例2:不能对整个图像直接修复,要先检测出人脸才行
📝 版本信息
- 当前版本:1.0.0
- 框架版本:.NET Framework 4.7.2
- C# 语法版本:6.0
📄 许可证
本项目仅供学习和研究使用。CodeFormer 模型遵循其原始许可证。
🙏 致谢
- CodeFormer 原作者:提供强大的图像修复模型
- OpenCvSharp 团队:优秀的 OpenCV .NET 封装
- ONNX Runtime 团队:高效的跨平台推理引擎
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)