ml.preprocessing — Предобработка ML¶
Модуль ml.preprocessing содержит классы для предобработки изображений для использования с моделями машинного обучения.
class Normalization – Нормализация изображения¶
Объект Normalization преобразует объекты image.Image во входные тензоры ndarray для использования с ml.Model.predict(). Он автоматически создаётся объектом ml.Model, когда изображение передаётся в ml.Model.predict(), но может быть создан вручную для управления преобразованием (масштаб, среднее/стандартное отклонение, 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).