c# 基于 ML.Net中使用ONNX检测对象

教程:在 ML.NET 中使用 ONNX 检测对象

ONNX 对象检测示例概述

此示例创建一个 .NET 核心控制台应用程序,该应用程序使用预训练的深度学习 ONNX 模型检测图像中的对象。

了解模型

对象检测是图像处理任务。 因此,训练解决该问题的大多数深度学习模型都是 CNN。 本教程中使用的模型是 Tiny YOLOv2 模型,

什么是 ONNX 模型?

开放神经网络交换 (ONNX) 是 AI 模型的开放源代码格式。 ONNX 支持框架之间的互操作性。 这意味着,你可以在许多常见的机器学习框架(如 pytorch)中训练模型,将其转换为 ONNX 格式,并在其他框架(如 ML.NET)中使用 ONNX 模型。 有关详细信息,请参阅 ONNX 网站

创建桌面应用程序

  1. 创建名为“ObjectDetection”的 C# 控制台应用程序。 单击“下一步”按钮。

  2. 选择 .NET Framework 8.0 作为要使用的框架。 单击“创建” 按钮。

  3. 安装“Microsoft.ML”NuGet 包

创建类和定义路径

创建 DimensionsBase 类文件

    public class DimensionsBase
    {
        public float X { get; set; }
        public float Y { get; set; }
        public float Height { get; set; }
        public float Width { get; set; }
    }

创建YoloBoundingBox.cs 文件 


    public class BoundingBoxDimensions : DimensionsBase { }

    public class YoloBoundingBox
    {
        public BoundingBoxDimensions Dimensions { get; set; }

        public string Label { get; set; }

        public float Confidence { get; set; }

        public RectangleF Rect
        {
            get { return new RectangleF(Dimensions.X, Dimensions.Y, Dimensions.Width, Dimensions.Height); }
        }

        public Color BoxColor { get; set; }
    }

 创建 YoloOutPutParser.cs 文件

 class YoloOutputParser
 {
     class CellDimensions : DimensionsBase { }

     public const int ROW_COUNT = 13;
     public const int COL_COUNT = 13;
     public const int CHANNEL_COUNT = 125;
     public const int BOXES_PER_CELL = 5;
     public const int BOX_INFO_FEATURE_COUNT = 5;
     public const int CLASS_COUNT = 20;
     public const float CELL_WIDTH = 32;
     public const float CELL_HEIGHT = 32;

     private int channelStride = ROW_COUNT * COL_COUNT;

     private float[] anchors = new float[]
     {
         1.08F, 1.19F, 3.42F, 4.41F, 6.63F, 11.38F, 9.42F, 5.11F, 16.62F, 10.52F
     };

     private string[] labels = new string[]
     {
         "aeroplane", "bicycle", "bird", "boat", "bottle",
         "bus", "car", "cat", "chair", "cow",
         "diningtable", "dog", "horse", "motorbike", "person",
         "pottedplant", "sheep", "sofa", "train", "tvmonitor"
     };

     private static Color[] classColors = new Color[]
     {
         Color.Khaki,
         Color.Fuchsia,
         Color.Silver,
         Co
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值