ml.utils — Utilidades de ML¶
El módulo ml.utils contiene clases y funciones de utilidad para el aprendizaje automático.
Funciones¶
- ml.utils.logit(x: ndarray) ndarray¶
Devuelve el logit de todos los valores del
ndarrayproporcionado.
- ml.utils.sigmoid(x: ndarray) ndarray¶
Devuelve la sigmoide de todos los valores del
ndarrayproporcionado.
- ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
Aplica un umbral a
scores(unndarraycuantizado de int8, uint8, int16 o uint16) mediante unthresholdcuantizado y devuelve unndarraycon todos los índices que superan el umbral.scalese evalúa para determinar si los valores descuantizados son positivos o negativos. Cuandoscale > 0se devuelven los índices dondescores > threshold; en caso contrario se devuelven los índices dondescores < threshold.find_maxsi es True, reemplaza internamentescorespor unndarraydel máximo (o mínimo, segúnscale) a lo largo defind_max_axis.find_max_axises el eje a lo largo del cual se calcula la reducción de máximo/mínimo cuandofind_maxes True.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Convierte el
ndarrayproporcionado dividiendo por la escala y sumando el punto cero del modelo. Devuelvevaluesin cambios cuando el dtype de salida del modelo enindexes float.modeles el modelo cuyos parámetros de cuantización de salida se utilizan.valuees elndarrayque se va a cuantizar.indexselecciona contra qué salida tensorial delmodelse cuantiza.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Convierte el
ndarrayproporcionado restando el punto cero y multiplicando luego por la escala del modelo. Devuelvevaluesin cambios cuando el dtype de salida del modelo enindexes float.modeles el modelo cuyos parámetros de cuantización de salida se utilizan.valuees elndarrayque se va a descuantizar.indexselecciona contra qué salida tensorial delmodelse descuantiza.
- 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¶
Dibuja cuadros delimitadores (o marcadores de punto central) con etiquetas de texto sobre
image.boxeses una lista de tuplas(x, y, w, h).labelses una lista de cadenas de etiqueta, una por cuadro.colorses una lista de tuplas(r, g, b), una por cuadro.scoressi no esNone, es una lista de puntuaciones de confianza por cuadro. Cuando se proporciona, cada etiqueta renderizada lleva como sufijo la puntuación formateada como" %.2f".formatcontrola cómo se interpretan las coordenadas del cuadro:"pascal_voc"–(xmin, ymin, xmax, ymax)normalizado en el rango0.0a1.0."point"–(x, y, w, h)en píxeles absolutos; se dibuja un marcador circular relleno en el centro del cuadro en lugar de un rectángulo (útil para detectores de punto central).cualquier otro valor –
(x, y, w, h)en píxeles absolutos; dibujado como un rectángulo.
font_widthes el ancho en píxeles de cada carácter de la etiqueta.font_heightes la altura en píxeles del fondo de la etiqueta.text_colores el color(r, g, b)utilizado para el texto de la etiqueta.
- 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¶
Dibuja un
ndarrayde valores de punto clave(x, y, ...)sobreimage.radiuses el radio del círculo del punto clave. Cuandoradius == 0los puntos clave se dibujan como píxeles individuales.colores el color(r, g, b)del punto clave.thicknesses el grosor del contorno del círculo.fillsi es True rellena los círculos de los puntos clave.
- 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¶
Dibuja un
ndarrayde valores de punto clave(x, y, ...)sobreimagey luego los conecta con segmentos de línea.lineses una lista de tuplas(kp0_idx, kp1_idx)que especifican qué pares de puntos clave conectar.kp_radiuses el radio del círculo del punto clave (se pasa adraw_keypoints).kp_colores el color(r, g, b)del punto clave.kp_thicknesses el grosor del contorno del círculo del punto clave.kp_fillsi es True rellena los círculos de los puntos clave.line_colores el color(r, g, b)de la línea.line_thicknesses el grosor de la línea.
class NMS – Supresión suave de no máximos (Soft-Non-Maximum Suppression)¶
El objeto NMS recopila una lista de cuadros delimitadores con sus puntuaciones asociadas, filtra los cuadros solapados con puntuaciones más bajas mediante Soft-NMS y reasigna los cuadros detectados en una subventana de vuelta a las coordenadas de la imagen original.
- class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])¶
Crea un objeto
NMS.window_wywindow_hson el ancho y el alto del tensor de entrada del modelo / ventana.roies la región de interés(x, y, w, h)de la imagen original sobre la que se ejecutó el modelo (normalmente devuelta por el objetoNormalization()). Se utiliza para reasignar los cuadros detectados de vuelta al espacio de coordenadas de la imagen original.roi[2]yroi[3]deben ser >= 1.- add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None¶
Añade un cuadro delimitador al objeto
NMS. Se descartan los cuadros conscorefuera de[0.0, 1.0]o con ancho o alto cero/negativo tras el recorte.xmin,ymin,xmax,ymaxson las coordenadas del cuadro delimitador en el espacio de píxeles de la ventana, recortadas a[0, window_w]/[0, window_h].scorees la puntuación de confianza del cuadro delimitador (0.0-1.0).label_indexes el índice de la etiqueta de clase asociada al cuadro delimitador.keypointses unndarrayopcional de valores de punto clave(x, y, ...)asociados a este cuadro delimitador.
- get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]¶
Realiza Soft-NMS sobre todos los cuadros añadidos y devuelve una lista de listas por clase, indexada por
label_index. Cada lista interna contiene tuplas de((x, y, w, h), score)reasignadas de vuelta a las coordenadas de la imagen original. Si se proporcionaronkeypointsal añadir, la tupla se extiende con elndarraydekeypointsreasignado.Después de llamar a este método, cree un nuevo objeto
NMSpara procesar un nuevo conjunto de cuadros delimitadores.thresholdes la puntuación mínima que un cuadro debe conservar tras la supresión Soft-NMS para ser mantenido.sigmacontrola la gaussiana utilizada para penalizar las puntuaciones de los cuadros delimitadores solapados. Unsigmamás pequeño produce una supresión más agresiva.sigma <= 0.0desactiva la penalización gaussiana (las puntuaciones de los cuadros solapados no se atenúan).