C# winform部署rf-detr目标检测的onnx模型

本项目是一个基于.NET Framework 4.7.2和ONNX Runtime的目标检测桌面应用程序。该应用利用RF-DETR模型对图像进行目标检测,并在图像上绘制检测框和标签。

功能特点

  • 实时目标检测:支持对图片和摄像头视频流进行目标检测
  • 多类别识别:支持包括人、车、动物等在内的80个目标类别
  • 高效推理:采用ONNX模型进行快速推理
  • 可视化结果:在图像上绘制边界框和标签
  • 多平台支持:支持图片文件选择和实时摄像头检测

效果展示

技术栈

  • .NET Framework 4.7.2
  • ONNX Runtime 1.20.1
  • OpenCvSharp 4.9.0
  • RF-DETR Nano目标检测模型

环境要求

  • Windows操作系统
  • Visual Studio 2019或更高版本
  • .NET Framework 4.7.2开发包

安装指南

克隆项目

bash 复制代码
git clone <repository-url>

恢复NuGet包

项目使用以下主要NuGet包:

  • Microsoft.ML.OnnxRuntime (1.20.1)
  • Microsoft.ML.OnnxRuntime.Managed (1.20.1)
  • OpenCvSharp4 (4.9.0.20240103)
  • OpenCvSharp4.Extensions (4.9.0.20240103)
  • System.Drawing.Common (7.0.0)

可以通过Visual Studio自动还原包或使用NuGet CLI:

bash 复制代码
nuget restore FIRC.sln

构建项目

在Visual Studio中打开[FIRC.sln](file:///C:/Users/Administrator/Downloads/FIRC/FIRC.sln)解决方案文件,设置为"x64"平台和"Debug"或"Release"配置,然后构建项目。

或者使用命令行构建:

bash 复制代码
msbuild FIRC.sln /p:Configuration=Debug /p:Platform=x64

使用说明

  1. 确保[weights](file:///C:/Users/Administrator/Downloads/FIRC/bin/x64/Debug/weights)目录中有以下文件:

    • rf-detr-nano.onnx\](file:///C:/Users/Administrator/Downloads/FIRC/bin/x64/Debug/weights/rf-detr-nano.onnx) - 模型文件

  2. 运行应用程序

  3. 点击"打开图片"按钮选择要检测的图片文件

  4. 点击"开始检测"按钮进行目标检测

  5. 点击"摄像头检测"按钮启动实时摄像头检测(需要摄像头设备)

支持的检测类别

应用支持检测以下80个类别:

person, bicycle, car, motorbike, aeroplane, bus, train, truck, boat, traffic light, fire hydrant, stop sign, parking meter, bench, bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe, backpack, umbrella, handbag, tie, suitcase, frisbee, skis, snowboard, sports ball, kite, baseball bat, baseball glove, skateboard, surfboard, tennis racket, bottle, wine glass, cup, fork, knife, spoon, bowl, banana, apple, sandwich, orange, broccoli, carrot, hot dog, pizza, donut, cake, chair, sofa, pottedplant, bed, diningtable, toilet, tvmonitor, laptop, mouse, remote, keyboard, cell phone, microwave, oven, toaster, sink, refrigerator, book, clock, vase, scissors, teddy bear, hair drier, toothbrush

项目结构

复制代码
FIRC/
├── FIRC.csproj                  # 项目文件
├── Program.cs                   # 程序入口点
├── Form1.cs                     # 主窗体逻辑
├── Form1.Designer.cs            # 主窗体设计器
├── RFDetrManager.cs             # RF-DETR模型管理器
├── weights/                     # 模型和标签文件
│   ├── rf-detr-nano.onnx        # ONNX模型文件
│   └── labels.txt               # 类别标签文件
└── packages/                    # NuGet包

核心组件

RFDetrManager类

这是项目的核心类,负责:

  1. 加载ONNX模型
  2. 图像预处理(缩放、归一化、标准化)
  3. 模型推理
  4. 结果后处理(NMS、置信度过滤)
  5. 结果可视化

图像处理流程

  1. 图像预处理:

    • 调整图像尺寸到模型输入要求(通常是640x640)
    • 归一化像素值到[0,1]范围
    • 标准化处理(使用ImageNet均值和标准差)
  2. 模型推理:

    • 使用ONNX Runtime执行模型推理
  3. 结果后处理:

    • 应用sigmoid激活函数获取置信度
    • 执行非极大值抑制(NMS)去除重复检测
    • 过滤低置信度检测结果
  4. 结果可视化:

    • 在图像上绘制边界框
    • 添加类别标签和置信度分数

性能优化

  • 使用高效的矩阵运算库进行图像处理
  • 采用轻量级的RF-DETR Nano模型保证推理速度
  • 实现了高效的NMS算法减少重复检测

注意事项

  1. 应用程序需要x64平台运行
  2. 确保weights目录下的模型文件完整
  3. 摄像头检测功能需要可用的摄像头设备
  4. 图像检测结果的质量依赖于输入图像的分辨率和清晰度
相关推荐
高洁0120 小时前
多模态AI模型融合难?核心问题与解决思路
人工智能·深度学习·机器学习·数据挖掘·transformer
renhongxia121 小时前
ORACLE-SWE:量化Oracle 信息信号对SWE代理的贡献
人工智能·深度学习·学习·语言模型·分类
weixin_156241575761 天前
基于YOLOv8深度学习花卉识别系统摄像头实时图片文件夹多图片等另有其他的识别系统可二开
大数据·人工智能·python·深度学习·yolo
QQ676580081 天前
AI赋能轨道交通智能巡检 轨道交通故障检测 轨道缺陷断裂检测 轨道裂纹识别 鱼尾板故障识别 轨道巡检缺陷数据集深度学习yolo第10303期
人工智能·深度学习·yolo·智能巡检·轨道交通故障检测·鱼尾板故障识别·轨道缺陷断裂检测
云程笔记1 天前
002.计算机视觉与目标检测发展简史:从传统方法到深度学习
深度学习·yolo·目标检测·计算机视觉
weixin_156241575761 天前
基于YOLO深度学习的动物检测与识别系统
人工智能·深度学习·yolo
叶舟1 天前
LYT-NET:一个超级轻量的低光照图像增强Transformer网络
人工智能·深度学习·transformer·llie·低光照图像增强
管二狗赶快去工作!1 天前
体系结构论文(九十八):NPUEval: Optimizing NPU Kernels with LLMs and Open Source Compilers
人工智能·深度学习·自然语言处理·体系结构
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-04-10
人工智能·经验分享·深度学习·神经网络·产品运营
nap-joker1 天前
FT-Mamba:一种高效的表回归的新深度学习模型
人工智能·深度学习·ftmamba