ml.preprocessing --- ML 预处理¶
ml.preprocessing 模块包含用于预处理图像以供机器学习模型使用的类。
class Normalization -- 图像归一化¶
Normalization 对象将 image.Image 对象转换为 ndarray 输入张量,以供 ml.Model.predict() 使用。当向 ml.Model.predict() 传入图像时,它由 ml.Model 对象自动创建,但也可手动实例化以控制转换过程(scale、mean/stdev、ROI)。
- 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对象。scale是浮点型输入张量在归一化后所期望的值(min, max)范围(例如(0.0, 1.0)或(-1.0, 1.0))。对于uint8和int8输入张量则忽略此项。mean是缩放后从图像中减去的逐通道均值(R, G, B)。对于灰度张量,均值会使用0.299*R + 0.587*G + 0.114*B缩减为单个亮度值。对于uint8和int8输入张量则忽略此项。stdev是减去均值后图像所除以的逐通道标准差(R, G, B)。对于灰度张量,标准差会使用0.299*R + 0.587*G + 0.114*B缩减为单个亮度值。对于uint8和int8输入张量则忽略此项。roi是输入图像内一个可选的(x, y, w, h)感兴趣区域,用于裁剪。若为None,则使用整幅图像。裁剪出的区域会被居中,并双线性缩放(保持纵横比并用黑色填充)到模型的输入张量尺寸。- __call__(image: image.Image) Normalization¶
- __call__(buffer: bytearray, shape: tuple[int, int, int, int], dtype: int) None
当以单个
image.Image参数调用时,返回一个绑定到该图像的新Normalization对象。ml.Model.predict()在内部调用的正是这个绑定对象来填充输入张量。如果原始实例上未设置roi,则会将其初始化为整幅图像的大小。当以
(buffer, shape, dtype)调用时,会就地用先前所绑定图像的归一化输入张量填充buffer。shape必须为(1, H, W, C),其中C等于1(灰度)或3(RGB)。dtype是 ulab numpy 类型码(例如ord('f')表示 float32,ord('b')表示 int8,ord('B')表示 uint8)。浮点张量会应用scale、mean和stdev;整数张量则直接写入(对int8带有一个偏移量)。