基于C#winform部署人脸图像修复变清晰codeformer的onnx模型

张开发
2026/4/11 19:20:16 15 分钟阅读

分享文章

基于C#winform部署人脸图像修复变清晰codeformer的onnx模型
CodeFormer 图像修复工具基于 ONNX Runtime 和 OpenCvSharp 的人脸图像修复 WinForms 应用程序将 C 实现移植到 C# .NET Framework 平台。效果展示 算法原理CodeFormer 模型CodeFormer 是一种强大的人脸修复算法基于 Transformer 架构能够人脸修复恢复模糊、低质量的人脸图像细节增强重建丢失的面部细节和纹理降噪处理去除图像中的噪声和压缩伪影处理流程输入图像 → 预处理 → ONNX推理 → 后处理 → 输出结果 环境要求开发环境IDEVisual Studio 2019 或更高版本.NET Framework4.7.2C# 语言版本6.0平台目标x64运行时依赖OpenCvSharp4.13.0OpenCvSharp.dllOpenCvSharp.Extensions.dllONNX Runtime1.20.1Microsoft.ML.OnnxRuntime.dllCUDA 相关 DLL如果使用 GPU 加速GPU 加速可选如果使用 CUDA 加速需要安装NVIDIA CUDA Toolkit12.xcuDNN9.x支持的 GPU支持 CUDA 的 NVIDIA 显卡系统要求操作系统Windows 10/11 (64位)内存至少 4GB RAM磁盘空间至少 2GB包含模型文件 安装步骤1. 克隆或下载项目# 如果从 Git 仓库获取gitclonerepository-urlcdFIRC2. 准备模型文件确保模型文件已放置在正确位置FIRC/bin/x64/Release/weights/codeformer.onnx模型文件大小约为 360MB。如果缺失需要从官方渠道下载。3. 检查依赖 DLL确保以下 DLL 文件存在于bin/x64/Release/目录OpenCvSharp 相关OpenCvSharp.dllOpenCvSharp.Extensions.dlldll/x64/OpenCvSharpExtern.dlldll/x64/opencv_videoio_ffmpeg4130_64.dllONNX Runtime 相关Microsoft.ML.OnnxRuntime.dllonnxruntime.dllonnxruntime_providers_cuda.dllCUDA 支持onnxruntime_providers_shared.dllonnxruntime_providers_tensorrt.dllCUDA 相关如果使用 GPUcublas64_12.dllcublasLt64_12.dllcudart64_12.dllcudnn64_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.2C# 语法版本6.0 许可证本项目仅供学习和研究使用。CodeFormer 模型遵循其原始许可证。 致谢CodeFormer 原作者提供强大的图像修复模型OpenCvSharp 团队优秀的 OpenCV .NET 封装ONNX Runtime 团队高效的跨平台推理引擎

更多文章