ml.preprocessing — ML-voorbewerking

De ml.preprocessing-module bevat klassen voor het voorbewerken van afbeeldingen voor gebruik met machine learning-modellen.

class Normalization – Afbeeldingsnormalisatie

Het Normalization-object converteert image.Image-objecten naar ndarray-invoertensoren voor gebruik met ml.Model.predict(). Het wordt automatisch aangemaakt door het ml.Model-object wanneer een afbeelding aan ml.Model.predict() wordt doorgegeven, maar kan handmatig worden geïnstantieerd om de conversie te beheren (schaal, gemiddelde/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)

Maakt een Normalization-object aan.

scale is het (min, max)-waardenbereik dat invoertensoren met drijvende komma verwachten na normalisatie (bijv. (0.0, 1.0) of (-1.0, 1.0)). Wordt genegeerd voor uint8- en int8-invoertensoren.

mean is het gemiddelde per kanaal (R, G, B) dat na schaling van de afbeelding wordt afgetrokken. Voor grijswaardentensoren wordt het gemiddelde gereduceerd tot een enkele luma-waarde met behulp van 0.299*R + 0.587*G + 0.114*B. Wordt genegeerd voor uint8- en int8-invoertensoren.

stdev is de standaardafwijking per kanaal (R, G, B) waardoor de afbeelding wordt gedeeld nadat het gemiddelde is afgetrokken. Voor grijswaardentensoren wordt de stdev gereduceerd tot een enkele luma-waarde met behulp van 0.299*R + 0.587*G + 0.114*B. Wordt genegeerd voor uint8- en int8-invoertensoren.

roi is een optioneel (x, y, w, h)-aandachtsgebied binnen de invoerafbeelding om bij te snijden. Indien None wordt de volledige afbeelding gebruikt. Het bijgesneden gebied wordt gecentreerd en bilineair geschaald (met behoud van de beeldverhouding en zwarte opvulling) naar de invoertensorafmetingen van het model.

__call__(image: image.Image) Normalization
__call__(buffer: bytearray, shape: tuple[int, int, int, int], dtype: int) None

Wanneer aangeroepen met een enkel image.Image-argument, retourneert een nieuw Normalization-object dat aan die afbeelding is gebonden. Het gebonden object is wat ml.Model.predict() intern aanroept om de invoertensor te vullen. Als roi niet op de oorspronkelijke instantie was ingesteld, wordt het geïnitialiseerd op de volledige afbeeldingsgrootte.

Wanneer aangeroepen met (buffer, shape, dtype), vult buffer ter plaatse met de genormaliseerde invoertensor voor de eerder gebonden afbeelding. shape moet (1, H, W, C) zijn met C gelijk aan 1 (grijswaarden) of 3 (RGB). dtype is de ulab numpy-typecode (bijv. ord('f') voor float32, ord('b') voor int8, ord('B') voor uint8). Float-tensoren passen scale, mean en stdev toe; integer-tensoren worden rechtstreeks geschreven (met een offset voor int8).