Home Assistant LAB · Dom w praktyce · Kamery i monitoring · Lekcja 15
C01 naprawdę rozpoznaje człowieka i samochód: motion, regions, score, filtry i stationary objects bez zgadywania
Detekcję stroję na realnym kadrze C01. Motion wskazuje miejsca do analizy, model nadaje etykiety, a progi i filtry ograniczają fałszywe zdarzenia. Zmieniam jeden parametr naraz i zachowuję klipy testowe, dzięki czemu wiem, czy poprawa działa w dzień, w nocy i dla nieruchomego obiektu.
Dlaczego ten etap jest ważny
AI nie powinno być strojone zestawem progów skopiowanych z forum. Najpierw obserwujemy własny podjazd i prawdziwe score/area, a dopiero potem decydujemy, czy filtr jest w ogóle potrzebny.
W pełnej lekcji zrobisz to krok po kroku
Zaczynamy od korekty: detect musi być jawnie włączone
W finalnych konfiguracjach L13 i L14 poprawiliśmy ważny szczegół: aktualny reference config Frigate ma `detect.enabled: false` jako wartość domyślną. Samo `fps: 5` nie jest równoznaczne z włączeniem detekcji. Jeśli Twoja lokalna kopia L13/L14 nie ma `enabled: true`, dopisz to przed dalszym strojeniem. W przeciwnym razie możesz mieć działający live view i nagrywanie, ale nie prawdziwy pipeline object detection.
Test motion wykonujemy w dzień i nie stroimy pod jeden wyjątkowy moment
Frigate zaleca stroić scenę w warunkach reprezentatywnych. Bardzo wietrzny słoneczny dzień może prowadzić do ustawień, które potem okazują się zbyt mało czułe przy pochmurnej, spokojnej pogodzie. Na C01 wykonaj co najmniej: człowiek blisko, człowiek na dalekiej części podjazdu, samochód wjeżdżający, pusty podjazd oraz kilka minut normalnego ruchu roślin/cieni. Dopiero wtedy wiemy, czy motion wymaga zmiany.
Scenariusz PERSON-DALEKO
Powtórz test na najdalszym punkcie podjazdu, który naprawdę ma znaczenie dla systemu. To zwykle ważniejszy test niż osoba metr od kamery. Jeśli bliski człowiek ma score 0.92, a daleki stabilnie 0.58-0.68, ustawienie threshold 0.85 skopiowane z forum byłoby katastrofą. Właśnie dlatego najpierw mierzymy własną scenę.
Nie podnosimy threshold tylko dlatego, że widzieliśmy jeden false positive
Załóżmy, że krzew raz dostał `person 0.73`, ale prawdziwy człowiek daleko ma score 0.64-0.76. Podniesienie threshold do 0.80 może usunąć krzew, ale również usunąć człowieka, na którym zależy nam najbardziej. Najpierw sprawdzamy, czy false positive ma charakterystyczny rozmiar, proporcje albo stałą lokalizację. Threshold jest jednym narzędziem, nie młotkiem do wszystkiego.
False positive to nie to samo co poprawny obiekt w niechcianym miejscu
Jeżeli Frigate poprawnie wykrywa człowieka idącego chodnikiem poza posesją, to nie jest false positive . Model zrobił dokładnie to, co miał zrobić: znalazł człowieka. Takiej sytuacji nie naprawiamy thresholdem, min_area ani object maską. W kolejnej lekcji o zones określimy, gdzie `person` albo `car` ma znaczenie dla alerts/review. To rozdzielenie jest fundamentalne.
Co robimy dalej
Kolejny etap to skalowanie Frigate na C02-C05, ale nie przez bezmyślne kopiowanie C01. Każda z tych kamer ma inny charakter: CX410 działa w słabym świetle, Duo 3 ma ekstremalnie szeroki panoramiczny obraz, Doorbell ma osobny kontekst visitor, a TrackMix ma dwa obiektywy i PTZ. Najpierw przeniesiemy sprawdzony schemat techniczny - go2rtc, main/sub, record/detect, hardware decode i detector - a potem dla każdej kamery wykonamy własny minimalny commissioning AI. Zones, masks i finalne ograniczanie false positives zrobimy dopiero, gdy wszystkie kamery są już prawidłowo śledzone.
Pełna wersja zawiera
- Zaczynamy od korekty: detect musi być jawnie włączone
- Motion detection i object detection to nie jest to samo
- Czerwone, zielone i kolorowe prostokąty oznaczają różne rzeczy
- Otwieramy debug view zanim dotkniemy filtrów
- Domyślne motion settings są punktem startowym, nie błędem
- Threshold motion mówi o zmianie jasności piksela
- Contour area decyduje, jak mała grupa zmian liczy się jako ruch
- Test motion wykonujemy w dzień i nie stroimy pod jeden wyjątkowy moment
- Nie używamy motion mask do wycinania ulicy albo chodnika
- Na L15 maski pozostawiamy prawie puste
- Domyślnie Frigate śledzi tylko person
- Person i car ustawiamy na poziomie C01
- Pierwszy test AI robimy bez własnych filtrów
- Scenariusz PERSON-BLISKO
- Scenariusz PERSON-DALEKO
- Scenariusz PERSON-CZĘŚCIOWO-ZASŁONIĘTY
Jak pracujemy w pełnej wersji
Nie przeskakujemy od gotowego efektu do kopiowania konfiguracji. Zaczynamy od Zaczynamy od korekty: detect musi być jawnie włączone, następnie porządkujemy Motion detection i object detection to nie jest to samo i dopiero później przechodzimy do Czerwone, zielone i kolorowe prostokąty oznaczają różne rzeczy. Każdy etap ma własny test i jasny warunek PASS.
Pełna lekcja łączy wykonanie z diagnostyką. Wracamy do takich punktów jak Otwieramy debug view zanim dotkniemy filtrów oraz Domyślne motion settings są punktem startowym, nie błędem. Jeśli wynik zależy od konkretnej kamery, firmware, kadru, sieci albo warunków na posesji, dostajesz procedurę sprawdzenia zamiast jednej liczby do skopiowania.
Na końcu etap musi dać się zweryfikować. Jeśli obraz, stream, detekcja albo integracja zachowuje się inaczej niż opisano, zatrzymujemy się i diagnozujemy najniższą warstwę, która nie przeszła testu. Dzięki temu kolejna lekcja nie dokłada nowych zależności do systemu, który działa tylko przypadkiem.
Co jeszcze sprawdzamy w praktyce
Karta pomiarowa C01 - wpisujemy realne dane. Ta tabela będzie dużo cenniejsza niż lista cudzych wartości z forum. Po zmianie obiektywu, kadru, detect resolution albo modelu AI można ją wykonać ponownie i od razu zobaczyć, co rzeczywiście się zmieniło. Po wypełnieniu tabeli odpowiedz sobie na trzy pytania. Po pierwsze: jaka jest najniższa wiarygodna wartość dla prawdziwego człowieka lub auta, które nadal chcesz wykrywać? Po drugie: czy false positives mają wyraźnie inny score/area/ratio? Po trzecie: czy problem jest w ogóle błędem modelu, czy po prostu poprawnym obiektem poza interesującym obszarem? Dopiero te odpowiedzi wskazują właściwe narzędzie.
Efekt po zakończeniu lekcji
C01 śledzi person i car, a Ty rozumiesz motion, regions, score, min_score, threshold, area, ratio i stationary objects oraz stroisz detekcję na podstawie pomiarów.
Chcesz zbudować ten etap razem z kursem?
Ta lekcja jest częścią kursu Smart Home od Zera na platformie MarkLabs E-Learning. Pełna wersja prowadzi przez konfigurację, testy, diagnostykę i przypadki awaryjne bez zostawiania Cię z poleceniem „skonfiguruj to sam”.
Kup dostęp do kursu: 29 zł
Dożywotni dostęp | Wszystkie lekcje | Bez subskrypcji
Zobacz pełny kurs na marklabs.pl/e-learning/