ml.postprocessing.edgeimpulse — Edge Impulse#

Modulen ml.postprocessing.edgeimpulse innehåller efterbehandlingsklasser för Edge Impulse-modeller.

class Fomo – Fast Objects More Objects#

Efterbehandlare för utdata från FOMO-modeller (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)#

Skapar en FOMO-efterbehandlare.

threshold lägsta poäng som krävs för att en detektering ska behållas.

w_scale horisontell skalfaktor som tillämpas på rutnätscellens bredd före icke-maximumsupprimering. Större värden gör att intilliggande celler slås samman till en enda detektering.

h_scale vertikal skalfaktor som tillämpas på rutnätscellens höjd före icke-maximumsupprimering. Större värden gör att intilliggande celler slås samman till en enda detektering.

nms_threshold IoU-tröskelvärde som skickas till icke-maximumsupprimering.

nms_sigma sigma-värde som skickas till icke-maximumsupprimering (soft-NMS).

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

Anropas av ml.Model.predict() med modellen, dess indata och dess råa utdata. Returnerar en lista med detekteringslistor per klass. Varje detektering är en ((x, y, w, h), score)-tupel. Tomma klasslistor inkluderas så att varje listas position i utdata matchar klassindexet i modellens utdata. Returnerar en tom tupel när inget detekteras.

class YoloPro – YOLO Pro#

Efterbehandlare för utdata från Edge Impulse YOLO Pro-modeller för objektdetektering. YOLO Pro-modeller ger en rad per kandidatruta som innehåller xmin, ymin, xmax, ymax (normaliserade till indata) följt av en poängvektor per klass. Se YOLO Pro-dokumentationen för hur man tränar en sådan modell.

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

Skapar en YOLO Pro-efterbehandlare.

threshold lägsta klasspoäng som krävs för att en ruta ska behållas före non-max-suppression.

nms_threshold IoU-tröskelvärde som skickas till icke-maximumsupprimering.

nms_sigma sigma-värde som skickas till icke-maximumsupprimering (soft-NMS).

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

Anropas av ml.Model.predict() med modellen, dess indata och dess råa utdata. Returnerar en lista med detekteringslistor per klass. Varje detektering är en ((x, y, w, h), score)-tupel i ROI-koordinater. Tomma klasslistor inkluderas så att varje listas position i utdata matchar klassindexet i modellens utdata. Returnerar en tom tupel när inget detekteras.

Exempel:

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)