ml.preprocessing — Pré-traitement ML

Le module ml.preprocessing contient des classes pour le pré-traitement des images en vue de leur utilisation avec des modèles d’apprentissage automatique.

class Normalization – Normalisation d’image

L’objet Normalization convertit les objets image.Image en tenseurs d’entrée ndarray destinés à ml.Model.predict(). Il est créé automatiquement par l’objet ml.Model lorsqu’une image est passée à ml.Model.predict(), mais il peut être instancié manuellement pour contrôler la conversion (échelle, moyenne/écart-type, 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)

Crée un objet Normalization.

scale est la plage de valeurs (min, max) que les tenseurs d’entrée à virgule flottante attendent après normalisation (par exemple (0.0, 1.0) ou (-1.0, 1.0)). Ignoré pour les tenseurs d’entrée uint8 et int8.

mean est la moyenne par canal (R, G, B) soustraite de l’image après mise à l’échelle. Pour les tenseurs en niveaux de gris, la moyenne est réduite à une seule valeur de luminance à l’aide de 0.299*R + 0.587*G + 0.114*B. Ignoré pour les tenseurs d’entrée uint8 et int8.

stdev est l’écart-type par canal (R, G, B) par lequel l’image est divisée après soustraction de la moyenne. Pour les tenseurs en niveaux de gris, l’écart-type est réduit à une seule valeur de luminance à l’aide de 0.299*R + 0.587*G + 0.114*B. Ignoré pour les tenseurs d’entrée uint8 et int8.

roi est une région d’intérêt optionnelle (x, y, w, h) à rogner dans l’image d’entrée. Si None, l’image entière est utilisée. La région rognée est centrée, mise à l’échelle de manière bilinéaire (en préservant le rapport d’aspect avec un remplissage noir) jusqu’aux dimensions du tenseur d’entrée du modèle.

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

Lorsqu’il est appelé avec un seul argument image.Image, renvoie un nouvel objet Normalization lié à cette image. L’objet lié est ce que ml.Model.predict() invoque en interne pour remplir le tenseur d’entrée. Si roi n’avait pas été défini sur l’instance d’origine, il est initialisé à la taille de l’image entière.

Lorsqu’il est appelé avec (buffer, shape, dtype), remplit buffer sur place avec le tenseur d’entrée normalisé pour l’image précédemment liée. shape doit être (1, H, W, C) avec C égal à 1 (niveaux de gris) ou 3 (RGB). dtype est le code de type numpy ulab (par exemple ord('f') pour float32, ord('b') pour int8, ord('B') pour uint8). Les tenseurs flottants appliquent scale, mean et stdev ; les tenseurs entiers sont écrits directement (avec un décalage pour int8).