OpenVINO(compiled_model.input())

做梦当财神發表於2024-10-30

目錄
  • 1. 函式概述
  • 2. 使用場景
  • 3. 返回的物件屬性
  • 4. 示例程式碼
  • 5. 多輸入情況
  • 6. 常見用途
  • 7. 注意事項



compiled_model.input() 是 OpenVINO API 中的一個方法,用於獲取編譯後的模型輸入節點的資訊。



1. 函式概述

  • compiled_model.input() 返回的是一個物件或列表,包含編譯後模型的輸入節點資訊。主要用於在推理過程中獲取輸入的詳細屬性,例如輸入節點的名稱、資料型別、維度等。
  • 這個方法通常在模型載入和編譯完成後呼叫,以便在推理前檢查或設定輸入的格式。


2. 使用場景

在使用 OpenVINO 進行推理時,需要知道模型的輸入節點資訊,以確保傳入的資料與模型的輸入規格匹配。compiled_model.input() 提供了對這些資訊的訪問,便於使用者動態適配輸入資料。



3. 返回的物件屬性

返回的物件通常具備以下屬性:

  • Name(名稱):輸入節點的名稱,便於在推理時透過名稱指定輸入。
  • Shape(形狀):輸入資料的維度,例如 [1, 3, 224, 224] 表示一個批次大小為 1、通道數為 3、解析度為 224x224 的影像輸入。
  • Data Type(資料型別):輸入資料的型別,例如 float32uint8,用於確保輸入資料型別的相容性。


4. 示例程式碼

import openvino.runtime as ov

# 載入模型和編譯
core = ov.Core()
model = core.read_model("model.xml")
compiled_model = core.compile_model(model, "CPU")

# 獲取輸入節點資訊
input_info = compiled_model.input()

# 列印輸入資訊
print("Input name:", input_info.get_any_name())
print("Input shape:", input_info.shape)
print("Input data type:", input_info.get_element_type())


5. 多輸入情況

對於多輸入模型,compiled_model.input() 返回一個輸入節點的列表,每個輸入節點對應模型的一個輸入。可以遍歷每個輸入節點的屬性:

for input_node in compiled_model.inputs:
    print("Input name:", input_node.get_any_name())
    print("Input shape:", input_node.shape)
    print("Input data type:", input_node.get_element_type())


6. 常見用途

  • 確認輸入格式:在實際推理前檢查模型輸入的形狀、資料型別,以確保輸入資料符合模型的要求。
  • 輸入資料預處理:根據輸入節點的資訊對資料進行適當的預處理,比如調整影像尺寸、格式、歸一化等。


7. 注意事項

  • 若模型輸入的資料格式不符合預期,推理會報錯,因此建議在執行推理前始終檢查輸入節點的屬性。
  • 不同模型的輸入可能有多個節點和不同資料格式,務必根據實際模型配置輸入。

透過 compiled_model.input(),可以有效獲取模型輸入的詳細資訊,使推理前的資料準備更加精準。