Frigate i Coral TPU: ile kamer obsłuży jeden akcelerator

Spis treści
Jeden Coral nie ma stałej pojemności wyrażonej liczbą kamer. Obciążenie detektora zależy od liczby żądań inferencji, wybranego modelu i czasu pojedynczego żądania. Pozostałe elementy systemu muszą również odbierać, dekodować, śledzić i zapisywać obraz. Budżet detektora jest użytecznym oszacowaniem, a nie gwarancją rozpoznania każdego ważnego obiektu.
Obszary nie są po prostu poruszającymi się obiektami
Frigate wykrywa ruch, łączy sąsiednie pola ruchu w obszary detekcji i uwzględnia istniejące śledzenie. Jeden obszar może obejmować kilka obiektów; dwa widoczne fragmenty ruchu nie muszą oznaczać dwóch osobnych inferencji. Obiekty nieruchome również są okresowo sprawdzane. Spokojna scena nie oznacza więc zerowego obciążenia systemu ani zawsze zerowej pracy detektora.
Przydatny współczynnik to obserwowana liczba rzeczywistych wywołań inferencji na przetworzoną klatkę detekcji, z uwzględnieniem klatek bez wywołania i z kilkoma wywołaniami. Wartość zależy od kadru, ruchu, śledzenia, masek i konfiguracji. Poniższe 1,5 to założenie ilustracyjne, a nie zmierzona typowa wartość dla kamer zewnętrznych.
Budżet z wyraźnymi założeniami
Żądane inferencje/s = suma(przetworzone klatki/s × średnie wywołania/klatkę)
Szacowany popyt na detektor szeregowy = Żądane inferencje/s × ms/inferencję
8 × 5 × 1.5 = 60 inferencji/s
60 × 8 ms = 480 ms/s = 48% jednego detektora szeregowego
16 × 10 × 1.5 × 8 ms = 1920 ms/s = 192% żądane obciążeniePrzykład zakłada jeden detektor pracujący szeregowo, osiem kamer przetwarzanych przy 5 kl./s, średnio 1,5 wywołania inferencji na klatkę i 8 ms na wywołanie. Wynik to szacunkowe zapotrzebowanie wynoszące 48 procent. Nie jest to pomiar użycia CPU, opóźnienia całego systemu ani pojemności zapisu. Również 8 ms jest wartością hipotetyczną; potrzebny jest pomiar wybranego modelu na rzeczywistym hoście.
Przykład 192 procent żąda więcej pracy szeregowej, niż mieści się w sekundzie. Nie dowodzi odrzucenia dokładnie połowy wszystkich klatek wideo. Kolejkowanie, opóźnienia i pomijanie klatek zależą od całego przetwarzania oraz obciążenia. Przy nasyceniu obserwowana liczba zakończonych zadań może również zaniżać rzeczywiste zapotrzebowanie.
Jednoczesna aktywność jest ważniejsza niż średnia dobowa. Użyteczne próby obejmują kilka poruszających się obiektów, wiatr, zmiany światła i obraz nocny. Nawet wynik poniżej 100 procent wymaga zapasu na wahania i pozostałą pracę. Żaden uniwersalny procent nie gwarantuje niezawodnego śledzenia.

Pomiar detektora zamiast przypisywania liczby kamer
Czas inferencji zależy od modelu, wymiarów wejścia, środowiska wykonawczego, hosta, połączenia i warunków pracy. Uniwersalna tabela 7 ms dla PCIe, 8 ms dla USB i stałych liczb kamer ukrywałaby te zależności. Dwa zgodne detektory Coral mogą zwiększyć wydajność przez wspólną kolejkę, lecz nie gwarantują podwojenia wydajności całej instalacji.
Oszacowanie dla pojedynczego detektora szeregowego nie jest uniwersalnym benchmarkiem GPU. Niektóre mechanizmy GPU przetwarzają zadania współbieżnie. Podstawowy detektor TensorFlow Lite na CPU we Frigate nie jest zalecany do zwykłego użycia; OpenVINO w trybie CPU jest odrębną możliwością. Sama liczba rdzeni nie określa czasu inferencji żadnego z tych rozwiązań.
Osobno dekodowanie, detekcja i nagrywanie
Coral wykonuje inferencję modelu, nie dekodowanie wideo. FFmpeg może korzystać z obsługiwanego GPU lub silnika multimedialnego poprzez odpowiedni preset Frigate. Stała deklaracja jednego rdzenia CPU na kamerę 4K nie przenosi się na dowolne kodeki, urządzenia i ustawienia strumienia.
Strumień o niższej rozdzielczości do detekcji i główny do nagrywania często są dobrym układem. Rozdzielczość detekcji musi jednak zachować szczegóły małych lub odległych obiektów. Frigate wycina obszary i skaluje do wejścia modelu; niewielkie wejście modelu nie dowodzi przydatności każdego źródła o niskiej rozdzielczości.
Przy nagrywaniu przez kopiowanie strumienia wideo samo kopiowanie nie wymaga dekodowania i ponownego kodowania obrazu. Dodatkowe ścieżki podglądu, transkodowania lub analizy mogą zwiększać obciążenie. Migawki pochodzą ze strumienia detekcji. Najlepiej, aby kamera już nadawała ten strumień z docelową liczbą klatek: zmniejszenie wyłącznie detect.fps może pozostawić koszt dekodowania dodatkowych klatek wejściowych.
Interpretacja właściwych metryk
frigate_detection_fps liczy uruchomienia detektora na sekundę, a nie po prostu skonfigurowaną liczbę klatek. Niska wartość w spokojnej scenie jest normalna i nie dowodzi utraty klatek. Tempo odbioru, przetwarzania i pomijania opisuje różne etapy. Rosnące pomijanie lub malejące tempo przetwarzania przy realistycznej jednoczesnej aktywności wymaga analizy wraz z czasem detektora, użyciem CPU/GPU, pamięcią, dziennikami i faktycznym śledzeniem.
Metryka Prometheus frigate_detector_inference_speed_seconds używa sekund. Wartość 0,008 odpowiada 8 ms. Dłuższa inferencja sama nie dowodzi ograniczenia termicznego: możliwe są zmiana modelu, konkurencja na hoście, problemy z zasilaniem lub połączeniem. Brak zdarzenia również nie potwierdza nasycenia detektora; sprawdzenia wymagają pewność modelu, maski, strefy i reguły przechowywania.
Dwa detektory PCIe jako fragment konfiguracji
detectors:
coral1:
type: edgetpu
device: pci:0
coral2:
type: edgetpu
device: pci:1Fragment wymaga dwóch dostępnych urządzeń i nie tworzy drugiego akceleratora. Sterowniki hosta i dostęp kontenera muszą udostępniać oba odpowiednie węzły, często /dev/apex_0 i /dev/apex_1. Dla dwóch urządzeń USB Coral selektory to usb:0 i usb:1. Każdy proces detektora pobiera żądania ze wspólnej kolejki kamer. Nie jest to pełna konfiguracja Frigate ani Dockera.
Pytania i odpowiedzi
Czy maski zmniejszają obciążenie bez strat detekcji?
Niewielkie maski ruchu mogą usuwać nieistotne wyzwalacze, np. nałożony zegar. Nadmierne maskowanie może utrudnić śledzenie. Zamaskowany obiekt nadal może zostać rozpoznany, jeśli inny wyzwalacz utworzy obszar obejmujący ten obiekt; ruch w dowolnym innym miejscu nie gwarantuje analizy wszystkich zamaskowanych powierzchni. Maski ruchu nie są zasłanianiem prywatności i nie zapewniają usunięcia obiektów z nagrań.
Co zmieniają ustawienia obiektów nieruchomych?
Udokumentowany próg domyślny to dziesięciokrotność liczby klatek detekcji, czyli 50 klatek przy 5 kl./s. Interwał nieruchomości 50 sprawdza ponownie co 50 przetworzonych klatek, przy 5 kl./s mniej więcej co dziesięć sekund. Przy 3 kl./s te same 50 klatek oznacza około 16,7 sekundy. Znaczenie mają rzeczywiste ustawienia i osiągane tempo przetwarzania. Mechanizm ogranicza powtarzane inferencje, ale nie usuwa wszystkich kontroli.
Czy redukcja z 5 do 3 kl./s oszczędza 40 procent?
Tylko w przykładzie przy niezmienionych 1,5 wywołania na klatkę i 8 ms na wywołanie: zapotrzebowanie spada z 480 do 288 ms/s, czyli o 40 procent. Rzeczywiste tworzenie obszarów i śledzenie mogą się zmienić. Mniej klatek oznacza również mniej okazji do wykrycia krótko widocznego obiektu. Próby w widoku debugowania pokazują, czy niższa częstotliwość pozostaje odpowiednia.
Jak sprawdzić połączenie USB?
W Linuksie lsusb -t pokazuje wynegocjowaną prędkość łącza. Dla odpowiedniej gałęzi Corala 5000M oznacza SuperSpeed 5 Gb/s, a 480M połączenie USB 2.0 high-speed. Kolor portu oraz pomiar inferencji 8 lub 22 ms nie zastępują tej kontroli. Znaczenie mają również kabel, hub i zasilanie. Coral zmienia identyfikator USB podczas inicjalizacji; przekazywanie urządzenia musi obsługiwać tę zmianę. Przykład Dockera we Frigate przekazuje magistralę USB, dając dostęp szerszy niż do jednego konkretnego urządzenia.