ml.preprocessing — ML-Vorverarbeitung¶
Das Modul ml.preprocessing enthält Klassen zur Vorverarbeitung von Bildern für die Verwendung mit Modellen des maschinellen Lernens.
class Normalization – Bildnormalisierung¶
Das Normalization-Objekt konvertiert image.Image-Objekte in ndarray-Eingabetensoren zur Verwendung mit ml.Model.predict(). Es wird automatisch vom ml.Model-Objekt erstellt, wenn ein Bild an ml.Model.predict() übergeben wird, kann aber auch manuell instanziiert werden, um die Konvertierung zu steuern (Skala, Mittelwert/Standardabweichung, 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)¶
Erstellt ein
Normalization-Objekt.scaleist der(min, max)-Wertebereich, den Gleitkomma-Eingabetensoren nach der Normalisierung erwarten (z. B.(0.0, 1.0)oder(-1.0, 1.0)). Wird füruint8- undint8-Eingabetensoren ignoriert.meanist der kanalweise Mittelwert(R, G, B), der nach der Skalierung vom Bild abgezogen wird. Für Graustufentensoren wird der Mittelwert mittels0.299*R + 0.587*G + 0.114*Bauf einen einzelnen Luma-Wert reduziert. Wird füruint8- undint8-Eingabetensoren ignoriert.stdevist die kanalweise Standardabweichung(R, G, B), durch die das Bild nach dem Abziehen des Mittelwerts geteilt wird. Für Graustufentensoren wird die Standardabweichung mittels0.299*R + 0.587*G + 0.114*Bauf einen einzelnen Luma-Wert reduziert. Wird füruint8- undint8-Eingabetensoren ignoriert.roiist ein optionaler(x, y, w, h)-Interessensbereich innerhalb des Eingabebildes, der zugeschnitten werden soll. Ist erNone, wird das gesamte Bild verwendet. Der zugeschnittene Bereich wird zentriert und bilinear (unter Beibehaltung des Seitenverhältnisses mit schwarzer Auffüllung) auf die Abmessungen des Eingabetensors des Modells skaliert.- __call__(image: image.Image) Normalization¶
- __call__(buffer: bytearray, shape: tuple[int, int, int, int], dtype: int) None
Beim Aufruf mit einem einzelnen
image.Image-Argument wird ein neues, an dieses Bild gebundenesNormalization-Objekt zurückgegeben. Das gebundene Objekt ist das, wasml.Model.predict()intern aufruft, um den Eingabetensor zu füllen. Wurderoian der ursprünglichen Instanz nicht gesetzt, wird es auf die volle Bildgröße initialisiert.Beim Aufruf mit
(buffer, shape, dtype)wirdbufferdirekt mit dem normalisierten Eingabetensor für das zuvor gebundene Bild gefüllt.shapemuss(1, H, W, C)sein, wobeiCgleich1(Graustufen) oder3(RGB) ist.dtypeist der ulab-numpy-Typcode (z. B.ord('f')für float32,ord('b')für int8,ord('B')für uint8). Float-Tensoren wendenscale,meanundstdevan; Integer-Tensoren werden direkt geschrieben (mit einem Offset fürint8).