ml.postprocessing.edgeimpulse — Edge Impulse#

El módulo ml.postprocessing.edgeimpulse contiene clases de posprocesamiento para modelos de Edge Impulse.

class Fomo – Fast Objects More Objects#

Posprocesador para la salida del modelo FOMO (Fast Objects More Objects).

class ml.postprocessing.edgeimpulse.Fomo(threshold: float = 0.4, w_scale: float = 1.414214, h_scale: float = 1.414214, nms_threshold: float = 0.1, nms_sigma: float = 0.001)#

Crea un posprocesador FOMO.

threshold puntuación mínima requerida para que se conserve una detección.

w_scale factor de escala horizontal aplicado al ancho de la celda de la cuadrícula antes de la supresión de no máximos. Valores más grandes hacen que las celdas vecinas se fusionen en una sola detección.

h_scale factor de escala vertical aplicado a la altura de la celda de la cuadrícula antes de la supresión de no máximos. Valores más grandes hacen que las celdas vecinas se fusionen en una sola detección.

nms_threshold umbral de IoU pasado a la supresión de no máximos.

nms_sigma valor sigma pasado a la supresión de no máximos (soft-NMS).

__call__(model: ml.Model, inputs: list, outputs: list) → list#

Llamado por ml.Model.predict() con el modelo, sus entradas y sus salidas sin procesar. Devuelve una lista de listas de detección por clase. Cada detección es una tupla ((x, y, w, h), score). Las listas de clase vacías se incluyen para que la posición de cada lista en la salida coincida con el índice de clase en la salida del modelo. Devuelve una tupla vacía cuando no se detecta nada.

class YoloPro – YOLO Pro#

Posprocesador para la salida de los modelos de detección de objetos YOLO Pro de Edge Impulse. Los modelos YOLO Pro emiten una fila por cada caja candidata que contiene xmin, ymin, xmax, ymax (normalizados respecto a la entrada) seguidos de un vector de puntuaciones por clase. Consulte la documentación de YOLO Pro para entrenar un modelo de este tipo.

class ml.postprocessing.edgeimpulse.YoloPro(threshold: float = 0.6, nms_threshold: float = 0.1, nms_sigma: float = 0.1)#

Crea un posprocesador YOLO Pro.

threshold puntuación de clase mínima requerida para que se conserve una caja antes de la supresión de no máximos.

nms_threshold umbral de IoU pasado a la supresión de no máximos.

nms_sigma valor sigma pasado a la supresión de no máximos (soft-NMS).

__call__(model: ml.Model, inputs: list, outputs: list) → list#

Llamado por ml.Model.predict() con el modelo, sus entradas y sus salidas sin procesar. Devuelve una lista de listas de detecciones por clase. Cada detección es una tupla ((x, y, w, h), score) en coordenadas del ROI. Se incluyen las listas de clases vacías para que la posición de cada lista en la salida coincida con el índice de la clase en la salida del modelo. Devuelve una tupla vacía cuando no se detecta nada.

Ejemplo:

import csi
import ml
from ml.postprocessing.edgeimpulse import YoloPro

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)

model = ml.Model("/rom/<model_file_name>", postprocess=YoloPro(threshold=0.4))

while True:
    img = csi0.snapshot()
    for i, detections in enumerate(model.predict([img])):
        for (x, y, w, h), score in detections:
            img.draw_rectangle(x, y, w, h)
            print(model.labels[i], score)