tf_object_detection.py
# Dieses Werk ist unter der MIT-Lizenz lizenziert.
# Copyright (c) 2013-2024 OpenMV LLC. Alle Rechte vorbehalten.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Beispiel für TensorFlow Lite Objekterkennung
#
# Dieses Beispiel verwendet das eingebaute FOMO-Modell zur Gesichtserkennung.
import csi
import time
import ml
from ml.postprocessing.edgeimpulse import Fomo
import math
csi0 = csi.CSI()
csi0.reset() # Sensor zurücksetzen und initialisieren.
csi0.pixformat(csi.RGB565) # Pixelformat auf RGB565 (oder GRAYSCALE) setzen
csi0.framesize(csi.QVGA) # Framegröße auf QVGA (320x240) setzen
csi0.window((240, 240)) # 240x240-Fenster festlegen.
csi0.snapshot(time=2000) # Die Kamera sich anpassen lassen.
# Eingebautes FOMO-Gesichtserkennungsmodell laden
model = ml.Model("/rom/fomo_face_detection.tflite", postprocess=Fomo(threshold=0.4))
print(model)
# Alternativ können Modelle aus dem Dateisystemspeicher geladen werden.
# model = ml.Model('<object_detection_modelwork>.tflite', load_to_fb=True)
# labels = [line.rstrip('\n') for line in open("labels.txt")]
colors = [ # Fügen Sie weitere Farben hinzu, wenn Sie mehr als 7 Klassentypen gleichzeitig erkennen.
(255, 0, 0),
(0, 255, 0),
(255, 255, 0),
(0, 0, 255),
(255, 0, 255),
(0, 255, 255),
(255, 255, 255),
]
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
for i, detection_list in enumerate(model.predict([img])):
if i == 0:
continue # Hintergrundklasse
if len(detection_list) == 0:
continue # keine Erkennungen für diese Klasse?
print("********** %s **********" % model.labels[i])
for (x, y, w, h), score in detection_list:
center_x = math.floor(x + (w / 2))
center_y = math.floor(y + (h / 2))
print(f"x {center_x}\ty {center_y}\tscore {score}")
img.draw_circle((center_x, center_y, 12), color=colors[i])
print(clock.fps(), "fps", end="\n")