Erweiterte AI Objekterkennung für 2K+ WQHD Kameras

AI Objekterkennung

Wir testen gerade das Update bzgl. der erweiterten Objekterkennung. Mit dem nächsten Update wird die Kamera insgesamt 19 Klassen erkennen und diese per HTTP und MQTT bei einen Alarmserver (Smarthome) melden können.

Die neuen Objektklassen sind:

  • person
  • face
  • car
  • numberplate
  • motorbike
  • train
  • van
  • bus
  • truck
  • bike
  • boat
  • plane
  • helicopter
  • dog
  • cat
  • bird
  • deer
  • horse
  • cow

HTTP Alarmserver

Beim HTTP Alarmserver schaut das ganze jetzt so aus:

Hier sind active und object die Queries die bereits in der alten Firmware vorhanden waren. Diese zeigen den ersten Alarmauslöser und das erste gefundene Objekt (hier werden weiterhin nur die 3 Klassen Person, Auto, Tier ausgeben).

Neu hinzugekommen sind triggers und predictions. Beim ersten werden jetzt alle Alarmauslöser ausgegeben. Wie diese Ausgabe auszuwerten ist hatten wir bereits hier beschrieben:

Und eine Beispiel Implementierung in Node-RED findet man hier:

Der Query predictions beinhaltet jetzt bis zu 8 Objekte, die während der Alarmauslösung im Bild erkannt wurden. Diese Information wird als JSON Array ausgegeben und hat pro Erkennung den Klassennamen, die Sicherheit der Erkennung und die Koordinaten der Region in der das Objekt erkannt wurde:

[
  {
      "class": "person",
      "confidence": 0.38,
      "x": 240,
      "y": 784,
      "w": 1056,
      "h": 640
  },

usw..

]

MQTT Alarmserver

Wie in den Wiki Links oben beschrieben waren die Auslöser bereits zuvor im MQTT integriert. Die oben beschriebenen „Vorhersagen“ der Objekterkennung werden unter dem folgenden MQTT Topic in der oben beschriebenen JSON Array Form veröffentlicht:

  • alarm/triggered/objects

Hier ein Beipiel einer Node-RED Implementierung:

Wenn man jetzt die Kamera vor den Monitor stellt und eine Bildersuche startet bekommt man die Vorhersagen entsprechend direkt angezeigt:

1 Like

sehr sehr geil! Klasse. :smiley: :+1:
Vielen Dank für die Info!

Wir bitten um Feedback sobald es draussen ist bzgl. der Erkennung des neuen Modells und vorallem auch darüber wo man das alles einbinden kann. Mal schauen was sich damit so alles bauen lässt :slight_smile:

1 Like

zurückgegeben wird bei mir unter dem Topic
/status/alarm/triggered/objects
folgendes:

[{
        "class": "van",
        "confidence": 0.5,
        "x": 1312,
        "y": 176,
        "w": 448,
        "h": 448
    }, {
        "class": "none",
        "confidence": 0,
        "x": 0,
        "y": 0,
        "w": 0,
        "h": 0
    }, {
        "class": "none",
        "confidence": 0,
        "x": 0,
        "y": 0,
        "w": 0,
        "h": 0
    }, {
        "class": "none",
        "confidence": 0,
        "x": 0,
        "y": 0,
        "w": 0,
        "h": 0
    }, {
        "class": "none",
        "confidence": 0,
        "x": 0,
        "y": 0,
        "w": 0,
        "h": 0
    }, {
        "class": "none",
        "confidence": 0,
        "x": 0,
        "y": 0,
        "w": 0,
        "h": 0
    }, {
        "class": "none",
        "confidence": 0,
        "x": 0,
        "y": 0,
        "w": 0,
        "h": 0
    }, {
        "class": "none",
        "confidence": 0,
        "x": 0,
        "y": 0,
        "w": 0,
        "h": 0
    }
]

Die oben angegebenen Eigenschaften (active, trigger, object, predictions) sind dort nicht enthalten.

Die bekommt man beim HTTP Alarmserver - dort ist alles zusammengefasst als URL Queries. Beim MQTT wird es sauber getrennt über einzelne MQTT Topics ausgegeben:

URL Query MQTT Topic
active alarm/triggered
trigger alarm/triggered/triggers
object alarm/triggered/object
predictions alarm/triggered/objects

Müsste die vierte Zeile nicht lauten:

predictions alarm/triggered/predictions

  • trigger*: Hier bekommt man nur den ersten Alarmauslöser ausgegeben.
  • triggers: Hier bekommt man alle Alarmauslöser ausgegeben.
  • object: Hier bekommt man nur das erste erkannte Objekt ausgegeben. Und die Objektklassen werden auf die 3 ursprünglichen auto, person, tier zusammengefasst.
  • objects: Hier bekommt man bis zu 8 erkannte Objekte über alle Objektklassen ausgegeben.

* Bei trigger gibt es keinen Unterpfad weil es der original Alarmserver war - die anderen kamen nachträglich hinzu.

Danke - jetzt hab auch ich es endlich verstanden :wink:

1 Like