ml.preprocessing
— ML 预处理¶
`ml.preprocessing`模块包含用于图像预处理的类,以便与机器学习模型一起使用。
class Normalization – 图像归一化¶
Normalization
对象用于将图像对象转换为 numpy ndarray
对象,以便与 Model
对象一起使用。当图像对象被传递给 predict()
时,它会被 Model
对象自动创建。然而,你也可以手动创建一个 Normalization
对象,以控制转换过程、选择 ROI(感兴趣区域)等。
举例:
model = ml.Model("model.tflite")
norm = ml.Normalization(scale=(0.0, 1.0), mean=(0.485, 0.456, 0.406), stdev=(0.229, 0.224, 0.225))
outputs = model.predict([norm(image)])
构造¶
- class ml.preprocessing.Normalization(scale: tuple[float, float] = (0.0, 1.0), mean: tuple[float, float, float] = (0.0, 0.0, 0.0), stdev: tuple[float, float, float] = (1.0, 1.0, 1.0), roi: tuple[int, int, int, int] = None) Normalization ¶
创建一个
Normalization
对象,用于将图像对象转换为 numpy 数组,以供predict()
使用。该对象还可用于选择图像中的感兴趣区域 (ROI) 并将其转换为 numpy 数组。Normalization
对象会自动将传入的任何图像类型(包括压缩图像)转换为单通道(灰度)或三通道(RGB888)图像,并将其传递到模型的张量输入中。图像会根据需要居中、按比例放大/缩小(使用双线性或区域缩放)、并裁剪,以匹配模型输入张量的大小。对于
uint8
输入张量,图像会被直接传递,忽略缩放和均值/标准差处理。对于int8
输入张量,图像会从uint8
范围平移到int8
范围,然后直接传递,同样忽略缩放和均值/标准差处理。接受这些格式的张量比需要浮点数输入的张量处理速度更快。对于浮点数输入张量,无法推测模型期望的正确范围。虽然每个输入张量都编码了一个缩放值和零点值,可用于将输入转换到正确范围,但这些值并未指示浮点数输入数据应处于何种范围。例如,图像的 RGB 值在应用缩放和零点之前,应该在 (0.0, 1.0)、(-1.0, 1.0)、(0.0, 255.0) 等范围内?答案取决于模型及其训练方式。因此,
Normalization
对象允许您直接指定输入数据的范围、均值和标准差。然后,灰度图像或 RGB888 图像会根据这些值转换为浮点数张量,以供模型处理。不支持
uint16
和int16
输入张量。