RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

英特爾物聯(lián)網(wǎng) ? 來源:英特爾物聯(lián)網(wǎng) ? 2023-11-10 16:59 ? 次閱讀

作者:顏國進(jìn)英特爾邊緣計(jì)算創(chuàng)新大使

RT-DETR 是在 DETR 模型基礎(chǔ)上進(jìn)行改進(jìn)的,一種基于 DETR 架構(gòu)的實(shí)時(shí)端到端檢測器,它通過使用一系列新的技術(shù)和算法,實(shí)現(xiàn)了更高效的訓(xùn)練和推理,在前文我們發(fā)表了《基于 OpenVINO Python API 部署 RT-DETR 模型 | 開發(fā)者實(shí)戰(zhàn)》和《基于 OpenVINO C++ API 部署 RT-DETR 模型 | 開發(fā)者實(shí)戰(zhàn)》,在該文章中,我們基于 OpenVINO Python 和 C++ API 向大家展示了的 RT-DETR 模型的部署流程,并分別展示了是否包含后處理的模型部署流程,為大家使用 RT-DETR 模型提供了很好的范例。在實(shí)際工業(yè)應(yīng)用時(shí),有時(shí)我們需要在 C# 環(huán)境下使用該模型應(yīng)用到工業(yè)檢測中,因此在本文中,我們將向大家展示使用 OpenVINO Csharp API 部署 RT-DETR 模型,并對比不同編程平臺下模型部署的速度。

該項(xiàng)目所使用的全部代碼已經(jīng)在 GitHub 上開源,并且收藏在 OpenVINO-CSharp-API 項(xiàng)目里。

1. RT-DETR

飛槳在去年 3 月份推出了高精度通用目標(biāo)檢測模型 PP-YOLOE ,同年在 PP-YOLOE 的基礎(chǔ)上提出了 PP-YOLOE+。而繼 PP-YOLOE 提出后,MT-YOLOv6、YOLOv7、DAMO-YOLO、RTMDet 等模型先后被提出,一直迭代到今年開年的 YOLOv8。

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

YOLO 檢測器有個較大的待改進(jìn)點(diǎn)是需要 NMS 后處理,其通常難以優(yōu)化且不夠魯棒,因此檢測器的速度存在延遲。DETR是一種不需要 NMS 后處理、基于 Transformer 的端到端目標(biāo)檢測器。百度飛槳正式推出了 —— RT-DETR (Real-Time DEtection TRansformer) ,一種基于 DETR 架構(gòu)的實(shí)時(shí)端到端檢測器,其在速度和精度上取得了 SOTA 性能。

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

RT-DETR 是在 DETR 模型基礎(chǔ)上進(jìn)行改進(jìn)的,它通過使用一系列新的技術(shù)和算法,實(shí)現(xiàn)了更高效的訓(xùn)練和推理。具體來說,RT-DETR 具有以下優(yōu)勢:

1. 實(shí)時(shí)性能更佳

RT-DETR 采用了一種新的注意力機(jī)制,能夠更好地捕獲物體之間的關(guān)系,并減少計(jì)算量。此外,RT-DETR 還引入了一種基于時(shí)間的注意力機(jī)制,能夠更好地處理視頻數(shù)據(jù)。

2. 精度更高

RT-DETR 在保證實(shí)時(shí)性能的同時(shí),還能夠保持較高的檢測精度。這主要得益于 RT-DETR 引入的一種新的多任務(wù)學(xué)習(xí)機(jī)制,能夠更好地利用訓(xùn)練數(shù)據(jù)。

3. 更易于訓(xùn)練和調(diào)參

RT-DETR 采用了一種新的損失函數(shù),能夠更好地進(jìn)行訓(xùn)練和調(diào)參。此外,RT-DETR 還引入了一種新的數(shù)據(jù)增強(qiáng)技術(shù),能夠更好地利用訓(xùn)練數(shù)據(jù)。

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

2. OpenVINO

英特爾 發(fā)行版OpenVINO 工具套件基于 oneAPI而開發(fā),可以加快高性能計(jì)算機(jī)視覺深度學(xué)習(xí)視覺應(yīng)用開發(fā)速度工具套件,適用于從邊緣到云的各種英特爾平臺上,幫助用戶更快地將更準(zhǔn)確的真實(shí)世界結(jié)果部署到生產(chǎn)系統(tǒng)中。通過簡化的開發(fā)工作流程,OpenVINO 可賦能開發(fā)者在現(xiàn)實(shí)世界中部署高性能應(yīng)用程序和算法。

OpenVINO 2023.1 于 2023 年 9 月 18 日發(fā)布,該工具包帶來了挖掘生成人工智能全部潛力的新功能。生成人工智能的覆蓋范圍得到了擴(kuò)展,通過 PyTorch* 等框架增強(qiáng)了體驗(yàn),您可以在其中自動導(dǎo)入和轉(zhuǎn)換模型。大型語言模型(LLM)在運(yùn)行時(shí)性能和內(nèi)存優(yōu)化方面得到了提升。聊天機(jī)器人、代碼生成等的模型已啟用。OpenVINO更便攜,性能更高,可以在任何需要的地方運(yùn)行:在邊緣、云中或本地。

3. 環(huán)境配置

本文中主要使用的項(xiàng)目環(huán)境可以通過 NuGet Package 包進(jìn)行安裝,Visual Studio 提供了 NuGet Package 包管理功能,可以通過其進(jìn)行安裝,主要使用下圖兩個程序包,C# 平臺安裝程序包還是十分方便的,直接安裝即可使用:

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

除了通過 Visual Studio 安裝,也可以通過 dotnet 指令進(jìn)行安裝,安裝命令為:

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

左滑查看更多

4. 模型下載與轉(zhuǎn)換

在之前的文章中我們已經(jīng)講解了模型的到處方式,大家可以參考下面兩篇文章實(shí)現(xiàn)模型導(dǎo)出:《基于 OpenVINO Python API 部署 RT-DETR 模型 | 開發(fā)者實(shí)戰(zhàn)》和《基于 OpenVINO C++ API 部署 RT-DETR 模型 | 開發(fā)者實(shí)戰(zhàn)》。

5. C# 代碼實(shí)現(xiàn)

為了更系統(tǒng)地實(shí)現(xiàn) RT-DETR 模型的推理流程,我們采用 C# 特性,封裝了 RTDETRPredictor 模型推理類以及 RTDETRProcess 模型數(shù)據(jù)處理類,下面我們將對這兩個類中的關(guān)鍵代碼進(jìn)行講解。

5.1 模型推理類實(shí)現(xiàn)

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)模型推理類初始化

首先我們需要初始化模型推理類,初始化相關(guān)信息

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:模型預(yù)測類別文件;

device_name:推理設(shè)備名稱;

post_flag:模型是否包含后處理,當(dāng) post_flag = true 時(shí),包含后處理,當(dāng) post_flag = false 時(shí),不包含后處理。

2)圖片預(yù)測 API

這一步中主要是對輸入圖片進(jìn)行預(yù)測,并將模型預(yù)測結(jié)果會知道輸入圖片上,下面是這階段的主要代碼:

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);
}

左滑查看更多

上述代碼的主要邏輯如下:首先是處理輸入圖片,調(diào)用定義的數(shù)據(jù)處理類,將輸入圖片處理成指定的數(shù)據(jù)類型;然后根據(jù)模型的輸入節(jié)點(diǎn)情況配置模型輸入數(shù)據(jù),如果使用的是動態(tài)模型輸入,需要設(shè)置輸入形狀;接下來就是進(jìn)行模型推理;最后就是對推理結(jié)果進(jìn)行處理,并將結(jié)果繪制到輸入圖片上。

在模型數(shù)據(jù)加載時(shí),此處重新設(shè)置了輸入節(jié)點(diǎn)形狀,因此此處支持動態(tài)模型輸入;并且根據(jù)模型是否包含后處理分別封裝了不同的處理方式,所以此處代碼支持所有導(dǎo)出的預(yù)測模型。

5.2 模型數(shù)據(jù)處理類 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) 輸入數(shù)據(jù)處理方法

輸入數(shù)據(jù)處理這一塊需要獲取圖片形狀大小以及圖片縮放比例系數(shù),最后直接調(diào)用 OpenCV 提供的數(shù)據(jù)處理方法,對輸入數(shù)據(jù)進(jìn)行處理。

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)預(yù)測結(jié)果數(shù)據(jù)處理方法

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;
}

左滑查看更多

此處對輸出結(jié)果做一個解釋,由于我們提供了兩種模型的輸出,此處提供了兩種模型的輸出數(shù)據(jù)處理方式,主要區(qū)別在于是否對預(yù)測框進(jìn)行還原以及對預(yù)測類別進(jìn)行提取,具體區(qū)別大家可以查看上述代碼。

6. 預(yù)測結(jié)果展示

最后通過上述代碼,我們最終可以直接實(shí)現(xiàn) RT-DETR 模型的推理部署,RT-DETR 與訓(xùn)練模型采用的是 COCO 數(shù)據(jù)集,最終我們可以獲取預(yù)測后的圖像結(jié)果,如圖所示:

上圖中展示了 RT-DETR 模型預(yù)測結(jié)果,同時(shí),我們對模型圖里過程中的關(guān)鍵信息以及推理結(jié)果進(jìn)行了打?。?/p>

[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. 平臺推理時(shí)間測試

為了評價(jià)不同平臺的模型推理性能,在 C++、C# 平臺分別部署了 RT-DETR 不同 Backbone 結(jié)構(gòu)的模型,如下表所示:

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

通過該表可以看出,不同 Backbone 結(jié)構(gòu)的 RT-DETR 模型在 C++、C# 不同平臺上所表現(xiàn)出來的模型推理性能基本一致,說明我們所推出的 OpenVINO C# API 對模型推理性能并沒有產(chǎn)生較大的影響。下圖為模型推理時(shí) CPU 使用以及內(nèi)存占用情況,可以看出在本機(jī)設(shè)備上,模型部署時(shí) CPU 占用在 40%~45% 左右,內(nèi)存穩(wěn)定在 10G 左右,所測試結(jié)果 CPU 以及內(nèi)存占用未減去其他軟件開銷。

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

8. 總結(jié)

在本項(xiàng)目中,我們介紹了 OpenVINO C# API 部署 RT-DETR 模型的案例,并結(jié)合該模型的處理方式封裝完整的代碼案例,實(shí)現(xiàn)了在英特爾平臺使用 OpenVINO C# API 加速深度學(xué)習(xí)模型,有助于大家以后落地 RT-DETR 模型在工業(yè)上的應(yīng)用。

最后我們對比了不同 Backbone 結(jié)構(gòu)的 RT-DETR 模型在 C++、C# 不同平臺上所表現(xiàn)出來的模型推理性能,在 C++ 與 C# 平臺上,OpenVINO 所表現(xiàn)出的性能基本一致。但在 CPU 平臺下,RT-DETR 模型推理時(shí)間依舊達(dá)不到理想效果,后續(xù)我們會繼續(xù)研究該模型的量化技術(shù),通過量化技術(shù)提升模型的推理速度。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 英特爾
    +關(guān)注

    關(guān)注

    61

    文章

    9949

    瀏覽量

    171687
  • 檢測器
    +關(guān)注

    關(guān)注

    1

    文章

    863

    瀏覽量

    47676
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3226

    瀏覽量

    48806
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    196

原文標(biāo)題:基于 OpenVINO? C# API 部署 RT-DETR 模型 | 開發(fā)者實(shí)戰(zhàn)

文章出處:【微信號:英特爾物聯(lián)網(wǎng),微信公眾號:英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于C#OpenVINO?在英特爾獨(dú)立顯卡上部署PP-TinyPose模型

    作者:英特爾物聯(lián)網(wǎng)行業(yè)創(chuàng)新大使 楊雪鋒 OpenVINO 2022.2版開始支持英特爾獨(dú)立顯卡,還能通過“累計(jì)吞吐量”同時(shí)啟動集成顯卡 + 獨(dú)立顯卡助力全速 AI 推理。本文基于 C#
    的頭像 發(fā)表于 11-18 18:27 ?2518次閱讀

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

    象的位置和邊界。本文將介紹如何使用 OpenVINO C++ API 部署 FastSAM 模型,以實(shí)現(xiàn)快速高效的語義分割。在前文中我們發(fā)表
    的頭像 發(fā)表于 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模型

    下載并轉(zhuǎn)換YOLOv5預(yù)訓(xùn)練模型的詳細(xì)步驟,請參考:《基于OpenVINO?2022.2和蝰蛇峽谷優(yōu)化并部署YOLOv5模型》,本文所使用的Open
    的頭像 發(fā)表于 02-15 16:53 ?4642次閱讀

    簡單聊聊目標(biāo)檢測新范式RT-DETR的骨干:HGNetv2

    當(dāng)然,人們對RT-DETR之所以產(chǎn)生濃厚的興趣,我覺得大概率還是對YOLO系列審美疲勞了,就算是出到了YOLO10086,我還是只想用YOLOv5和YOLOv7的框架來魔改做業(yè)務(wù)。。
    的頭像 發(fā)表于 04-27 09:42 ?2002次閱讀
    簡單聊聊目標(biāo)檢測新范式<b class='flag-5'>RT-DETR</b>的骨干:HGNetv2

    介紹RT-DETR兩種風(fēng)格的onnx格式和推理方式

    RT-DETR是由百度近期推出的DETR-liked目標(biāo)檢測器,該檢測器由HGNetv2、混合編碼器和帶有輔助預(yù)測頭的Transformer編碼器組成
    的頭像 發(fā)表于 05-17 17:46 ?3259次閱讀
    介紹<b class='flag-5'>RT-DETR</b>兩種風(fēng)格的onnx格式和推理方式

    自訓(xùn)練Pytorch模型使用OpenVINO?優(yōu)化并部署在AI愛克斯開發(fā)板

    本文章將依次介紹如何將 Pytorch 自訓(xùn)練模型經(jīng)過一系列變換變成 OpenVINO IR 模型形式,而后使用 OpenVINO Python A
    的頭像 發(fā)表于 05-26 10:23 ?926次閱讀
    自訓(xùn)練Pytorch<b class='flag-5'>模型</b>使用<b class='flag-5'>OpenVINO</b>?優(yōu)化并<b class='flag-5'>部署</b>在AI愛克斯開發(fā)板

    OpenVINO? C++ API編寫YOLOv8-Seg實(shí)例分割模型推理程序

    本文章將介紹使用 OpenVINO 2023.0 C++ API 開發(fā)YOLOv8-Seg 實(shí)例分割(Instance Segmentation)模型的 AI 推理程序。本文
    的頭像 發(fā)表于 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實(shí)例分割<b class='flag-5'>模型</b>推理程序

    OpenVINO? C# API詳解與演示

    OpenVINO C# API 支持 NuGet 程序包安裝方式,這與 OpenVINO C++ 庫的安裝過程相比,更加簡單。如果使用 Vi
    的頭像 發(fā)表于 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模型

    平臺實(shí)現(xiàn) OpenVINO 部署 RT-DETR 模型實(shí)現(xiàn)深度學(xué)習(xí)推理加速, 在本文中,我們將首先介紹基于 OpenVINO Python
    的頭像 發(fā)表于 10-20 11:15 ?958次閱讀
    基于<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 模型,以實(shí)現(xiàn)快速高效的語義分割。
    的頭像 發(fā)表于 10-27 11:04 ?729次閱讀

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

    應(yīng)用中,我們?yōu)榱伺c當(dāng)前軟件平臺集成更多會采用 C++ 平臺,因此在本文中,我們將基于 OpenVINO C++ API 向大家展示了不包含后處理的
    的頭像 發(fā)表于 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應(yīng)用RT-DETR做目標(biāo)檢測器實(shí)戰(zhàn)

    本文將從零開始詳細(xì)介紹環(huán)境搭建的完整步驟,我們基于英特爾開發(fā)套件AIxBoard為硬件基礎(chǔ)實(shí)現(xiàn)了Java在Ubuntu 22.04系統(tǒng)上成功使用OpenVINO? Java API,并且成功運(yùn)行了RT-DETR實(shí)現(xiàn)實(shí)時(shí)端到端目標(biāo)
    的頭像 發(fā)表于 03-18 15:04 ?793次閱讀
    <b class='flag-5'>OpenVINO</b>? Java <b class='flag-5'>API</b>應(yīng)用<b class='flag-5'>RT-DETR</b>做目標(biāo)檢測器實(shí)戰(zhàn)

    OpenVINO C# API在intel平臺部署YOLOv10目標(biāo)檢測模型

    模型設(shè)計(jì)策略,從效率和精度兩個角度對YOLOs的各個組成部分進(jìn)行了全面優(yōu)化,大大降低了計(jì)算開銷,增強(qiáng)了性能。在本文中,我們將結(jié)合OpenVINO C# API使用最新發(fā)布的
    的頭像 發(fā)表于 06-21 09:23 ?1018次閱讀
    用<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目標(biāo)檢測<b class='flag-5'>模型</b>

    使用OpenVINO C# API部署YOLO-World實(shí)現(xiàn)實(shí)時(shí)開放詞匯對象檢測

    的快速準(zhǔn)確識別,并通過AR技術(shù)將虛擬元素與真實(shí)場景相結(jié)合,為用戶帶來沉浸式的交互體驗(yàn)。在本文中,我們將結(jié)合OpenVINO C# API使用最新發(fā)布的OpenVINO 2024.0
    的頭像 發(fā)表于 08-30 16:27 ?620次閱讀
    使用<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實(shí)現(xiàn)實(shí)時(shí)開放詞匯對象檢測

    使用OpenVINO Model Server在哪吒開發(fā)板上部署模型

    OpenVINO Model Server(OVMS)是一個高性能的模型部署系統(tǒng),使用C++實(shí)現(xiàn),并在Intel架構(gòu)上的部署進(jìn)行了優(yōu)化,使用
    的頭像 發(fā)表于 11-01 14:19 ?270次閱讀
    使用<b class='flag-5'>OpenVINO</b> Model Server在哪吒開發(fā)板上<b class='flag-5'>部署</b><b class='flag-5'>模型</b>
    RM新时代网站-首页