ml.postprocessing.edgeimpulse — Edge Impulse#

Das Modul ml.postprocessing.edgeimpulse enthält Nachbearbeitungsklassen für Edge-Impulse-Modelle.

class Fomo – Fast Objects More Objects#

Nachbearbeiter für die Ausgabe von FOMO-Modellen (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)#

Erstellt einen FOMO-Nachbearbeiter.

threshold Mindest-Score, der erforderlich ist, damit eine Erkennung beibehalten wird.

w_scale horizontaler Skalierungsfaktor, der vor der Non-Maximum-Suppression auf die Breite der Gitterzelle angewendet wird. Größere Werte führen dazu, dass benachbarte Zellen zu einer einzigen Erkennung zusammengeführt werden.

h_scale vertikaler Skalierungsfaktor, der vor der Non-Maximum-Suppression auf die Höhe der Gitterzelle angewendet wird. Größere Werte führen dazu, dass benachbarte Zellen zu einer einzigen Erkennung zusammengeführt werden.

nms_threshold IoU-Schwellenwert, der an die Non-Maximum-Suppression übergeben wird.

nms_sigma Sigma-Wert, der an die Non-Maximum-Suppression übergeben wird (Soft-NMS).

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

Wird von ml.Model.predict() mit dem Modell, seinen Eingaben und seinen rohen Ausgaben aufgerufen. Gibt eine Liste von Erkennungslisten pro Klasse zurück. Jede Erkennung ist ein ((x, y, w, h), score)-Tupel. Leere Klassenlisten werden mit aufgenommen, sodass die Position jeder Liste in der Ausgabe dem Klassenindex in der Modellausgabe entspricht. Gibt ein leeres Tupel zurück, wenn nichts erkannt wird.

class YoloPro – YOLO Pro#

Nachbearbeiter für die Ausgabe von Edge Impulse YOLO Pro-Objekterkennungsmodellen. YOLO Pro-Modelle geben pro Kandidatenbox eine Zeile mit xmin, ymin, xmax, ymax (normiert auf die Eingabe) aus, gefolgt von einem Score-Vektor pro Klasse. Wie ein solches Modell trainiert wird, beschreibt die YOLO Pro-Dokumentation.

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

Erstellt einen YOLO Pro-Nachbearbeiter.

threshold Mindest-Klassen-Score, der erforderlich ist, damit eine Box vor der Non-Max-Suppression beibehalten wird.

nms_threshold IoU-Schwellenwert, der an die Non-Maximum-Suppression übergeben wird.

nms_sigma Sigma-Wert, der an die Non-Maximum-Suppression übergeben wird (Soft-NMS).

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

Wird von ml.Model.predict() mit dem Modell, seinen Eingaben und seinen Rohausgaben aufgerufen. Gibt eine Liste von Erkennungslisten pro Klasse zurück. Jede Erkennung ist ein ((x, y, w, h), score)-Tupel in ROI-Koordinaten. Leere Klassenlisten sind enthalten, damit die Position jeder Liste in der Ausgabe dem Klassenindex in der Modellausgabe entspricht. Gibt ein leeres Tupel zurück, wenn nichts erkannt wurde.

Beispiel:

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)