文章作者:武卓 博士/ River Li/ Peter Chen
你是否準(zhǔn)備好在新的一年體驗(yàn) OpenVINO 工具套件分發(fā)版的最新長(zhǎng)期支持 (LTS) 版本?
OpenVINO 2022.3 LTS 版本現(xiàn)已發(fā)布,可幫助你快速輕松地開(kāi)發(fā)卓越的人工智能應(yīng)用,并跨邊緣和云端部署深度學(xué)習(xí)推理工作負(fù)載,無(wú)論你處于人工智能編程的什么階段。
作為人工智能開(kāi)發(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
如果開(kāi)發(fā)人員以前僅知道如何應(yīng)用 OpenVINO C++API 2.0,該特性可幫助他們更輕松地應(yīng)用 C API 2.0,反之亦然。
02新的 C API 使用張量名稱
和索引處理模型輸入/輸出
借助新的 C API 2.0 命名規(guī)則,開(kāi)發(fā)人員可以更方便地編寫代碼和調(diào)用函數(shù),因?yàn)樗裱肆餍械纳疃葘W(xué)習(xí)命名規(guī)則和用途。
03支持動(dòng)態(tài)輸入和動(dòng)態(tài)模型
一些深度學(xué)習(xí)模型涉及動(dòng)態(tài)輸入,即在某些輸入維度上,輸入尺寸可能會(huì)不時(shí)變化。例如,對(duì)于一些自然語(yǔ)言處理 (NLP) 用例,輸入至模型的內(nèi)容(例如所提問(wèn)題問(wèn)題的長(zhǎng)度)取決于特定的問(wèn)題。現(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ì)開(kāi)發(fā)人員來(lái)說(shuō),為不同的用例設(shè)置/提供屬性更為方便,而且這也可以提高可擴(kuò)展性,便于未來(lái)支持更多新屬性。
01如何使用 C API 2.0?
如要開(kāi)始使用 C API 2.0 構(gòu)建自己的應(yīng)用,您需要?jiǎng)?chuàng)建一個(gè)管道將 OpenVINO 集成到您的應(yīng)用中(如圖 1 所示)。
圖 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:開(kāi)始推理
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 開(kāi)發(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?
您可以通過(guò)“runtime/lib/libopenvino_c.so”(如圖 2 所示)輕松找到 C API 庫(kù)和標(biāo)頭文件。
圖 2 在哪里找到 C API 2.0
03總結(jié)
總之,在 OpenVINO 2022.3 LTS 版本中,C API 更新為 C API 2.0。借助 C API 2.0,開(kāi)發(fā)人員可以獲得多種新特性,能夠更輕松地在 C 應(yīng)用中集成 OpenVINO。
審核編輯:湯梓紅
-
API
+關(guān)注
關(guān)注
2文章
1511瀏覽量
62397 -
編程
+關(guān)注
關(guān)注
88文章
3637瀏覽量
93985 -
人工智能
+關(guān)注
關(guān)注
1796文章
47674瀏覽量
240295 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
62973 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5515瀏覽量
121551
原文標(biāo)題:OpenVINO? 的 C API 2.0 有何新特性?| 開(kāi)發(fā)者實(shí)戰(zhàn)
文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論