ml — Машинное обучение

Модуль ml содержит функциональность для загрузки и запуска моделей TensorFlow Lite на OpenMV Cam. Модуль предоставляет единственный пользовательский класс ml.Model, который оборачивает базовый класс C Model дополнительными удобствами на стороне Python (автоматическая загрузка меток и автоматическое преобразование изображения в тензор).

Подмодули

class Model – Контейнер модели

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

Загружает модель TensorFlow Lite из path в память и подготавливает её для вывода. path может быть файлом в файловой системе или именем модели, встроенной в образ прошивки.

postprocess — это необязательный вызываемый объект постобработки, вызываемый Model.predict после вывода. Он получает (model, inputs, outputs) и может возвращать любое значение (например, список ограничивающих рамок). Если он задан, постпроцессор получает необработанные выходные тензоры модели (без деквантизации) для повышения производительности.

При построении обёртка дополнительно пытается загрузить файл .txt с тем же базовым именем, что и path; если он найден, каждая строка загружается в Model.labels. В противном случае Model.labels равно None.

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

Выполняет вывод на модели и возвращает выходные тензоры.

inputs — это список с одной записью на каждый входной тензор модели. Каждая запись может быть:

  • Объект ndarray, форма которого соответствует соответствующей записи в Model.input_shape. Значения квантуются с использованием масштаба и нулевой точки входного тензора (входы float32 передаются без изменений).

  • Объект image.Image. Обёртка автоматически оборачивает его в объект ml.preprocessing.Normalization, чтобы преобразовать его в ожидаемый тензор.

  • Вызываемый объект. Он будет вызван с (bytearray, shape, dtype) и должен заполнить bytearray данными входного тензора.

callback — это необязательный вызываемый объект постобработки для конкретного вызова. Если он задан, он переопределяет postprocess, установленный в конструкторе, только для этого вызова. Функция обратного вызова получает (model, inputs, outputs), и её возвращаемое значение возвращается методом predict.

Возвращает список выходов ndarray, по одному на каждый выходной тензор модели. Если ни один постпроцессор не активен, выходы деквантизуются в float32; если постпроцессор активен, ему вместо этого передаются необработанные выходные тензоры (с использованием родного типа dtype каждого тензора).

len: int

Размер загруженной модели в байтах.

ram: int

Объём оперативной памяти, используемый тензорной ареной модели, в байтах.

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

Список кортежей, задающих форму каждого входного тензора.

input_dtype: list[str]

Список односимвольных строк, задающих тип dtype каждого входного тензора: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

input_scale: list[float]

Список значений с плавающей точкой, задающих масштаб квантизации каждого входного тензора.

input_zero_point: list[int]

Список целых чисел, задающих нулевую точку квантизации каждого входного тензора.

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

Список кортежей, задающих форму каждого выходного тензора.

output_dtype: list[str]

Список односимвольных строк, задающих тип dtype каждого выходного тензора: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32).

output_scale: list[float]

Список значений с плавающей точкой, задающих масштаб квантизации каждого выходного тензора.

output_zero_point: list[int]

Список целых чисел, задающих нулевую точку квантизации каждого выходного тензора.

postprocess: object

Вызываемый объект постобработки, переданный конструктору, или None.

labels: list[str]

Список строк меток, загруженных из файла .txt рядом с моделью, или None, если такого файла не существует.