Intelligente Objekterkennung für Überwachungskameras

KI-gesteuerte Überwachungskameras mit Home Assistant, Frigate und Google Coral

Mit Frigate ist eine Software für Überwachungskameras in Home Assistant eingezogen, die den Bildinhalt intelligent auswerten kann.
Bitte beachte: Dieser Beitrag ist mehr als 3 Jahre alt. Manche Links, Preise, Produkte und Aussagen sind vielleicht nicht mehr aktuell!

Wir haben ums Haus herum 4 Kameras im Einsatz. Ich habe im Lauf der Zeit unterschiedliche Systeme ausprobiert, darunter Motion Eye, iSpy, Zoneminder und Shinobi. Keine der Lösungen überzeugte mich so richtig, zumal alle mit den gleichen „dummen“ Überwachungsfunktionen arbeiteten und damit jede Menge unwichtiger Bewegungen erkannten. Zudem waren sie ziemlich CPU-Hungrig. Das ist bei meinem System zwar kein Problem, da meine ganzen NAS- und Smarthome-Funktionen auf einem HP Microserver mit Intel XEON E3 1230 CPU laufen und der hat genügend Leistungsreserven, aber für die gebotene Funktionalität war es einfach zu viel. Die Bewegungserkennung kam auch kaum über die meiner HIKVision Kameras hinaus.

HIKVision IP-Kameras für den Außenbereich (Modell DS-2CD2342WD)

Frigate Überwachungssoftware mit KI-Funktion

Mit Frigate gibt es seit einiger Zeit eine Überwachungssoftware für Kameras, die tief in Home Assistant integriert ist und per KI (über Tensor Flow) den Bildinhalt analysiert. Dabei kann Frigate z. B. zwischen Personen, Katzen, Autos, LKWs und vielen anderen Objekten unterscheiden. Gleichzeitig können die Ereignisse als Sensoren in Home Assistant genutzt werden und damit entsprechend Funktionen wie z. B. Außenlicht etc. steuern. Frigate kann ganz einfach über den Supervisor installiert werden und wird damit nahtlos in Home Assistant integriert.

Da hat Frigate mich erwischt …

Die Einrichtung erfolgt per YAML-Konfigurationsdatei, in der die Kameras und deren Funktionen konfiguriert werden. Idealerweise passen dabei die zu erkennenden Objekte in ein Quadrat von 300×300 Pixeln Größe. Eine sehr hohe Kamera-Auflösung ist daher nicht unbedingt besser. Für die exakte Bilderkennung genügt auch eine Bildwiederholrate von 5 fps.

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!

Eine beispielhafte Konfiguration sieht z. B. so aus:

  einfahrt:
    ffmpeg:
      inputs:
        - path: rtsp://user:passwort@MEINEKAMERAIP/Streaming/Channels/101
          roles: 
            - detect
            - clips
            - rtmp
      
    width: 1280
    height: 720
    fps: 5
    objects:
      track:
        - person
        - cat
        - dog
      filters:
        person:
          min_score: 0.6
          threshold: 0.5
        cat:
          min_score: 0.4
          threshold: 0.5
    motion:
      mask:
        - 0,679,167,543,467,205,751,158,1280,308,1280,0,0,0      
      contour_area: 80 

    clips:
      enabled: true
      pre_capture: 5Code-Sprache: YAML (yaml)

Im „Input“ Bereich legt man die Adresse der Überwachungskamera und die gewünschten Funktionen fest. In diesem Fall sollen Objekte detektiert und bei Ereignissen Video-Clips davon aufgezeichnet werden. Gleichzeitig soll das Kamera-Bild als RTMP-Stream weitergereicht werden. Damit ist der Kamera-Stream über die standardisierte Adresse rtmp://HA-IP/live/kameraname erreich- und einbindbar.

Bei „Objects“ legt man fest, welche Objekte erkannt werden sollen und mit „Filters“ wird die Erkennungsschwelle eingestellt. Mit der „Mask“ können Bereiche aus der Erkennung ausgeschlossen werden und mit „pre_capture“ wird festgelegt, wie viele Sekunden vor dem Ereignis in der Aufzeichnung enthalten sein sollen. Für jede Kamera und für jeden Objekt-Typen lassen sich Aufbewahrungszeiten festlegen, nach denen die Clips und Bilder automatisch gelöscht werden. So kann man z. B. Clips von Personen 10 Tage aufheben, von Fahrzeugen aber nur 3 Tage.

Frigate mi meinen Kameras in Home Assistant

Auf die Ereignisse und Einstellungen von Frigate kann per MQTT zugegriffen werden. Es gibt jedoch auch eine Erweiterung frigate-hass-integration, die man einfach über HACS installieren kann und die komfortable Sensor-Entities, Switches und Binary-Sensoren („Bewegung erkannt“) bereitstellt. Über die Switch-Entities kann man z. B. die Objekterkennung deaktivieren, wenn die Terrassentür geöffnet ist (einen entsprechenden Türsensor vorausgesetzt), damit man nicht ständig selbst erkannt und unnötig aufgezeichnet wird. Oder man pappt sich ein NFC-Tag an die Hauswand, welches man mit dem Smartphone scannt und das dann die Erkennung für diesen Bereich über eine entsprechende Automation für z. B. 1 Stunde deaktiviert.

Frigate Entities in Home Assistant
Frigate Sensoren und Switch-Entities in Home Assistant

Apropos Bereiche: In der Frigate Konfiguration kann man auch „Zones“ definieren. Hat man z. B. einen Kamerabereich, in dem sich die Garageneinfahrt, der Hauseingang und der Briefkasten befinden, kann man für jeden dieser Bereiche Zonen definieren. Diese melden dann selektiv, wenn in dieser Zone eine Bewegung erkannt wurde.

Man kann auch Kameras einbinden, die statt einem RSTP-Stream einen MPEG-Stream liefern, was bei meiner WANTEC Monolith C IP/VoIP Türsprechanlage der Fall ist. Dazu muss der MPEG-Stream per FFMPG umgewandelt werden. Das sieht in meiner frigate.yml so aus:

  eingang:

    ffmpeg:

      inputs:
       
        - path: http://user:password@IP-WANTEC-KAMERA:8080/?action=stream
            roles:
            - detect
            - clips


       
      input_args:
              - -avoid_negative_ts
              - make_zero
              - -fflags
              - nobuffer
              - -flags
              - low_delay
              - -strict
              - experimental
              - -fflags
              - +genpts+discardcorrupt
              - -r
              - "5" # <---- adjust depending on your desired frame rate from the mjpeg image
              - -use_wallclock_as_timestamps
              - "1"

      output_args:
        detect: -f rawvideo -pix_fmt yuv420p
        clips: -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v libx264 -an

 
    width: 1280
    height: 720
    fps: 15
    clips:
      enabled: true


    objects:
      track:
        - person
        - cat
        - dog
      filters:
        person:
          min_score: 0.6
          threshold: 0.6

       
    motion:
      mask:
        - 0,406,0,380,0,306,0,0,545,0,544,277
      contour_area: 80Code-Sprache: YAML (yaml)

Damit wurde auch die Kamera der Türsprechanlage zur vollwertigen Überwachungskamera samt Objekterkennung und das ganz ohne irgendwelchen Cloud-Dienste.

Weniger CPU-Last und bessere Erkennung mit Google Coral

Das Besondere an Frigate ist auch, dass man neben GPUs (bei unterstützten Grafikkarten/Chips) auch den Google Coral USB-Accelerator einbinden kann. Das ist ein TPU (Tensor Processing Unit) in Form eines kleinen USB3 Dongles. Damit wird die CPU enorm entlastet und der kleine Google Coral analysiert über 100 Frames pro Sekunde, was gerade bei mehreren Kameras oder bei der Nutzung eines Raspberry Pi sehr hilfreich ist.

Google Coral TPU

Den Google Coral gibt es z. B. beim Elektronik-Versender Pollin für 69,99 € zzgl. Versand. Wenn ihr euch für den Pollin-Newsletter anmeldet, bekommt ihr einen 5 Euro Gutschein und spart damit die Versandkosten!

Eingebunden wird der Google Coral in der frigate.yml mit diesen Parametern:

detectors:
  coral:
    type: edgetpu
    device: usbCode-Sprache: YAML (yaml)

In der Praxis

Für die Einrichtung von Frigate muss man ein wenig die Dokumentation studieren, die in manchen Bereich auch noch einige Lücken hat. Weiter hilft hier wie immer das HA-Forum und das HA-Sub-Reddit. Meine 4 Kameras waren dann aber schnell eingebunden und funktionierten tadellos. Überhaupt ist die echte Objekterkennung (und Unterscheidung) ein Segen! Bewegte Äste oder Vögel führen so nicht mehr zu unerwünschten Aufzeichnungen und Benachrichtigungen. Die Erkennungsleistung ist sehr gut, auch wenn manche Katze als Hund erkannt wird 🙂

Einmal erkennt Frigate die Katze richtig …
und einmal wird sie zum Hund 🙂

Die Latenz bei der Objekterkennung liegt bei mir unter 1 Sekunde (was allerdings vermutlich auch am Google Coral liegt) und damit eignet sich Frigate und der entsprechende Switch auch dazu, einen dummen Bewegungsmelder zu ersetzen und nicht bei jeder Katze die Außenbeleuchtung anzuschalten. Die Erkennung funktioniert bei meinen HikVision Kameras mit deren IR-Beleuchtung und guten Bildqualität auch nachts, wenn es regnet.

Fazit

Frigate ist meiner Ansicht nach die derzeit beste kostenlose Software für Überwachungskameras. Noch wird fleißig entwickelt und manches muss man sich recht mühsam erarbeiten, aber das Ergebnis überzeugt schon jetzt vollends. Ich würde auf jeden Fall den Google Coral empfehlen, da man damit auch auf dem Raspi Frigate problemlos laufen lassen kann.

Zwar werden viele Objekte von Haus aus von Frigate unterstützt, darunter Giraffe, Zebra, Bananen und Zahnbürsten, aber richtig interessant wird Frigate dann, wenn es auch Personen unterscheiden kann. Ich sammle gerade Bilder von uns, um eigene Custom Models für Tensor Flow und Gesichtserkennung zu trainieren. Allerdings muss ich mit damit erst noch ausführlich beschäftigen, da das Thema momentan noch nicht auf der Feature-Liste von Frigate steht.

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!


Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Für dich verändert sich der Preis nicht und du unterstützt damit meine Arbeit. Preisänderungen und Irrtümer vorbehalten.

3 Kommentare

  1. Super Artikel,
    ich möchte meine 4 Netatmo Presence ersetzen. Da suche ich gute Kameras, mit integrierter Beleuchtungsfunktion.
    Kannst du welche empfehlen (natürlich für HA)

  2. Hier https://docs.frigate.video/ und hier https://github.com/blakeblackshear/frigate dürfte alles beschrieben sein, was du suchst.

    WebUI: Ja
    Auf NAS speichern: Ja – Snapshot und Video
    E-Mail: nein, nur über Schnittstellen
    Schnittstellen: MQTT und HTTP API – damit kann man es auch mit ioBroker sprechen lassen, um z. B. Benachrichtigungen zu verschicken.

    Wenn du dann schon dabei bist, würde ich stark überlegen, ob ich nicht von ioBroker zu Home Assistant wechseln würde. Das ist eine ganz andere Klasse an Smarthome-Hub. Ich bin damals auch von Symcon zu HA gewechselt und habe es nie bereut.

    Wenn du eh schon Proxmox hast, kannst du HA als virtuelle Maschine aufsetzen und mal testen. Docker ist auf Proxmox mit Portainer als Verwaltungstool auch nicht schwer
    https://blog.login.gmbh/docker-portainer-unter-proxmox-7-installieren/

  3. Vielen Dank für diesen Artikel über Frigate.
    Wir haben bei uns zu Hause, ländlich gelegen, bis zu sieben IP Cameras mit Motioneye, das in einem Proxmox LXC Container läuft, in Betrieb – je nachdem, wie viele Waschbären uns da wieder besuchen.
    Die Funktion der Kamerazentrale, bei der alle Kameras auf einem Monitor dargestellt werden, funktioniert mit Motioneye super, bringt den Rechner aber auch an seine Grenzen. Die Motion-Erkennung ist alles andere als toll. Jede Menge Fehlalarme von Spinnen, bei Wind und bei Regen, oder, wenn die Sonne hinter den Wolken hervorkommt.
    Als Smart Home Zentrale nutze ich bisher den ioBroker, mit Home Assistant habe ich keine Erfahrung, mit Docker bisher auch noch nicht.
    Deshalb möchte ich ein paar Fragen stellen:
    Hat Frigate auch ein WebUI, über das man live die Kamerabilder anschauen kann?
    Kann Frigate auch ohne Home Assistant bei Bewegungserkennung z.B. eine EMail mit Bildern automatisch verschicken und/oder eine Aufnahme auf einem NAS speichern? Soweit ich weiß, gibt es keine Adapter für den ioBroker.
    Ich möchte mich gerne mit Frigate näher beschäftigen und mich dazu auch mit Docker auseinandersetzen. Aber eine zusätzliche Installation von Home Assistant muss nicht unbedingt sein.
    Für nähere Infos wäre ich sehr dankbar.
    Grüße aus dem Sauerland…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert