ml.utils — Utilitaires ML¶
Le module ml.utils contient des classes et fonctions utilitaires pour l’apprentissage automatique.
Fonctions¶
- ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
Applique un seuil à
scores(unndarrayquantifié de type int8, uint8, int16 ou uint16) à l’aide d’unthresholdquantifié et renvoie unndarrayde tous les indices qui dépassent le seuil.scaleest testé pour déterminer si les valeurs déquantifiées sont positives ou négatives. Lorsquescale > 0, les indices oùscores > thresholdsont renvoyés ; sinon, les indices oùscores < thresholdsont renvoyés.find_maxsi True, remplacescoresen interne par unndarraydu maximum (ou du minimum, selonscale) le long defind_max_axis.find_max_axisest l’axe le long duquel la réduction max/min est calculée lorsquefind_maxvaut True.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Convertit le
ndarraypassé en le divisant par l’échelle et en ajoutant le point zéro du modèle. Renvoievalueinchangé lorsque le type de la sortie du modèle àindexest flottant.modelest le modèle dont les paramètres de quantification de sortie sont utilisés.valueest lendarrayà quantifier.indexsélectionne la sortie tensorielle dumodelpar rapport à laquelle quantifier.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Convertit le
ndarraypassé en soustrayant le point zéro puis en multipliant par l’échelle du modèle. Renvoievalueinchangé lorsque le type de la sortie du modèle àindexest flottant.modelest le modèle dont les paramètres de quantification de sortie sont utilisés.valueest lendarrayà déquantifier.indexsélectionne la sortie tensorielle dumodelpar rapport à laquelle déquantifier.
- ml.utils.draw_predictions(image: image.Image, boxes: list[tuple[float, float, float, float]], labels: list[str], colors: list[tuple[int, int, int]], scores: list[float] | None = None, format: str = 'pascal_voc', font_width: int = 8, font_height: int = 10, text_color: tuple[int, int, int] = (255, 255, 255)) None¶
Dessine des boîtes englobantes (ou des marqueurs de point central) avec des étiquettes textuelles sur
image.boxesest une liste de tuples(x, y, w, h).labelsest une liste de chaînes d’étiquettes, une par boîte.colorsest une liste de tuples(r, g, b), un par boîte.scoressi différent deNone, une liste de scores de confiance par boîte. Lorsqu’elle est fournie, chaque étiquette rendue est suivie du score formaté en" %.2f".formatcontrôle la manière dont les coordonnées des boîtes sont interprétées :"pascal_voc"–(xmin, ymin, xmax, ymax)normalisé dans la plage0.0à1.0."point"–(x, y, w, h)en pixels absolus ; un marqueur en forme de cercle plein est dessiné au centre de la boîte au lieu d’un rectangle (utile pour les détecteurs de point central).toute autre valeur –
(x, y, w, h)en pixels absolus ; dessiné sous forme de rectangle.
font_widthest la largeur en pixels de chaque caractère de l’étiquette.font_heightest la hauteur en pixels de l’arrière-plan de l’étiquette.text_colorest la couleur(r, g, b)utilisée pour le texte de l’étiquette.
- ml.utils.draw_keypoints(image: image.Image, keypoints: ndarray, radius: int = 4, color: tuple[int, int, int] = (255, 0, 0), thickness: int = 1, fill: bool = False) None¶
Dessine un
ndarrayde valeurs de points clés(x, y, ...)surimage.radiusest le rayon du cercle des points clés. Lorsqueradius == 0, les points clés sont dessinés sous forme de pixels uniques.colorest la couleur(r, g, b)des points clés.thicknessest l’épaisseur du contour du cercle.fillsi True, remplit les cercles des points clés.
- ml.utils.draw_skeleton(image: image.Image, keypoints: ndarray, lines: list[tuple[int, int]], kp_radius: int = 4, kp_color: tuple[int, int, int] = (255, 0, 0), kp_thickness: int = 1, kp_fill: bool = False, line_color: tuple[int, int, int] = (0, 255, 0), line_thickness: int = 1) None¶
Dessine un
ndarrayde valeurs de points clés(x, y, ...)surimagepuis les relie par des segments de droite.linesest une liste de tuples(kp0_idx, kp1_idx)spécifiant quelles paires de points clés relier.kp_radiusest le rayon du cercle des points clés (transmis àdraw_keypoints).kp_colorest la couleur(r, g, b)des points clés.kp_thicknessest l’épaisseur du contour du cercle des points clés.kp_fillsi True, remplit les cercles des points clés.line_colorest la couleur(r, g, b)des lignes.line_thicknessest l’épaisseur des lignes.
classe NMS – Suppression Non-Maximale douce (Soft-NMS)¶
L’objet NMS collecte une liste de boîtes englobantes avec leurs scores associés, filtre les boîtes qui se chevauchent ayant des scores plus faibles via Soft-NMS, et remappe les boîtes détectées dans une sous-fenêtre vers les coordonnées de l’image originale.
- class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])¶
Crée un objet
NMS.window_wetwindow_hsont la largeur et la hauteur du tenseur d’entrée du modèle / de la fenêtre.roiest la région d’intérêt(x, y, w, h)de l’image originale sur laquelle le modèle a été exécuté (typiquement renvoyée par l’objetNormalization()). Utilisée pour remapper les boîtes détectées dans l’espace de coordonnées de l’image originale.roi[2]etroi[3]doivent être >= 1.- add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None¶
Ajoute une boîte englobante à l’objet
NMS. Les boîtes dont lescoreest en dehors de[0.0, 1.0]ou dont la largeur ou la hauteur est nulle/négative après écrêtage sont écartées.xmin,ymin,xmax,ymaxsont les coordonnées de la boîte englobante dans l’espace en pixels de la fenêtre, écrêtées à[0, window_w]/[0, window_h].scoreest le score de confiance de la boîte englobante (0.0-1.0).label_indexest l’indice de l’étiquette de classe associée à la boîte englobante.keypointsest unndarrayoptionnel de valeurs de points clés(x, y, ...)associées à cette boîte englobante.
- get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]¶
Effectue une Soft-NMS sur toutes les boîtes ajoutées et renvoie une liste de listes par classe, indexée par
label_index. Chaque liste interne contient des tuples((x, y, w, h), score)remappés vers les coordonnées de l’image originale. Sikeypointsa été fourni lors de l’ajout, le tuple est étendu avec lendarraykeypointsremappé.Après avoir appelé cette méthode, créez un nouvel objet
NMSpour traiter un nouvel ensemble de boîtes englobantes.thresholdest le score minimum qu’une boîte doit conserver après la suppression Soft-NMS pour être gardée.sigmacontrôle la gaussienne utilisée pour pénaliser les scores des boîtes englobantes qui se chevauchent. Unsigmaplus petit entraîne une suppression plus agressive.sigma <= 0.0désactive la pénalité gaussienne (les scores des boîtes qui se chevauchent ne sont pas atténués).