0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于OpenVINO C# API部署RT-DETR模型

英特尔物联网 来源:英特尔物联网 2023-11-10 16:59 次阅读

作者:颜国进英特尔边缘计算创新大使

RT-DETR 是在 DETR 模型基础上进行改进的,一种基于 DETR 架构的实时端到端检测器,它通过使用一系列新的技术和算法,实现了更高效的训练和推理,在前文我们发表了《基于 OpenVINO Python API 部署 RT-DETR 模型 | 开发者实战》和《基于 OpenVINO C++ API 部署 RT-DETR 模型 | 开发者实战》,在该文章中,我们基于 OpenVINO Python 和 C++ API 向大家展示了的 RT-DETR 模型的部署流程,并分别展示了是否包含后处理的模型部署流程,为大家使用 RT-DETR 模型提供了很好的范例。在实际工业应用时,有时我们需要在 C# 环境下使用该模型应用到工业检测中,因此在本文中,我们将向大家展示使用 OpenVINO Csharp API 部署 RT-DETR 模型,并对比不同编程平台下模型部署的速度。

该项目所使用的全部代码已经在 GitHub 上开源,并且收藏在 OpenVINO-CSharp-API 项目里。

1. RT-DETR

飞桨在去年 3 月份推出了高精度通用目标检测模型 PP-YOLOE ,同年在 PP-YOLOE 的基础上提出了 PP-YOLOE+。而继 PP-YOLOE 提出后,MT-YOLOv6、YOLOv7、DAMO-YOLO、RTMDet 等模型先后被提出,一直迭代到今年开年的 YOLOv8。

d10f2fd0-7edd-11ee-939d-92fbcf53809c.png

YOLO 检测器有个较大的待改进点是需要 NMS 后处理,其通常难以优化且不够鲁棒,因此检测器的速度存在延迟。DETR是一种不需要 NMS 后处理、基于 Transformer 的端到端目标检测器。百度飞桨正式推出了 —— RT-DETR (Real-Time DEtection TRansformer) ,一种基于 DETR 架构的实时端到端检测器,其在速度和精度上取得了 SOTA 性能。

d12bdbd0-7edd-11ee-939d-92fbcf53809c.png

RT-DETR 是在 DETR 模型基础上进行改进的,它通过使用一系列新的技术和算法,实现了更高效的训练和推理。具体来说,RT-DETR 具有以下优势:

1. 实时性能更佳

RT-DETR 采用了一种新的注意力机制,能够更好地捕获物体之间的关系,并减少计算量。此外,RT-DETR 还引入了一种基于时间的注意力机制,能够更好地处理视频数据。

2. 精度更高

RT-DETR 在保证实时性能的同时,还能够保持较高的检测精度。这主要得益于 RT-DETR 引入的一种新的多任务学习机制,能够更好地利用训练数据。

3. 更易于训练和调参

RT-DETR 采用了一种新的损失函数,能够更好地进行训练和调参。此外,RT-DETR 还引入了一种新的数据增强技术,能够更好地利用训练数据。

d147d7ea-7edd-11ee-939d-92fbcf53809c.png

2. OpenVINO

英特尔 发行版OpenVINO 工具套件基于 oneAPI而开发,可以加快高性能计算机视觉深度学习视觉应用开发速度工具套件,适用于从边缘到云的各种英特尔平台上,帮助用户更快地将更准确的真实世界结果部署到生产系统中。通过简化的开发工作流程,OpenVINO 可赋能开发者在现实世界中部署高性能应用程序和算法。

OpenVINO 2023.1 于 2023 年 9 月 18 日发布,该工具包带来了挖掘生成人工智能全部潜力的新功能。生成人工智能的覆盖范围得到了扩展,通过 PyTorch* 等框架增强了体验,您可以在其中自动导入和转换模型。大型语言模型(LLM)在运行时性能和内存优化方面得到了提升。聊天机器人、代码生成等的模型已启用。OpenVINO更便携,性能更高,可以在任何需要的地方运行:在边缘、云中或本地。

3. 环境配置

本文中主要使用的项目环境可以通过 NuGet Package 包进行安装,Visual Studio 提供了 NuGet Package 包管理功能,可以通过其进行安装,主要使用下图两个程序包,C# 平台安装程序包还是十分方便的,直接安装即可使用:

d1ac4752-7edd-11ee-939d-92fbcf53809c.pngd1e0d31e-7edd-11ee-939d-92fbcf53809c.png

除了通过 Visual Studio 安装,也可以通过 dotnet 指令进行安装,安装命令为:

dotnet add package OpenVINO.CSharp.Windows --version 2023.1.0.2
dotnet add package OpenCvSharp4.Windows --version 4.8.0.20230708

左滑查看更多

4. 模型下载与转换

在之前的文章中我们已经讲解了模型的到处方式,大家可以参考下面两篇文章实现模型导出:《基于 OpenVINO Python API 部署 RT-DETR 模型 | 开发者实战》和《基于 OpenVINO C++ API 部署 RT-DETR 模型 | 开发者实战》。

5. C# 代码实现

为了更系统地实现 RT-DETR 模型的推理流程,我们采用 C# 特性,封装了 RTDETRPredictor 模型推理类以及 RTDETRProcess 模型数据处理类,下面我们将对这两个类中的关键代码进行讲解。

5.1 模型推理类实现

C# 代码中我们定义的 RTDETRPredictor 模型推理类如下所示:

public class RTDETRPredictor
{
  public RTDETRPredictor(string model_path, string label_path,
  string device_name = "CPU", bool postprcoess = true)
{}
  public Mat predict(Mat image)
{}
  private void pritf_model_info(Model model)
{}
  private void fill_tensor_data_image(Tensor input_tensor, Mat input_image)
{}
  private void fill_tensor_data_float(Tensor input_tensor, float[] input_data, int data_size)
{}
  RTDETRProcess rtdetr_process;
  bool post_flag;
  Core core;
  Model model;
  CompiledModel compiled_model;
  InferRequest infer_request;
}

左滑查看更多

1)模型推理类初始化

首先我们需要初始化模型推理类,初始化相关信息

public RTDETRPredictor(string model_path, string label_path, string device_name = "CPU", bool postprcoess = true)
{
  INFO("Model path: " + model_path);
  INFO("Device name: " + device_name);
  core = new Core();
  model = core.read_model(model_path);
  pritf_model_info(model);
  compiled_model = core.compile_model(model, device_name);
  infer_request = compiled_model.create_infer_request();
  rtdetr_process = new RTDETRProcess(new Size(640, 640), label_path, 0.5f);
  this.post_flag = postprcoess;
}

左滑查看更多

在该方法中主要包含以下几个输入:

model_path:推理模型地址;

label_path:模型预测类别文件;

device_name:推理设备名称;

post_flag:模型是否包含后处理,当 post_flag = true 时,包含后处理,当 post_flag = false 时,不包含后处理。

2)图片预测 API

这一步中主要是对输入图片进行预测,并将模型预测结果会知道输入图片上,下面是这阶段的主要代码:

public Mat predict(Mat image)
{
  Mat blob_image = rtdetr_process.preprocess(image.Clone());
  if (post_flag)
  {
    Tensor image_tensor = infer_request.get_tensor("image");
    Tensor shape_tensor = infer_request.get_tensor("im_shape");
    Tensor scale_tensor = infer_request.get_tensor("scale_factor");
    image_tensor.set_shape(new Shape(new List { 1, 3, 640, 640 }));
    shape_tensor.set_shape(new Shape(new List { 1, 2 }));
    scale_tensor.set_shape(new Shape(new List { 1, 2 }));
    fill_tensor_data_image(image_tensor, blob_image);
    fill_tensor_data_float(shape_tensor, rtdetr_process.get_input_shape().ToArray(), 2);
    fill_tensor_data_float(scale_tensor, rtdetr_process.get_scale_factor().ToArray(), 2);
  } else {
    Tensor image_tensor = infer_request.get_input_tensor();
    image_tensor.set_shape(new Shape(new List { 1, 3, 640, 640 }));
    fill_tensor_data_image(image_tensor, blob_image);
  }
  infer_request.infer();
  ResultData results;
  if (post_flag)
  {
    Tensor output_tensor = infer_request.get_tensor("reshape2_95.tmp_0");
    float[] result = output_tensor.get_data(300 * 6);
    results = rtdetr_process.postprocess(result, null, true);
  } else {
    Tensor score_tensor = infer_request.get_tensor(model.outputs()[1].get_any_name());
    Tensor bbox_tensor = infer_request.get_tensor(model.outputs()[0].get_any_name());
    float[] score = score_tensor.get_data(300 * 80);
    float[] bbox = bbox_tensor.get_data(300 * 4);
    results = rtdetr_process.postprocess(score, bbox, false);
  }
  return rtdetr_process.draw_box(image, results);
}

左滑查看更多

上述代码的主要逻辑如下:首先是处理输入图片,调用定义的数据处理类,将输入图片处理成指定的数据类型;然后根据模型的输入节点情况配置模型输入数据,如果使用的是动态模型输入,需要设置输入形状;接下来就是进行模型推理;最后就是对推理结果进行处理,并将结果绘制到输入图片上。

在模型数据加载时,此处重新设置了输入节点形状,因此此处支持动态模型输入;并且根据模型是否包含后处理分别封装了不同的处理方式,所以此处代码支持所有导出的预测模型。

5.2 模型数据处理类 RTDETRProcess

1)定义 RTDETRProcess

C# 代码中我们定义的 RTDETRProcess 模型推理类如下所示:

public class RTDETRProcess
{
  public RTDETRProcess(Size target_size, string label_path = null, float threshold = 0.5f, InterpolationFlags interpf = InterpolationFlags.Linear)
{}
  public Mat preprocess(Mat image)
{}
  public ResultData postprocess(float[] score, float[] bbox, bool post_flag)
{}
  public List get_input_shape()
{}
  public List get_scale_factor() { }
  public Mat draw_box(Mat image, ResultData results)
{}
  private void read_labels(string label_path)
{}
  private float sigmoid(float data)
{}
  private int argmax(float[] data, int length)
{}
  private Size target_size;        // The model input size.
  private List labels;  // The model classification label.
  private float threshold;          // The threshold parameter.
  private InterpolationFlags interpf;   // The image scaling method.
  private List im_shape;
  private List scale_factor;
}

左滑查看更多

2) 输入数据处理方法

输入数据处理这一块需要获取图片形状大小以及图片缩放比例系数,最后直接调用 OpenCV 提供的数据处理方法,对输入数据进行处理。

public Mat preprocess(Mat image)
{
  im_shape = new List { (float)image.Rows, (float)image.Cols };
  scale_factor = new List { 640.0f / (float)image.Rows, 640.0f / (float)image.Cols };
  Mat input_mat = CvDnn.BlobFromImage(image, 1.0 / 255.0, target_size, 0, true, false);
  return input_mat;
}

左滑查看更多

3)预测结果数据处理方法

public ResultData postprocess(float[] score, float[] bbox, bool post_flag)
{
  ResultData result = new ResultData();
  if (post_flag)
  {
    for (int i = 0; i < 300; ++i)
        {
            if (score[6 * i + 1] > threshold)
      {
        result.clsids.Add((int)score[6 * i]);
        result.labels.Add(labels[(int)score[6 * i]]);
        result.bboxs.Add(new Rect((int)score[6 * i + 2], (int)score[6 * i + 3],
          (int)(score[6 * i + 4] - score[6 * i + 2]),
          (int)(score[6 * i + 5] - score[6 * i + 3])));
        result.scores.Add(score[6 * i + 1]);
      }
    }
  }
  else
  {
    for (int i = 0; i < 300; ++i)
        {
            float[] s = new float[80];
            for (int j = 0; j < 80; ++j)
            {
                s[j] = score[80 * i + j];
            }
            int clsid = argmax(s, 80);
            float max_score = sigmoid(s[clsid]);
            if (max_score > threshold)
      {
        result.clsids.Add(clsid);
        result.labels.Add(labels[clsid]);
        float cx = (float)(bbox[4 * i] * 640.0 / scale_factor[1]);
        float cy = (float)(bbox[4 * i + 1] * 640.0 / scale_factor[0]);
        float w = (float)(bbox[4 * i + 2] * 640.0 / scale_factor[1]);
        float h = (float)(bbox[4 * i + 3] * 640.0 / scale_factor[0]);
        result.bboxs.Add(new Rect((int)(cx - w / 2), (int)(cy - h / 2), (int)w, (int)h));
        result.scores.Add(max_score);
      }
    }
  }
  return result;
}

左滑查看更多

此处对输出结果做一个解释,由于我们提供了两种模型的输出,此处提供了两种模型的输出数据处理方式,主要区别在于是否对预测框进行还原以及对预测类别进行提取,具体区别大家可以查看上述代码。

6. 预测结果展示

最后通过上述代码,我们最终可以直接实现 RT-DETR 模型的推理部署,RT-DETR 与训练模型采用的是 COCO 数据集,最终我们可以获取预测后的图像结果,如图所示:

上图中展示了 RT-DETR 模型预测结果,同时,我们对模型图里过程中的关键信息以及推理结果进行了打印:

[INFO] Hello, World!
[INFO] Model path: E:ModelRT-DETRRTDETR
tdetr_r50vd_6x_coco.xml
[INFO] Device name: CPU
[INFO] Inference Model
[INFO]  Model name: Model from PaddlePaddle.
[INFO]  Input:
[INFO]    name: im_shape
[INFO]    type: float
[INFO]    shape: Shape : {1,2}
[INFO]    name: image
[INFO]    type: float
[INFO]    shape: Shape : {1,3,640,640}
[INFO]    name: scale_factor
[INFO]    type: float
[INFO]    shape: Shape : {1,2}
[INFO]  Output:
[INFO]    name: reshape2_95.tmp_0
[INFO]    type: float
[INFO]    shape: Shape : {300,6}
[INFO]    name: tile_3.tmp_0
[INFO]    type: int32_t
[INFO]    shape: Shape : {1}
[INFO] Infer result:
[INFO]  class_id : 0, label : person, confidence : 0.9437, left_top : [504.0, 504.0], right_bottom: [596.0, 429.0]
[INFO]  class_id : 0, label : person, confidence : 0.9396, left_top : [414.0, 414.0], right_bottom: [506.0, 450.0]
[INFO]  class_id : 0, label : person, confidence : 0.8740, left_top : [162.0, 162.0], right_bottom: [197.0, 265.0]
[INFO]  class_id : 0, label : person, confidence : 0.8715, left_top : [267.0, 267.0], right_bottom: [298.0, 267.0]
[INFO]  class_id : 0, label : person, confidence : 0.8663, left_top : [327.0, 327.0], right_bottom: [346.0, 127.0]
[INFO]  class_id : 0, label : person, confidence : 0.8593, left_top : [576.0, 576.0], right_bottom: [611.0, 315.0]
[INFO]  class_id : 0, label : person, confidence : 0.8578, left_top : [104.0, 104.0], right_bottom: [126.0, 148.0]
[INFO]  class_id : 0, label : person, confidence : 0.8272, left_top : [363.0, 363.0], right_bottom: [381.0, 180.0]
[INFO]  class_id : 0, label : person, confidence : 0.8183, left_top : [349.0, 349.0], right_bottom: [365.0, 155.0]
[INFO]  class_id : 0, label : person, confidence : 0.8167, left_top : [378.0, 378.0], right_bottom: [394.0, 132.0]
[INFO]  class_id : 56, label : chair, confidence : 0.6448, left_top : [98.0, 98.0], right_bottom: [118.0, 250.0]
[INFO]  class_id : 56, label : chair, confidence : 0.6271, left_top : [75.0, 75.0], right_bottom: [102.0, 245.0]
[INFO]  class_id : 24, label : backpack, confidence : 0.6196, left_top : [64.0, 64.0], right_bottom: [84.0, 243.0]
[INFO]  class_id : 0, label : person, confidence : 0.6016, left_top : [186.0, 186.0], right_bottom: [199.0, 97.0]
[INFO]  class_id : 0, label : person, confidence : 0.5715, left_top : [169.0, 169.0], right_bottom: [178.0, 95.0]
[INFO]  class_id : 33, label : kite, confidence : 0.5623, left_top : [162.0, 162.0], right_bottom: [614.0, 539.0]

左滑查看更多

7. 平台推理时间测试

为了评价不同平台的模型推理性能,在 C++、C# 平台分别部署了 RT-DETR 不同 Backbone 结构的模型,如下表所示:

d2703900-7edd-11ee-939d-92fbcf53809c.png

通过该表可以看出,不同 Backbone 结构的 RT-DETR 模型在 C++、C# 不同平台上所表现出来的模型推理性能基本一致,说明我们所推出的 OpenVINO C# API 对模型推理性能并没有产生较大的影响。下图为模型推理时 CPU 使用以及内存占用情况,可以看出在本机设备上,模型部署时 CPU 占用在 40%~45% 左右,内存稳定在 10G 左右,所测试结果 CPU 以及内存占用未减去其他软件开销。

d27ae1b6-7edd-11ee-939d-92fbcf53809c.pngd29c18fe-7edd-11ee-939d-92fbcf53809c.png

8. 总结

在本项目中,我们介绍了 OpenVINO C# API 部署 RT-DETR 模型的案例,并结合该模型的处理方式封装完整的代码案例,实现了在英特尔平台使用 OpenVINO C# API 加速深度学习模型,有助于大家以后落地 RT-DETR 模型在工业上的应用。

最后我们对比了不同 Backbone 结构的 RT-DETR 模型在 C++、C# 不同平台上所表现出来的模型推理性能,在 C++ 与 C# 平台上,OpenVINO 所表现出的性能基本一致。但在 CPU 平台下,RT-DETR 模型推理时间依旧达不到理想效果,后续我们会继续研究该模型的量化技术,通过量化技术提升模型的推理速度。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英特尔
    +关注

    关注

    61

    文章

    9949

    浏览量

    171687
  • 检测器
    +关注

    关注

    1

    文章

    863

    浏览量

    47673
  • 模型
    +关注

    关注

    1

    文章

    3226

    浏览量

    48804
  • OpenVINO
    +关注

    关注

    0

    文章

    92

    浏览量

    196

原文标题:基于 OpenVINO™ C# API 部署 RT-DETR 模型 | 开发者实战

文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于C#OpenVINO™在英特尔独立显卡上部署PP-TinyPose模型

    作者:英特尔物联网行业创新大使 杨雪锋 OpenVINO 2022.2版开始支持英特尔独立显卡,还能通过“累计吞吐量”同时启动集成显卡 + 独立显卡助力全速 AI 推理。本文基于 C#
    的头像 发表于 11-18 18:27 2518次阅读

    如何使用OpenVINO C++ API部署FastSAM模型

    象的位置和边界。本文将介绍如何使用 OpenVINO C++ API 部署 FastSAM 模型,以实现快速高效的语义分割。在前文中我们发表
    的头像 发表于 11-17 09:53 911次阅读
    如何使用<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C</b>++ <b class='flag-5'>API</b><b class='flag-5'>部署</b>FastSAM<b class='flag-5'>模型</b>

    C++中使用OpenVINO工具包部署YOLOv5模型

    下载并转换YOLOv5预训练模型的详细步骤,请参考:《基于OpenVINO™2022.2和蝰蛇峡谷优化并部署YOLOv5模型》,本文所使用的Open
    的头像 发表于 02-15 16:53 4640次阅读

    简单聊聊目标检测新范式RT-DETR的骨干:HGNetv2

    当然,人们对RT-DETR之所以产生浓厚的兴趣,我觉得大概率还是对YOLO系列审美疲劳了,就算是出到了YOLO10086,我还是只想用YOLOv5和YOLOv7的框架来魔改做业务。。
    的头像 发表于 04-27 09:42 2001次阅读
    简单聊聊目标检测新范式<b class='flag-5'>RT-DETR</b>的骨干:HGNetv2

    介绍RT-DETR两种风格的onnx格式和推理方式

    RT-DETR是由百度近期推出的DETR-liked目标检测器,该检测器由HGNetv2、混合编码器和带有辅助预测头的Transformer编码器组成
    的头像 发表于 05-17 17:46 3259次阅读
    介绍<b class='flag-5'>RT-DETR</b>两种风格的onnx格式和推理方式

    自训练Pytorch模型使用OpenVINO™优化并部署在AI爱克斯开发板

    本文章将依次介绍如何将 Pytorch 自训练模型经过一系列变换变成 OpenVINO IR 模型形式,而后使用 OpenVINO Python A
    的头像 发表于 05-26 10:23 925次阅读
    自训练Pytorch<b class='flag-5'>模型</b>使用<b class='flag-5'>OpenVINO</b>™优化并<b class='flag-5'>部署</b>在AI爱克斯开发板

    OpenVINOC++ API编写YOLOv8-Seg实例分割模型推理程序

    本文章将介绍使用 OpenVINO 2023.0 C++ API 开发YOLOv8-Seg 实例分割(Instance Segmentation)模型的 AI 推理程序。本文
    的头像 发表于 06-25 16:09 1577次阅读
    用<b class='flag-5'>OpenVINO</b>™ <b class='flag-5'>C</b>++ <b class='flag-5'>API</b>编写YOLOv8-Seg实例分割<b class='flag-5'>模型</b>推理程序

    OpenVINOC# API详解与演示

    OpenVINO C# API 支持 NuGet 程序包安装方式,这与 OpenVINO C++ 库的安装过程相比,更加简单。如果使用 Vi
    的头像 发表于 10-13 16:39 748次阅读
    <b class='flag-5'>OpenVINO</b>™  <b class='flag-5'>C#</b> <b class='flag-5'>API</b>详解与演示

    基于OpenVINO Python API部署RT-DETR模型

    平台实现 OpenVINO 部署 RT-DETR 模型实现深度学习推理加速, 在本文中,我们将首先介绍基于 OpenVINO Python
    的头像 发表于 10-20 11:15 957次阅读
    基于<b class='flag-5'>OpenVINO</b> Python <b class='flag-5'>API</b><b class='flag-5'>部署</b><b class='flag-5'>RT-DETR</b><b class='flag-5'>模型</b>

    如何使用OpenVINO Python API部署FastSAM模型

    象的位置和边界。本文将介绍如何使用 OpenVINO Python API 部署 FastSAM 模型,以实现快速高效的语义分割。
    的头像 发表于 10-27 11:04 729次阅读

    基于OpenVINO C++ API部署RT-DETR模型

    应用中,我们为了与当前软件平台集成更多会采用 C++ 平台,因此在本文中,我们将基于 OpenVINO C++ API 向大家展示了不包含后处理的
    的头像 发表于 11-03 14:30 829次阅读
    基于<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C</b>++ <b class='flag-5'>API</b><b class='flag-5'>部署</b><b class='flag-5'>RT-DETR</b><b class='flag-5'>模型</b>

    OpenVINO™ Java API应用RT-DETR做目标检测器实战

    本文将从零开始详细介绍环境搭建的完整步骤,我们基于英特尔开发套件AIxBoard为硬件基础实现了Java在Ubuntu 22.04系统上成功使用OpenVINO™ Java API,并且成功运行了RT-DETR实现实时端到端目标
    的头像 发表于 03-18 15:04 792次阅读
    <b class='flag-5'>OpenVINO</b>™ Java <b class='flag-5'>API</b>应用<b class='flag-5'>RT-DETR</b>做目标检测器实战

    OpenVINO C# API在intel平台部署YOLOv10目标检测模型

    模型设计策略,从效率和精度两个角度对YOLOs的各个组成部分进行了全面优化,大大降低了计算开销,增强了性能。在本文中,我们将结合OpenVINO C# API使用最新发布的
    的头像 发表于 06-21 09:23 1014次阅读
    用<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C#</b> <b class='flag-5'>API</b>在intel平台<b class='flag-5'>部署</b>YOLOv10目标检测<b class='flag-5'>模型</b>

    使用OpenVINO C# API部署YOLO-World实现实时开放词汇对象检测

    的快速准确识别,并通过AR技术将虚拟元素与真实场景相结合,为用户带来沉浸式的交互体验。在本文中,我们将结合OpenVINO C# API使用最新发布的OpenVINO 2024.0
    的头像 发表于 08-30 16:27 619次阅读
    使用<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C#</b> <b class='flag-5'>API</b><b class='flag-5'>部署</b>YOLO-World实现实时开放词汇对象检测

    使用OpenVINO Model Server在哪吒开发板上部署模型

    OpenVINO Model Server(OVMS)是一个高性能的模型部署系统,使用C++实现,并在Intel架构上的部署进行了优化,使用
    的头像 发表于 11-01 14:19 269次阅读
    使用<b class='flag-5'>OpenVINO</b> Model Server在哪吒开发板上<b class='flag-5'>部署</b><b class='flag-5'>模型</b>