ml.postprocessing.edgeimpulse — Edge Impulse#

Moduł ml.postprocessing.edgeimpulse zawiera klasy przetwarzania końcowego dla modeli Edge Impulse.

klasa Fomo – Fast Objects More Objects#

Post-procesor dla wyjścia modelu 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)#

Tworzy post-procesor FOMO.

threshold minimalny wynik wymagany, aby wykrycie zostało zachowane.

w_scale poziomy współczynnik skali stosowany do szerokości komórki siatki przed tłumieniem niemaksymalnym. Większe wartości powodują scalanie sąsiednich komórek w pojedyncze wykrycie.

h_scale pionowy współczynnik skali stosowany do wysokości komórki siatki przed tłumieniem niemaksymalnym. Większe wartości powodują scalanie sąsiednich komórek w pojedyncze wykrycie.

nms_threshold próg IoU przekazywany do tłumienia niemaksymalnego.

nms_sigma wartość sigma przekazywana do tłumienia niemaksymalnego (soft-NMS).

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

Wywoływany przez ml.Model.predict() z modelem, jego wejściami i jego surowymi wyjściami. Zwraca listę list wykryć dla poszczególnych klas. Każde wykrycie jest krotką ((x, y, w, h), score). Puste listy klas są dołączane, aby pozycja każdej listy w wyjściu odpowiadała indeksowi klasy w wyjściu modelu. Zwraca pustą krotkę, gdy nic nie zostanie wykryte.

klasa YoloPro – YOLO Pro#

Post-procesor dla wyjścia modeli detekcji obiektów Edge Impulse YOLO Pro. Modele YOLO Pro emitują jeden wiersz na każdą ramkę kandydującą, zawierający xmin, ymin, xmax, ymax (znormalizowane względem wejścia), a następnie wektor wyników dla poszczególnych klas. Informacje o trenowaniu takiego modelu znajdziesz w dokumentacji YOLO Pro.

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

Tworzy post-procesor YOLO Pro.

threshold minimalny wynik klasy wymagany, aby ramka została zachowana przed tłumieniem niemaksymalnym.

nms_threshold próg IoU przekazywany do tłumienia niemaksymalnego.

nms_sigma wartość sigma przekazywana do tłumienia niemaksymalnego (soft-NMS).

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

Wywoływany przez ml.Model.predict() z modelem, jego wejściami i jego surowymi wyjściami. Zwraca listę list wykryć dla poszczególnych klas. Każde wykrycie jest krotką ((x, y, w, h), score) we współrzędnych ROI. Puste listy klas są dołączane, aby pozycja każdej listy w wyjściu odpowiadała indeksowi klasy w wyjściu modelu. Zwraca pustą krotkę, gdy nic nie zostanie wykryte.

Przykład:

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)