ml --- 机器学习¶
ml 模块包含在 OpenMV Cam 上加载和运行 TensorFlow Lite 模型的功能。该模块对外暴露了单个面向用户的类 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),并可返回任意值(例如边界框列表)。提供该参数时,为了性能,后处理器接收的是原始模型输出张量(未反量化)。在构造时,封装器还会尝试加载一个与
path同基名的.txt文件;若找到,则将每一行加载到Model.labels中。否则Model.labels为None。- predict(inputs: list, *, callback: object = None) list¶
在模型上运行推理并返回输出张量。
inputs 是一个列表,每个模型输入张量对应一个条目。每个条目可以是:
一个
ndarray,其形状与Model.input_shape中对应的条目相匹配。值会使用输入张量的 scale 和 zero point 进行量化(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)。