Frigate und Coral TPU: Wie viele Kameras ein Beschleuniger schafft

Inhalt
Vor jeder Frigate-Installation steht die Frage, wie viele Kameras eine Coral trägt, und die Antwort ist immer eine Spanne – weil die Frage in dieser Form falsch gestellt ist. Eine TPU verarbeitet keine Kameras. Sie verarbeitet Inferenzen, und dafür hat sie genau tausend Millisekunden je Sekunde.
Alles Übrige folgt daraus: wie viele Erkennungen je Sekunde die Anlage erzeugt, wie lange eine davon auf dem gewählten Beschleuniger dauert und wie viel von der Sekunde übrig bleibt, wenn mehrere Kameras gleichzeitig etwas zu tun haben. Drei Zahlen, eine Multiplikation.

Was eine Erkennung wirklich kostet
Frigate schickt nicht jedes Bild an den Detektor. Zuerst sucht ein billiger CPU-Durchlauf nach Bewegung und schneidet die Flächen heraus, in denen sich etwas geändert hat; nur diese Bereiche gehen an die TPU, jeder als eigene Inferenz. Eine ruhige Szene kostet deshalb gar nichts, und eine Szene mit zwei getrennten bewegten Flächen kostet zwei Inferenzen je Bild statt einer.
Genau diese Feinheit macht aus Kamerazahlen eine Schätzerei. Die Last ist nicht Kameras mal Bildrate, sondern Kameras mal Bildrate mal Anzahl der Bewegungsbereiche – und der letzte Faktor ist eine Eigenschaft des Blickfelds, nicht der Hardware. Eine Kamera auf eine Hecke im Wind erzeugt den ganzen Tag Bereiche, eine auf ein geschlossenes Tor stundenlang keinen einzigen.
Die Rechnung in einer Zeile
Inferenzen/s = Kameras × Erkennungsbildrate × Bereiche je Bild
Belegung = Inferenzen/s × Inferenzzeit
Reserve = 1000 ms/s − Belegung
8 Kameras × 5 B/s × 1,5 Bereiche = 60 Inferenzen/s
60/s × 8 ms = 480 ms/s → 48 % einer Coral
Der Faktor 1,5 Bereiche je Bild ist ein brauchbarer Arbeitswert für gemischte Außenansichten; eine belebte Straße braucht zwei bis drei, ein stiller Flur kaum einen. Diesen Wert zu messen statt anzunehmen lohnt sich, weil er der einzige in der Zeile ist, der auf keinem Datenblatt steht.
Warum der Mittelwert die falsche Zahl ist
Eine Auslegung auf den Mittelwert ergibt eine Anlage, die monatelang glänzend läuft. Der Mittelwert ist niedrig, weil die meisten Kameras die meiste Zeit nichts sehen, Ein darauf gebautes Budget hat keine Reserve für den Nachmittag, an dem eine Lieferung kommt, der Hund im Garten ist und der Wind auffrischt – drei Kameras beschäftigt in derselben Sekunde, und zwar in der wichtigsten.
Der brauchbare Auslegungsfall ist der gleichzeitige: alle Kameras, die plausibel zusammen etwas zu tun haben können, gleichzeitig beschäftigt, bei der eingestellten Bildrate. Passt dieser Fall in eine Sekunde TPU-Zeit, hat die Anlage keine schlechten Nachmittage. Passt er nicht, ist der Fehler im Protokoll unsichtbar und im fehlenden Ausschnitt offensichtlich.
Was welcher Detektor liefert
| Detektor | Inferenzzeit | Inferenzen/s | Kameras bei 5 B/s |
|---|---|---|---|
| Coral M.2 / PCIe | ~7 ms | 143 | 19 |
| Coral USB am USB-3.0-Anschluss | ~8 ms | 125 | 16 |
| Coral USB am USB-2.0-Anschluss | ~22 ms | 45 | 6 |
| OpenVINO auf einer Intel-iGPU | ~15 ms | 66 | 8 |
| Nur CPU, vier Kerne | ~90 ms | 11 | 1 |
Die dritte Zeile ist die häufigste selbst zugefügte Wunde: derselbe Stick, dasselbe Modell, derselbe Code, nur in einer schwarzen statt einer blauen Buchse – und ein Drittel der Geschwindigkeit. Die letzte Zeile erklärt, warum der CPU-Detektor eher ein Machbarkeitsnachweis als eine Möglichkeit ist: Eine Kamera ist keine Anlage.
Zwei Beschleuniger verdoppeln die Obergrenze ungefähr, weil Frigate die Arbeit dem gerade freien Detektor gibt. Was sie nicht halbieren, steht im nächsten Abschnitt.
Der Engpass ist meist nicht die TPU
Bevor ein Bild beim Detektor ankommt, muss es dekodiert werden, und Dekodieren ist reine CPU-Arbeit, an die kein Beschleuniger dieses Budgets rührt. Einen 1280×720-Nebenstrom bei 5 B/s zu dekodieren, ist Kleingeld. Einen 4K-Hauptstrom bei 20 B/s zu dekodieren, kostet rund einen Kern je Kamera – weshalb eine Anlage mit acht Kameras eine Maschine flachlegen kann, während die TPU bei elf Prozent steht.
Die Anordnung, die das vermeidet, ist die übliche und verdient es, ausgesprochen zu werden: Die Erkennung läuft auf dem Nebenstrom, in der Auflösung, die die Kamera ohnehin liefert, mit fünf Bildern je Sekunde. Die Aufzeichnung läuft auf dem Hauptstrom und wird kopiert, nicht neu kodiert – die volle Auflösung landet auf der Platte, ohne dass dafür ein einziges Bild dekodiert wird. Der Detektor sieht nie 4K und muss es auch nie: Eine Person wird aus ein paar hundert Pixeln Umriss gefunden, und der Ausschnitt, den später jemand ansieht, ist der unangetastete Hauptstrom.
Woran sich Sättigung ankündigt
Frigate meldet zwei Zahlen, die die Frage entscheiden. Die Inferenzgeschwindigkeit ist die Millisekundenzahl je Erkennung; steigt sie über den Wert aus der Tabelle, drosselt der Beschleuniger – eine Coral am USB, warm genug zum Langsamerwerden, ist im geschlossenen Schrank ein vertrauter Anblick. Die Erkennungsbildrate ist die tatsächlich erreichte Rate; liegt sie unter der eingestellten, werden Bilder eingereiht und verworfen.
Von außen zeigen sich beide Störungen gleich, und zwar auf die denkbar unfreundlichste Art: Die Aufzeichnung ist da, der Zeitstrahl ist lückenlos, und am Ereignis hängt einfach kein Objekt. Nichts ist laut ausgefallen. Das Budget war vier Sekunden lang überzogen, und es waren die vier Sekunden, auf die es ankam.