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.
thresholdMindest-Score, der erforderlich ist, damit eine Erkennung beibehalten wird.w_scalehorizontaler 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_scalevertikaler 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_thresholdIoU-Schwellenwert, der an die Non-Maximum-Suppression übergeben wird.nms_sigmaSigma-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.
thresholdMindest-Klassen-Score, der erforderlich ist, damit eine Box vor der Non-Max-Suppression beibehalten wird.nms_thresholdIoU-Schwellenwert, der an die Non-Maximum-Suppression übergeben wird.nms_sigmaSigma-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)