ml.postprocessing.edgeimpulse — Edge Impulse#

Il modulo ml.postprocessing.edgeimpulse contiene classi di post-elaborazione per i modelli Edge Impulse.

class Fomo – Fast Objects More Objects#

Post-elaboratore per l’output del modello 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 post-elaboratore FOMO.

threshold punteggio minimo richiesto affinché un rilevamento venga mantenuto.

w_scale fattore di scala orizzontale applicato alla larghezza della cella della griglia prima della non-max-suppression. Valori più grandi fanno sì che le celle vicine vengano unite in un singolo rilevamento.

h_scale fattore di scala verticale applicato all’altezza della cella della griglia prima della non-max-suppression. Valori più grandi fanno sì che le celle vicine vengano unite in un singolo rilevamento.

nms_threshold soglia IoU passata alla non-max-suppression.

nms_sigma valore sigma passato alla non-max-suppression (soft-NMS).

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

Invocato da ml.Model.predict() con il modello, i suoi input e i suoi output grezzi. Restituisce un elenco di elenchi di rilevamenti per classe. Ogni rilevamento è una tupla ((x, y, w, h), score). Gli elenchi di classe vuoti vengono inclusi in modo che la posizione di ciascun elenco nell’output corrisponda all’indice di classe nell’output del modello. Restituisce una tupla vuota quando non viene rilevato nulla.

class YoloPro – YOLO Pro#

Post-processore per l’output dei modelli di rilevamento oggetti Edge Impulse YOLO Pro. I modelli YOLO Pro emettono una riga per ogni box candidato contenente xmin, ymin, xmax, ymax (normalizzati rispetto all’input) seguiti da un vettore di punteggi per classe. Consulta la documentazione di YOLO Pro per l’addestramento di un modello di questo tipo.

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

Crea un post-processore YOLO Pro.

threshold punteggio di classe minimo necessario affinché un box venga mantenuto prima della non-max-suppression.

nms_threshold soglia IoU passata alla non-max-suppression.

nms_sigma valore sigma passato alla non-max-suppression (soft-NMS).

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

Invocato da ml.Model.predict() con il modello, i suoi input e i suoi output grezzi. Restituisce una lista di liste di rilevamenti per classe. Ogni rilevamento è una tupla ((x, y, w, h), score) in coordinate ROI. Le liste di classe vuote sono incluse in modo che la posizione di ciascuna lista nell’output corrisponda all’indice di classe nell’output del modello. Restituisce una tupla vuota quando non viene rilevato nulla.

Esempio:

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)