OpenVINO2022 API介紹
OpenVINO2022 版本的SDK在使用比之前版本簡單,而且功能比較豐富,特別是支持動態(tài)輸入設置,一次可以推理多張圖像;相比之前的模型輸入只支持一種尺度輸入跟每次一張圖片推理來說是大大的提升執(zhí)行效率。特別是Python版本的API簡單易學,容易上手,只需要掌握下面幾個函數(shù)就可以完成從模型加載到推理。
導入支持
要使用Python SDK,首先需要導入支持語句,
加載模型
2022版本加載模型提供了兩種模式分別是read_model與compile_model方式,這兩種方式得到分別是model跟compiled model,其中通過read_model方式讀取的model對象可以通過compile_model函數(shù)轉換為compiled model,同時它們都支持直接訪問屬性獲取輸入與輸出層信息(inputs/outputs),函數(shù)如下:
修改模型輸入
Model的reshape方法支持把模型輸入修改,同時會修改整個模型的下行轉發(fā)推理,當前支持的修改參數(shù)包括batch size、輸入圖像的寬高、假設模型的原始輸入為:
1x3x224x224
修改為:
8x3x448x448
只需要調用reshape方法,一行代碼即可完成:
model.reshape([8, 3, 448, 448])
前后對比示意圖如下:
上述是從一種靜態(tài)輸入各種,設置為另外一種靜態(tài)輸入格式。OpenVINO的reshape還支持動態(tài)輸入(不定長)的推理輸入設置,假設把模型的輸入格式從:
[?x3x640x640]
修改為:
[4x3x640x?]
其中 ?表示不定長,可以用如下代碼:
其中 -1表示不定長! 注意:修改輸入/動態(tài)輸入在iGPU上暫時還無法被支持,所以AUTO模式下修改以后可能會遇到推理失敗的情況!這塊建議參考官方文檔說明。
模型推理
Python SDK支持兩種方式,一種是通過complied model直接推理,這種方式跟很多深度學習的推理方式非常類似,另外一種方式是先通過compiled model創(chuàng)建InferRequest實例對象,然后調用infer方法完成推理,個人推薦第一種方法,簡單快捷明了,希望OpenVINO以后直接把第二種方法給disable了,同時官方的教程也更新為第一種方式推理!兩種推理方式代碼示意,
方法一:
results = compiled_model(input_data)
方法二:
infer_request = compiled_model.create_infer_request()
infer_request.infer()
output_tensor = infer_request.get_output_tensor()
場景文字檢測模型演示
下面是基于2022版本最新Python SDK調用OpenVINO官方提供的自帶場景文字檢測模型,完成了一個簡單的場景文字檢測OpenVINO2022版本 Python SDK演示,代碼如下:
resized_image = cv.resize(image, (w, h), interpolation=self.interpolate_mode) contours, hiearchy = cv.findContours(mask, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
輸入圖像:
場景文字檢測結果:
一個trick的地方,當你修改為動態(tài)輸入的時候有時候會遇到這個錯誤:
ValueError: get_shape was called on a descriptor::Tensor with dynamic shape
這個時候你需要把Core初始化為全局類屬性變量或者一個全局變量一般情況下就會修正這個錯誤,這個是使用動態(tài)輸入推理最有玄機的地方!原因我也解釋不清楚,也許OpenVINO還需要持續(xù)改進,提升開發(fā)者滿意度!
審核編輯:劉清
-
API
+關注
關注
2文章
1501瀏覽量
62025 -
Auto
+關注
關注
0文章
42瀏覽量
15279 -
python
+關注
關注
56文章
4797瀏覽量
84690
原文標題:OpenVINO2022 Python API詳解與演示
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論