Frigate Coral USB-Beschleuniger
Anfang Februar habe ich dir in meinem Blogpost von Frigate erzählt. Einer Software, die eine automatische Kameraüberwachung durchführen kann. Der Fokus liegt dabei ganz klar auf der Objekterkennung und Verarbeitung der gewonnen Daten. Bei mir ist mein komplettes Konstrukt inzwischen in das Smart Home eingebettet und leistet seither treue Dienste. Vor allem seit ich DOODS damit ersetzt habe.
Natürlich möchte ich die gewonnen Daten noch weiter nutzen können, um auch etwas Logik ins Spiel zu bringen. Zum Beispiel zur Beleuchtung verschiedener Außenbereiche auf dem Grundstück. Ideen dazu habe ich schon vor einiger Zeit ausgearbeitet, jedoch noch nicht umgesetzt.
Denn ein großes Problem wurde (insbesondere seit dem letzten Update) die CPU-Last. Hinzu kam außerdem noch das wirklich gute Video von Matthias Kleine auf seinem YouTube-Kanal, der sich ebenfalls dem Thema Frigate gewidmet hat. Kurzum, es wurde für mich Zeit, an der bisherigen Situation etwas zu verändern und mich weiter der Optimierung zu widmen.
Ein großer Meilenstein ist der Coral USB-Beschleuniger, über den ich dir in meinem heutigen Blogpost auch etwas erzählen möchte. Doch lass mich noch kurz etwas ausholen.
Inhaltsverzeichnis
Meine Frigate CPU-Last
Am vergangenen Wochenende habe ich mich ein wenig der Software gewidmet, die ich in meinem Homelab betreibe. Darunter eben auch Frigate in Kombination mit Double Take. Zuerst habe ich mir die Frigate Version 0.13.2 über Docker installiert, so dass der Container auch mal wieder auf dem aktuellen Stand ist.
Das Update (Release auf GitHub) führte bei mir dann dazu, dass die CPU-Last noch wesentlich weiter gestiegen ist. Ich lag so grob gesagt zwischen 250 – 300 % Auslastung über mehrere Kerne verteilt. Natürlich war der Grund dafür, dass bislang die komplette Erkennung und Verarbeitung der Daten über die CPU durchgeführt wurde. Und obwohl es nicht empfohlen wird, hat das bislang immer recht gut funktioniert.
Doch mir wurde klar, dass ich daran etwas ändern muss. Die Entscheidung fiel dabei innerhalb von Sekunden natürlich auf den Coral USB-Beschleuniger, der für dieses Projekt auch durch die Entwickler empfohlen wird. Einzige Sorge von meiner Seite war, wie ich die Kombination mit meiner virtuellen Maschine im Proxmox-Cluster realisieren kann. Doch kleiner Spoileralarm: Das war wirklich super easy umzusetzen. Zeige ich dir gleich noch.
Coral USB-Beschleuniger
Der Coral USB-Beschleuniger nennt sich eigentlich in korrekter Form Coral USB Accelerator und wird auf diversen Portalen zu teils wirklich unterschiedlichen Preisen vertrieben. Während er vergangene Woche bei Amazon für knapp 100 Euro gelistet war, kostete er bei Conrad etwas um die 72 Euro.
Er ist lauffähig unter Linux, Mac und Windows. Wobei die meisten von euch ihn höchstwahrscheinlich auch eher nur unter Linux betreiben werden. Das Standardsystem für Server, insbesondere auch im Smart Home.
Der USB-Beschleuniger fügt dem eigenen System eine Edge TPU hinzu und dient vor allem dem Thema Machine Learning in einer wirklichen Breite von Anwendungsfällen. Unter anderem eben auch der Kameraüberwachung mit Frigate, wie in meinem Fall.
Die Verbindung erfolgt über USB (idealerweise USB 3.0) mit dem eigenen Server oder PC. Eine Installation von eigenen Treibern ist im Falle von Frigate nicht notwendig und so ist die Edge TPU wirklich innerhalb von Sekunden einsatzbereit.
Ganz interessant zu wissen ist außerdem, dass es sich hierbei um ein Google-Produkt handelt. Zwar verbindet man auch heute noch Google sehr stark mit dem Thema Suchmaschine, doch die Produktpalette ist weitaus größer. Eines der Produkte ist in diesem Fall der Coral USB Accelerator.
- Spezifikationen: Arm 32-Bit Cortex-M0+ Mikroprozessor (MCU): bis zu 32 MHz max 16 KB Flash-Speicher...
- Eigenschaften: Google Edge TPU ML Beschleunigungscoprozessor, USB 3.0 Typ-C weiblich, unterstützt...
- Spezifikationen: Arm 32-Bit Cortex-M0+ Mikroprozessor (MCU): Bis zu 32 MHz max 16 KB Flash-Speicher...
Zuletzt aktualisiert 2024-12-22 / (*) Affiliate Links / (**) Affiliate Links, Preis kann abweichen (andere Plattform) / Bilder von der Amazon Product Advertising API / Der angegebene Preis kann seit der letzten Aktualisierung gestiegen sein.
Was bedeutet Edge TPU?
Grundsätzlich verstehst du unter Edge TPU laut Google maßgeschneiderte und anwendungsspezifische integrierte Schaltungen, die zum Ausführen von Inferenzen auf Edge-Geräten dienen.
Edge-Geräte sind Geräte, welche sich an der Grenze zwischen der digitalen und der physischen Welt befinden (Quelle: HPE Deutschland). In unserem Fall zeichnet dieses Edge-Gerät messbare Phänomene auf und wandelt sie in Daten um. Das sind dann zum Beispiel die Informationen, die wir aus Frigate in unseren MQTT-Broker erhalten. Eine weite Verbreitung von Edge-Geräten findet man vor allem in der Industrie und in großen Unternehmen. Da das Thema Machine Learning und künstliche Intelligenz jedoch auch in der breiten Masse immer populärer wird, finden solche Geräte auch immer mal wieder Einzug in Privathaushalte.
Wenn du dich nun fragst, wofür TPU eigentlich steht, das habe ich mich zu Beginn auch lange gefragt. Heute weiß ich, dass TPU für Tensor Processing Units steht und maßgeblich von Google entwickelt wurde. Gewissermaßen eine Neuerung im Bereich Hardware. Eine Inferenz hingegen ist im Grunde nur eine Schlussfolgerung. Die Begrifflichkeit kann man dabei gewissermaßen als Synonym verwenden.
Wer nun sofort an GPUs (Graphics Processing Units) denken muss, liegt dabei auch nicht ganz falsch. Anders als GPUs sind TPUs jedoch auf einen speziellen Anwendungsfall zugeschnitten und GPUs mehr für eine breite Anwendung gedacht. Einen sehr guten Vergleich dazu findest du in einem LinkedIn-Post zum Thema GPUs vs TPUs (in englischer Sprache).
Die Inbetriebnahme des Coral USB-Beschleunigers
Wer nun genauso wie ich auf die Idee kommt, den Coral USB-Beschleuniger für sein Frigate zu verwenden, muss im Grunde gar nicht so viel beachten. Das Gerät wird per USB mit dem Host verbunden, also in meinem Fall Proxmox bzw. dem Proxmox-Server. Im Idealfall nutzt man dafür einen USB 3.0 Anschluss, ich habe jedoch nun auf einen USB 2.0 Anschluss zurückgreifen müssen.
Das Gerät wird daraufhin sofort von meinem Server erkannt und ich kann es über die Proxmox-Oberfläche bequem an die VM durchreichen, ohne dass ich hierfür in Konfigurationsdateien eingreifen muss. Auch ein Neustart war bei mir weder am Host selbst noch in der VM notwendig.
Ich habe dann die Konfiguration von Frigate angepasst und auf die Edge TPU gewechselt. Frigate solltest du dann beim Speichern der Konfiguration einmal neu starten, was jedoch nur die Software selbst betrifft. Im Anschluss daran kannst du unter dem Menüpunkt System feststellen, wie sich die Last verändert hat. Im Log findest du außerdem im Erfolgsfall die Meldung, dass die TPU erkannt wurde und ab sofort genutzt wird. Das Durchschleusen des USB-Geräts hat also ohne Probleme geklappt.
So gern ich an dieser Stelle noch weiter über Konfigurationen sprechen würde, kann ich dazu nichts weiter sagen. Denn nach der Übernahme der Konfiguration hat alles auf Anhieb funktioniert und es gab nichts weiter zu beachten. So einfach hätte selbst ich mir das alles nicht vorgestellt. Innerlich war ich ehrlich gesagt schon auf Probleme und Schwierigkeiten eingestellt.
Wenn du jedoch eher auf Konfigurationsdateien abfährst, dann liefert dir Synetec einen ersten Anlaufpunkt für die entsprechende Vorgehensweise. Auch die offizielle Proxmox VE Anleitung liefert dir dazu unter USB Devices in Virtual Machines sehr gute Informationen.
Die Auswirkungen der Edge TPU
Selbstverständlich ist es grundsätzlich schwierig und kaum möglich, verlässliche Daten für Jedermann anzugeben. Daher kann ich nur auf meine eigenen Erfahrungswerte zurückgreifen, die ich mit dem Projekt gemacht habe.
Wie ausgangs schon beschrieben, hatte ich nach dem Update eine CPU-Last von 200 – 300 %. Die virtuelle Maschine und der Host hatten wirklich einiges zutun, da sie bei mir 5 Kameras mit jeweils 5 FPS parallel im Blick behalten müssen. Dazu kam, dass immer wieder Bilder ausgelassen wurden und sich das System insgesamt nicht mehr flüssig angefühlt haben.
Nach der Inbetriebnahme des Coral USB-Beschleunigers sank die CPU-Last immer weiter ab. Mein Spitzenwert (im unteren Bereich) lag bei 0,5 % Auslastung. Es kommt jedoch aber auch insbesondere während Erkennungsphasen auch mal dazu, dass die Last auf 100 % ansteigt. Wenn auch nur sehr kurzfristig.
Man kann also grundsätzlich sagen, dass dem Rat der Entwickler bei Frigate Folge zu leisten ist. Mein eigenes Experiment zeigt mir das nochmals sehr deutlich. Und ich denke, dass ich von Anfang an schon wesentlich mehr Spaß mit dem System gehabt hätte, wenn ich früher auf den Coral USB Accelerator zurückgegriffen hätte. Aber man lernt eben nie aus und auch das eigene leistungsstarke Homelab kann man in die Knie zwingen.
Weitere Anpassungen in Frigate
Unter dem Begriff „Fine Tuning“ findet man außerdem noch weitere Möglichkeiten, um Frigate noch besser auf seine eigenen Bedürfnisse anzupassen. Im Zuge der Edge TPU bin ich auch gleich dazu übergegangen und habe mit Optimierungen weiter gemacht.
Ein sehr hilfreiches und wirklich starkes Tool ist dabei die Maskierung von Bereichen. Gerade bei mir im Garten finden immer wieder Bewegungen von Pflanzen statt, die dann analysiert werden. An besonders windigen Tagen konnte man dabei auch schön beobachten, wie sich das direkt auf die Auslastung des Servers ausgewirkt hat. Mein Learning war also: Mehr Wind, mehr Ressourcen. Völlig irre.
Ich habe demnach sämtliche Bereiche maskiert, die nicht für die Erkennung notwendig sind. Auch einzelne Pflanzen habe ich nochmals mit in die Maskierung mit rein genommen, um die Erkennung dafür zu unterdrücken. Sicherlich hat das auch schlussendlich dazu beigetragen, dass meine Last derart stark gesunken ist. Was mich natürlich sehr freut.
Meine Kameras liefern außerdem noch direkt im Bild das aktuelle Datum und die jeweilige Uhrzeit. Frigate hat in seiner Genauigkeit dabei jedes Mal eine Bewegung festgestellt, wenn sich die Sekunden verändert haben. Bei 5 x 5 FPS kannst du dir ja ausmalen, was da pro Sekunde auf dem Server los war. Das ist jetzt nicht mehr der Fall und man bemerkt schon eine deutliche Veränderung.
Double Take ergänzt Frigate
Wie ich auch schon in meinem letzten Beitrag zum Thema erwähnt habe, lässt sich Frigate durch Third Party Extensions entsprechend erweitern. Aktuell steht dort als einzige Auflistung die Software Double Take. Sie ist dafür zuständig, auf den einzelnen Bildern die Gesichter von Menschen zu erkennen und richtig zuzuordnen. Auch ich habe die Erweiterung im Einsatz, bin jedoch aktuell noch nicht so ganz überzeugt.
Dennoch finde ich es eine super Sache, wenn die Erkennung von Gesichtern funktioniert. Hierzu lasse ich Double Take die Bilder aus dem MQTT-Broker analysieren und gewonnene Informationen zurück an Frigate liefern.
Beispielhaft findest du im nachfolgenden Screenshot ein Ereignis, das eine tolle Kombination aus Frigate und Double Take zeigt. Während Frigate für die grundsätzliche Erkennung der Person zuständig war, hat Double Take das Bild weiter analysiert. Dabei kam heraus, dass ich die Person war, die vom System automatisch erfasst wurde. War zwar in diesem Fall nicht korrekt, zeigt aber das große Potenzial für das Smart Home. Denn auf Basis dieser Informationen können wiederum Automatisierungen getriggert werden, ohne dass ich eine manuelle Aktion ausführen muss.
Lohnt sich die Edge TPU?
Eigentlich schon sehr offensichtlich ist nun die Antwort auf die Frage, ob sich der Coral USB-Beschleuniger denn nun lohnt. Ein ganz klares Ja!
Abgesehen davon, dass die Entwickler von Frigate explizit die Nutzung des Coral USB-Beschleunigers empfehlen, bemerkt man auch in der Praxis einen großen Unterschied. Ich habe das Gefühl, dass Erkennungen zuverlässiger und vor allem schneller stattfinden. Auch das System selbst ist flüssiger als zuvor, was in der Praxis natürlich wirklich viel Spaß macht.
Glaubt man so manchen Aussagen, dann ist die Edge TPU generell ein gutes Investment. Eine vergleichbare Grafikkarte soll um die 2.000 Euro kosten, während das Gerät selbst nur etwa 70 – 80 Euro erfordert. Das mag nicht zuletzt auch daran liegen, dass es sich um eine Spezialisierung handelt und man nicht den breiten Anwendungsfall abdecken muss. Dennoch ist es schon interessant sowas mal nachzuvollziehen. Auch wenn ich vermutlich nie dazu kommen werde.
Ohne also für das Produkt Werbung zu machen, kann ich dir den Kauf wirklich empfehlen. Ich habe für mich die Erkenntnis gewonnen, dass ich insbesondere in der IT mein Geld vermutlich noch nicht besser investiert habe. Und nun erfreue ich mich an der Software und werde für mich ganz konkrete Anwendungsfälle einbauen, in denen ich die gewonnenen Daten sinnvoll nutze.
0 Kommentare