ml --- 機器學習¶
ml 模組包含在 OpenMV Cam 上載入並執行 TensorFlow Lite 模型的功能。此模組對外公開單一面向使用者的類別 ml.Model,它封裝底層的 C Model 類別並提供額外的 Python 端便利功能(自動載入標籤以及自動將影像轉換為張量)。
子模組¶
class Model -- 模型容器¶
- class ml.Model(path: str, *, postprocess: object = None) Model¶
從
path將 TensorFlow Lite 模型載入記憶體並為推論做好準備。path可以是檔案系統上的檔案,或是內建於韌體映像中的模型名稱。postprocess 是一個選用的後處理可呼叫物件,由
Model.predict在推論後叫用。它接收(model, inputs, outputs)並可回傳任意值(例如邊界框清單)。提供時,為了效能,後處理器接收的是原始的模型輸出張量(未經反量化)。建構時,此封裝器還會嘗試載入與
path同基礎名稱的.txt檔案;若找到,則每一行都會載入Model.labels。否則Model.labels為None。- predict(inputs: list, *, callback: object = None) list¶
在模型上執行推論並回傳輸出張量。
inputs 是一個清單,每個模型輸入張量對應一個項目。每個項目可以是:
形狀與
Model.input_shape中對應項目相符的ndarray。值會使用輸入張量的縮放係數與零點進行量化(float32 輸入則原樣傳遞)。一個
image.Image物件。封裝器會自動將其包裝在ml.preprocessing.Normalization物件中,以轉換為預期的張量。一個可呼叫物件。它會以
(bytearray, shape, dtype)被叫用,並預期將輸入張量資料填入該 bytearray。
callback 是一個選用的單次呼叫後處理可呼叫物件。提供時,它僅針對本次呼叫覆寫建構函式上設定的
postprocess。此回呼接收(model, inputs, outputs),且其回傳值會由predict回傳。回傳一個
ndarray輸出清單,每個模型輸出張量對應一個。若未啟用任何後處理器,輸出會反量化為float32;若啟用了後處理器,則改為將原始輸出張量(使用各張量的原生 dtype)傳遞給它。
- input_dtype: list[str]¶
一個單字元字串清單,給出每個輸入張量的 dtype:
'b'(int8)、'B'(uint8)、'h'(int16)、'H'(uint16)、'f'(float32)。