ml.preprocessing — Попередня обробка МН

Модуль 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 — код типу numpy ulab (наприклад, ord('f') для float32, ord('b') для int8, ord('B') для uint8). Тензори з рухомою комою застосовують scale, mean та stdev; цілочисельні тензори записуються безпосередньо (зі зміщенням для int8).