跳至主要内容

模型與推論

執行模型、設定前處理與後處理、交換張量並測量推論。 請依序完成這些教學。

載入已編譯的 ResNet-50 模型封存檔,輸入一張圖片,並讀取前五名預測結果——從「我有一個模型封存檔」到「我得到了一個預測結果」,這就是最快的路徑。

modelinferencefoundations

從一個產生器執行緒中饋入模型,同時從另一個執行緒中取得預測結果,藉此將輸入和輸出分開,以實現真正的吞吐量。與第 001 章相同的 ResNet 路徑,現在採用非同步方式。

asyncpush-pullthroughputruntime

執行已編譯的模型,使用確定性的合成張量,並列印 `Model::benchmark()` 傳回的延遲、吞吐量、功耗和能耗等主要指標。

benchmarksyntheticlatencythroughputpower
設定模型選項 圖片 設定模型選項 5 minutes

`ModelOptions` 是一個結構體,用於定義您的輸入資料、模型的管線階段以及其輸出解碼之間的協定。當您想要超越預設行為時,這是您首先需要設定的地方。

model-optionsconfigurationcontracts

設定預處理階段——格式、尺寸和每個通道的正規化——使原始圖像輸入成為與模型訓練時使用的張量完全相同的張量。準確的預處理通常是決定模型是否有效以及是否出現問題的關鍵。

preprocessingnormalizationimage

使用 `SimaBoxDecode` 將原始模型輸出解碼為可用的邊界框——包含閾值處理、NMS(非最大值抑制)和座標映射,這些都整合到一個後處理階段中——然後將結果讀取為已解析的框或原始的打包位元組緩衝區。

postprocessingboxdecodedetection

在 Neat 張量和您已有的結構(NumPy 陣列、PyTorch 張量或 `cv::Mat`)之間移動資料,控制佈局、dtype 和複製語義,以便您可以將 Neat 整合到現有的推論堆疊中。

numpypytorchtensorio

將多個具名稱的張量捆綁成一個 `Sample`,並將其作為單一的推論事件傳送——這是用於處理接受多個輸入的模型(例如,立體圖像、圖像 + 中繼資料或感測器融合)的模式。

multi-inputsamplessync

從 `run.pull()` 或 `model.run()` 安全地讀取。每次執行都會傳回一個 `Sample`,這是一種小型總和類型,可能是一個張量、一組具名欄位,或兩者皆有,因此您在處理有效載荷之前,應先對其進行分類。

outputpatternssink