基于C#winform部署BEN2的onnx模型实现前景分割源码.7z

作品简介

 基于C#winform部署BEN2的onnx模型实现前景分割,注意源码支持CPU+GPU推理,显卡需要RTX20-40显卡,RTX50系列显卡不支持

BEN2 前景分割工具

这是一个基于 BEN2(Bidirectional EncoderNetwork)深度学习模型的 Windows 桌面应用程序,专门用于图像前景分割处理。本项目使用 C# WinForms 开发,通过 ONNX Runtime 加载 BEN2 模型,实现高质量的前景提取与透明背景生成。

效果展示


算法原理

BEN2 简介

BEN2(Bidirectional Encoder Networkversion2)是一种高效的显著性目标检测网络:

  • • 双向编码器架构 :采用独特的双向编码结构,同时捕捉局部细节和全局语义信息
  • • 显著性检测 :自动识别图像中最显著的前景目标
  • • 高分辨率支持 :原生支持 1024x1024 输入分辨率,保持精细边缘
  • • 实时推理 :优化的网络结构,在 CPU 上也能实现快速推理

技术特点

  • • 输入尺寸 :1024x1024
  • • 输出格式 :单通道浮点掩码(归一化到 [0,1])
  • • 后处理 :Min-Max 归一化 + 双线性插值
  • • 适用场景 :通用物体前景提取、人像抠图、产品图片处理等

处理流程

  1. 1. 图像读取 :加载输入图像(BGR 格式)
  2. 2. 颜色转换 :BGR → RGB 转换
  3. 3. 尺寸调整 :缩放到 1024x1024 输入尺寸
  4. 4. 归一化 :像素值归一化到 [0, 1] 范围
  5. 5. 维度转换 :HWC(高×宽×通道)→ CHW(通道×高×宽)
  6. 6. 模型推理 :ONNX Runtime 执行 BEN2 网络前向传播
  7. 7. Min-Max 归一化 :将输出映射到 [0, 1] 范围
  8. 8. 尺寸恢复 :双线性插值到原始图像尺寸
  9. 9. Alpha 合成 :将掩码作为 Alpha 通道,生成 BGRA 图像
  10. 10. 结果保存 :输出 PNG 透明背景图像

环境要求

系统要求

  • • 操作系统 :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. 克隆或下载项目

git clone <项目仓库地址>

或直接下载项目压缩包并解压。

2. 准备 BEN2 模型文件

重要 :需要将 BEN2 模型文件放置在 model 文件夹中:

FIRC/
└── model/
    └── BEN2_Base.onnx    # BEN2 基础模型(1024x1024 输入)

3. 安装Visual Studio

确保已安装 Visual Studio 2019 或更高版本,并包含以下工作负载:

  • • .NET 桌面开发


4. 还原NuGet包

打开项目后,Visual Studio 会自动还原 NuGet 包。

运行步骤

编译运行

  1. 1. 使用 Visual Studio 打开 FIRC.sln 解决方案文件
  2. 2. 选择配置为 Release ,平台为 x64
  3. 3. 按 F5 或点击"开始"按钮运行程序

使用说明

  1. 1. 选择图像 :点击"选择图像"按钮,选择要处理的图像文件
  • • 支持格式:BMP、JPG、JPEG、TIFF、PNG
  1. 2. 前景分割 :点击"前景分割"按钮
  • • 程序自动调用 BEN2 模型进行推理
  • • 显示推理耗时(毫秒)
  • • 生成带透明背景的图像
  1. 3. 查看状态 :顶部状态栏显示当前处理状态
  • • 模型加载中…
  • • 图像已加载
  • • 正在处理…
  • • 处理完成
  1. 4. 保存结果 :点击"保存结果"按钮
  • • 默认保存为 PNG 格式(保留透明通道)
  • • 也支持 JPG 和 BMP 格式

性能参考

  • • CPU 推理 :约 200-500ms(取决于 CPU 性能)
  • • GPU 加速 :可进一步提升速度(需配置 CUDA)
  • • 内存占用 :约 200-300MB

注意事项

  1. 1. 模型文件 :首次使用前请确保已下载 BEN2_Base.onnx 模型文件并放置在 model 文件夹中
  2. 2. 内存占用 :处理高分辨率图像时需要较大内存,建议关闭其他占用内存的程序
  3. 3. 图像格式 :
  • • 输入支持:BMP、JPG、JPEG、TIFF、PNG
  • • 输出格式:PNG(带 Alpha 透明通道)、JPG、BMP
  1. 4. 处理时间 :
  • • 首次推理包含模型加载时间
  • • 后续推理速度更快(模型已缓存)
  • • 推理时间显示在右上角文本框
  1. 5. 适用场景 :
  • • ✅ 通用物体前景提取
  • • ✅ 人像摄影抠图
  • • ✅ 电商产品图片处理
  • • ✅ 医学图像分割
  • • ❌ 不适合视频实时处理(延迟较高)
  1. 6. 异常处理 :如遇到错误,请检查:
  • • 模型文件是否完整(BEN2_Base.onnx)
  • • 是否选择了 x64 平台配置
  • • 系统内存是否充足
  • • 图像文件是否损坏

文件夹结构

FIRC/
├── Properties/                 # 项目属性文件
│   ├── AssemblyInfo.cs         # 程序集信息
│   └── Resources.resx          # 资源文件
├── bin/
│   └── x64/
│       ├── Debug/              # 调试输出目录
│       └── Release/            # 发布输出目录
│           └── FIRC.exe        # 可执行文件
├── model/                      # BEN2 模型目录(重要!)
│   └── BEN2_Base.onnx          # BEN2 基础模型(1024x1024)
├── packages/                   # NuGet 包缓存目录
├── App.config                  # 应用程序配置文件
├── FIRC.csproj                 # 项目文件
├── FIRC.sln                    # 解决方案文件
├── Form1.cs                    # 主窗体逻辑代码(BEN2 分割实现)
├── Form1.Designer.cs           # 窗体设计器代码
├── Form1.resx                  # 窗体资源文件
└── Program.cs                  # 程序入口点

参考项目

本项目参考了以下开源项目:

 

创作时间: