ml — Uczenie maszynowe

Moduł ml zawiera funkcje do wczytywania i uruchamiania modeli TensorFlow Lite na OpenMV Cam. Moduł udostępnia jedną klasę przeznaczoną dla użytkownika, ml.Model, która opakowuje bazową klasę C Model, dodając udogodnienia po stronie Pythona (automatyczne wczytywanie etykiet oraz automatyczną konwersję obrazu na tensor).

Podmoduły

klasa Model – Kontener modelu

class ml.Model(path: str, *, postprocess: object = None) Model

Wczytuje model TensorFlow Lite ze ścieżki path do pamięci i przygotowuje go do wnioskowania. path może być plikiem w systemie plików lub nazwą modelu wbudowanego w obraz oprogramowania układowego.

postprocess to opcjonalny obiekt wywoływalny do przetwarzania końcowego, wywoływany przez Model.predict po wnioskowaniu. Otrzymuje (model, inputs, outputs) i może zwrócić dowolną wartość (np. listę ramek ograniczających). Gdy jest podany, post-procesor otrzymuje surowe tensory wyjściowe modelu (bez dekwantyzacji) dla zwiększenia wydajności.

Podczas tworzenia obiektu opakowanie dodatkowo próbuje wczytać plik .txt o tej samej nazwie bazowej co path; jeśli zostanie znaleziony, każda linia jest wczytywana do Model.labels. W przeciwnym razie Model.labels ma wartość None.

predict(inputs: list, *, callback: object = None) list

Uruchamia wnioskowanie na modelu i zwraca tensory wyjściowe.

inputs to lista zawierająca jeden wpis na każdy tensor wejściowy modelu. Każdy wpis może być:

  • Obiektem ndarray, którego kształt odpowiada odpowiedniemu wpisowi w Model.input_shape. Wartości są kwantowane przy użyciu skali i punktu zerowego tensora wejściowego (wejścia typu float32 są przekazywane bez zmian).

  • Obiektem image.Image. Opakowanie automatycznie umieszcza go w obiekcie ml.preprocessing.Normalization, aby przekonwertować go na oczekiwany tensor.

  • Obiektem wywoływalnym. Zostanie wywołany z (bytearray, shape, dtype) i oczekuje się, że wypełni bytearray danymi tensora wejściowego.

callback to opcjonalny obiekt wywoływalny do przetwarzania końcowego dla pojedynczego wywołania. Gdy zostanie podany, zastępuje postprocess ustawiony w konstruktorze tylko dla tego wywołania. Wywołanie zwrotne otrzymuje (model, inputs, outputs), a jego wartość zwracana jest zwracana przez predict.

Zwraca listę wyjść ndarray, po jednym na każdy tensor wyjściowy modelu. Jeśli żaden post-procesor nie jest aktywny, wyjścia są dekwantowane do float32; jeśli post-procesor jest aktywny, przekazywane są do niego surowe tensory wyjściowe (z natywnym typem dtype każdego tensora).

len: int

Rozmiar wczytanego modelu w bajtach.

ram: int

Ilość pamięci RAM używanej przez arenę tensorów modelu, w bajtach.

input_shape: list[tuple[int, ...]]

Lista krotek podających kształt każdego tensora wejściowego.

input_dtype: list[str]

Lista jednoznakowych ciągów podających dtype każdego tensora wejściowego: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

input_scale: list[float]

Lista liczb zmiennoprzecinkowych podających skalę kwantyzacji każdego tensora wejściowego.

input_zero_point: list[int]

Lista liczb całkowitych podających punkt zerowy kwantyzacji każdego tensora wejściowego.

output_shape: list[tuple[int, ...]]

Lista krotek podających kształt każdego tensora wyjściowego.

output_dtype: list[str]

Lista jednoznakowych ciągów podających dtype każdego tensora wyjściowego: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

output_scale: list[float]

Lista liczb zmiennoprzecinkowych podających skalę kwantyzacji każdego tensora wyjściowego.

output_zero_point: list[int]

Lista liczb całkowitych podających punkt zerowy kwantyzacji każdego tensora wyjściowego.

postprocess: object

Obiekt wywoływalny do przetwarzania końcowego podany w konstruktorze lub None.

labels: list[str]

Lista ciągów etykiet wczytanych z pliku .txt znajdującego się obok modelu lub None, jeśli taki plik nie istnieje.