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

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

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

OpenVINO?的C API 2.0有何新特性?

英特爾物聯(lián)網(wǎng) ? 來(lái)源:英特爾物聯(lián)網(wǎng) ? 2023-02-24 11:14 ? 次閱讀

文章作者:武卓 博士/ River Li/ Peter Chen

你是否準(zhǔn)備好在新的一年體驗(yàn) OpenVINO 工具套件分發(fā)版的最新長(zhǎng)期支持 (LTS) 版本?

OpenVINO 2022.3 LTS 版本現(xiàn)已發(fā)布,可幫助你快速輕松地開發(fā)卓越的人工智能應(yīng)用,并跨邊緣和云端部署深度學(xué)習(xí)推理工作負(fù)載,無(wú)論你處于人工智能編程的什么階段。

作為人工智能開發(fā)人員,無(wú)論你希望將 OpenVINO 用于 C 應(yīng)用內(nèi),還是希望將其用于無(wú)法兼容 OpenVINO 軟件包的應(yīng)用二進(jìn)制接口 (ABI) 的 C++ 應(yīng)用,或用于需要運(yùn)行時(shí)加載 OpenVINO 庫(kù)的應(yīng)用,C API 均可助您一臂之力!

C API 2.0 現(xiàn)已隨 OpenVINO 2022.3 LTS 版本一起發(fā)布,包含以下主要功能:

01C API 2.0 支持 OpenVINO 2.0 C++API

如果開發(fā)人員以前僅知道如何應(yīng)用 OpenVINO C++API 2.0,該特性可幫助他們更輕松地應(yīng)用 C API 2.0,反之亦然。

02新的 C API 使用張量名稱

索引處理模型輸入/輸出

借助新的 C API 2.0 命名規(guī)則,開發(fā)人員可以更方便地編寫代碼和調(diào)用函數(shù),因?yàn)樗裱肆餍械纳疃葘W(xué)習(xí)命名規(guī)則和用途。

03支持動(dòng)態(tài)輸入和動(dòng)態(tài)模型

6db9d66c-b366-11ed-bfe3-dac502259ad0.png

一些深度學(xué)習(xí)模型涉及動(dòng)態(tài)輸入,即在某些輸入維度上,輸入尺寸可能會(huì)不時(shí)變化。例如,對(duì)于一些自然語(yǔ)言處理 (NLP) 用例,輸入至模型的內(nèi)容(例如所提問題問題的長(zhǎng)度)取決于特定的問題。現(xiàn)在,C API 2.0 支持動(dòng)態(tài)輸入和動(dòng)態(tài)模型,您可以輕松將其應(yīng)用于動(dòng)態(tài)輸入和模型。上面列舉了一些代碼片段。

04為模型前期/后期處理提供大量 C API

C API 2.0 中提供了大量前期和后期處理 C API,以進(jìn)一步加快 OpenVINO 實(shí)施深度學(xué)習(xí)模型推理的速度。例如,我們可以使用這樣的預(yù)處理 API 將 NV12 輸入數(shù)據(jù)轉(zhuǎn)換為與實(shí)際模型輸入相同的 BGR 格式,而無(wú)需使用 OpenCV 對(duì) OpenVINO 執(zhí)行數(shù)據(jù)格式轉(zhuǎn)換,從而節(jié)省預(yù)處理時(shí)間。

05屬性(鍵、數(shù)值、數(shù)字)的統(tǒng)一界面

對(duì)開發(fā)人員來(lái)說,為不同的用例設(shè)置/提供屬性更為方便,而且這也可以提高可擴(kuò)展性,便于未來(lái)支持更多新屬性。

01如何使用 C API 2.0?

如要開始使用 C API 2.0 構(gòu)建自己的應(yīng)用,您需要?jiǎng)?chuàng)建一個(gè)管道將 OpenVINO 集成到您的應(yīng)用中(如圖 1 所示)。

6de3b630-b366-11ed-bfe3-dac502259ad0.png

圖 1.OpenVINO 推理管道的步驟

步驟1:創(chuàng)建 OpenVINO 運(yùn)行時(shí)內(nèi)核

添加標(biāo)頭文件以支持 OpenVINO 運(yùn)行時(shí):

 #include 

使用以下代碼創(chuàng)建 OpenVINO 內(nèi)核,以管理可用設(shè)備和讀取模型對(duì)象:

ov_core_t* core = NULL;
ov_core_create(&core);

步驟2:編譯模型

以下代碼展示了以 OpenVINO 中間代碼 (IR) 文件的格式編譯深度學(xué)習(xí)模型的示例。您還可將其替換為其他框架的模型格式,如 TensorFlow、ONNX 等。

ov_compiled_model_t* compiled_model = NULL;
ov_core_compile_model_from_file(core, "model.xml", "AUTO", 0, &compiled_model);

向右滑動(dòng)查看完整代碼

步驟3:創(chuàng)建推理請(qǐng)求

使用以下代碼創(chuàng)建推理請(qǐng)求:

ov_infer_request_t* infer_request = NULL;
ov_compiled_model_create_infer_request(compiled_model, &infer_request);

向右滑動(dòng)查看完整代碼

步驟4:設(shè)置輸入

// Get input port for model with one input
ov_output_const_port_t* input_port = NULL;
ov_model_const_input(model, &input_port);
// Get the input shape from input port
ov_shape_t input_shape;
ov_const_port_get_shape(input_port, &input_shape);
// Get the the type of input
ov_element_type_e input_type;
ov_port_get_element_type(input_port, &input_type);
// Create tensor from external memory
ov_tensor_t* tensor = NULL;
ov_tensor_create_from_host_ptr(input_type, input_shape, memory_ptr, &tensor);
// Set input tensor for model with one input
ov_infer_request_set_input_tensor(infer_request, tensor);

向右滑動(dòng)查看完整代碼

步驟5:開始推理

OpenVINO 運(yùn)行時(shí)支持同步或異步模式的推理。使用異步 API 可提高應(yīng)用的整體幀速率:當(dāng)加速器運(yùn)行繁忙時(shí),應(yīng)用可在主機(jī)上正常工作,無(wú)需等待推理完成。以下代碼展示了在異步模式下設(shè)置推理的示例。

ov_infer_request_start_async(infer_request);
ov_infer_request_wait(infer_request);

向右滑動(dòng)查看完整代碼

步驟6:處理推理結(jié)果

檢查輸出張量,并使用以下代碼處理推理結(jié)果。

ov_tensor_t* output_tensor = NULL;
// Get output tensor by tensor index
ov_infer_request_get_output_tensor_by_index(infer_request, 0, &output_tensor);

向右滑動(dòng)查看完整代碼

步驟7:釋放分配的對(duì)象

為避免內(nèi)存泄漏,使用 C API 開發(fā)的應(yīng)用需要按順序釋放分配的對(duì)象。

ov_shape_free(&input_shape);
ov_tensor_free(output_tensor);
ov_output_const_port_free(input_port);
ov_tensor_free(tensor);
ov_infer_request_free(infer_request);
ov_compiled_model_free(compiled_model);
ov_model_free(model);
ov_core_free(core);

向右滑動(dòng)查看完整代碼

02在哪里找到 C API 2.0?

您可以通過“runtime/lib/libopenvino_c.so”(如圖 2 所示)輕松找到 C API 庫(kù)和標(biāo)頭文件。

6e0de32e-b366-11ed-bfe3-dac502259ad0.jpg

圖 2 在哪里找到 C API 2.0

03總結(jié)

總之,在 OpenVINO 2022.3 LTS 版本中,C API 更新為 C API 2.0。借助 C API 2.0,開發(fā)人員可以獲得多種新特性,能夠更輕松地在 C 應(yīng)用中集成 OpenVINO。

審核編輯:湯梓紅

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

    關(guān)注

    2

    文章

    1461

    瀏覽量

    61490
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3521

    瀏覽量

    93269
  • 人工智能
    +關(guān)注

    關(guān)注

    1787

    文章

    46061

    瀏覽量

    235018
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4237

    瀏覽量

    61969
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5422

    瀏覽量

    120593

原文標(biāo)題:OpenVINO? 的 C API 2.0 有何新特性?| 開發(fā)者實(shí)戰(zhàn)

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    象的位置和邊界。本文將介紹如何使用 OpenVINO C++ API 部署 FastSAM 模型,以實(shí)現(xiàn)快速高效的語(yǔ)義分割。在前文中我們發(fā)表了《基于 OpenVINO Python
    的頭像 發(fā)表于 11-17 09:53 ?733次閱讀
    如何使用<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C</b>++ <b class='flag-5'>API</b>部署FastSAM模型

    μC/OSII哪些可以改進(jìn)的地方呢?特性

    μC/OSII的特點(diǎn)與局限分別是什么?μC/OSII哪些可以改進(jìn)的地方呢?特性
    發(fā)表于 11-04 07:05

    使用OpenVINO運(yùn)行C++ API創(chuàng)建輸入tensor并執(zhí)行推理遇到的問題求解

    使用 OpenVINO? 運(yùn)行時(shí) C++ API 創(chuàng)建輸入 tensor 并執(zhí)行推理: ov::Tensor input_tensor = ov::Tensor(input_type
    發(fā)表于 08-15 08:22

    在Raspberry Pi上從源代碼構(gòu)建OpenVINO 2021.3收到錯(cuò)誤怎么解決?

    命名為“openvino.runtime”的模塊。 分辨率 從 2022.1 OpenVINO?起,推出了新的OpenVINO? API 2.0
    發(fā)表于 08-15 08:24

    JDBCTM 2.0 API

    The JDBCTM API is the JavaTM standard call-level API for database access. This documentcontains the final specification of the JDBC
    發(fā)表于 10-14 17:42 ?6次下載

    C++與C的const關(guān)鍵字差別?

    C++與C中的const關(guān)鍵字差別?
    的頭像 發(fā)表于 02-03 14:51 ?1724次閱讀

    OpenVINO工具套件預(yù)處理API的概念及使用方法

    OpenVINO 2022.1之前版本不提供OpenVINO Runtime原生的用于數(shù)據(jù)預(yù)處理的API函數(shù)1 ,如圖1-1所示,開發(fā)者必須通過第三方庫(kù)(例如:OpenCV)來(lái)實(shí)現(xiàn)數(shù)據(jù)預(yù)處理。
    的頭像 發(fā)表于 06-09 17:25 ?1958次閱讀

    OpenVINO? 2022.2新版本哪些亮眼的新特性

    金秋已至。伴著涼爽的秋風(fēng)一起到來(lái)的,還有 OpenVINO 工具套件剛剛推出的最新版本 OpenVINO 2022.2。除了能支持英特爾今年新推出的一系列獨(dú)立顯卡進(jìn)行 AI 模型的推理加速及部署外,2022.2的新版本中還有哪些亮眼的新
    的頭像 發(fā)表于 10-09 09:13 ?1575次閱讀

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

    本文章將介紹使用 OpenVINO 2023.0 C++ API 開發(fā)YOLOv8-Seg 實(shí)例分割(Instance Segmentation)模型的 AI 推理程序。本文 C++
    的頭像 發(fā)表于 06-25 16:09 ?1289次閱讀
    用<b class='flag-5'>OpenVINO</b>? <b class='flag-5'>C</b>++ <b class='flag-5'>API</b>編寫YOLOv8-Seg實(shí)例分割模型推理程序

    OpenVINO? C# API詳解與演示

    OpenVINO C# API 支持 NuGet 程序包安裝方式,這與 OpenVINO C++ 庫(kù)的安裝過程相比,更加簡(jiǎn)單。如果使用 Vi
    的頭像 發(fā)表于 10-13 16:39 ?610次閱讀
    <b class='flag-5'>OpenVINO</b>?  <b class='flag-5'>C</b># <b class='flag-5'>API</b>詳解與演示

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

    平臺(tái)實(shí)現(xiàn) OpenVINO 部署 RT-DETR 模型實(shí)現(xiàn)深度學(xué)習(xí)推理加速, 在本文中,我們將首先介紹基于 OpenVINO Python API 部署 RT-DETR 模型。
    的頭像 發(fā)表于 10-20 11:15 ?779次閱讀
    基于<b class='flag-5'>OpenVINO</b> Python <b class='flag-5'>API</b>部署RT-DETR模型

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

    應(yīng)用中,我們?yōu)榱伺c當(dāng)前軟件平臺(tái)集成更多會(huì)采用 C++ 平臺(tái),因此在本文中,我們將基于 OpenVINO C++ API 向大家展示了不包含后處理的 RT-DETR 模型的部署流程,并向
    的頭像 發(fā)表于 11-03 14:30 ?642次閱讀
    基于<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C</b>++ <b class='flag-5'>API</b>部署RT-DETR模型

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

    Python API 部署 RT-DETR 模型 | 開發(fā)者實(shí)戰(zhàn)》和《基于 OpenVINO C++ API 部署 RT-DETR 模型 | 開發(fā)者實(shí)戰(zhàn)》,在該文章中,我們基于
    的頭像 發(fā)表于 11-10 16:59 ?609次閱讀
    基于<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C</b># <b class='flag-5'>API</b>部署RT-DETR模型

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

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

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

    的快速準(zhǔn)確識(shí)別,并通過AR技術(shù)將虛擬元素與真實(shí)場(chǎng)景相結(jié)合,為用戶帶來(lái)沉浸式的交互體驗(yàn)。在本文中,我們將結(jié)合OpenVINO C# API使用最新發(fā)布的OpenVINO 2024.0部署
    的頭像 發(fā)表于 08-30 16:27 ?367次閱讀
    使用<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C</b># <b class='flag-5'>API</b>部署YOLO-World實(shí)現(xiàn)實(shí)時(shí)開放詞匯對(duì)象檢測(cè)