ID.nl logo
Nooit meer een valse melding van je ip-camera
© Reshift Digital
Zekerheid & gemak

Nooit meer een valse melding van je ip-camera

Het is interessant om enkele ip-camera’s op te hangen, maar als de nieuwigheid eraf is, worden de beelden nog maar zelden bekeken. Bewegingsmeldingen kunnen helpen, maar worden door veel valse meldingen ook al snel genegeerd. Met Frigate NVR detecteer je veel nauwkeuriger personen, dieren en objecten, geholpen door een AI-model. Ook kun je handiger inspelen op meldingen door een integratie met Home Assistant.

In dit artikel laten we in enkele stappen zien hoe je Frigate NVR installeert en optimaliseert, zodat je alleen nog maar een melding van je ip-camera krijgt als dat echt nodig is.

  • Installatie van Frigate NVR via Docker of Home Assistant
  • Ip-camera instellen met de juiste streams
  • Streams configureren
  • Stream optimaliseren
  • Personen en objecten detecteren
  • Gebieden en zones aangeven die voor ongeweste detecties zorgen

Lees ook: Houd toezicht op je huis en tuin: 12 beveiligingscamera's met app getest

Code downloaden In deze workshop worden wat voorbeelden van stukken code gegeven. Omdat overtikken van code erg foutgevoelig is, kun je die code beter downloaden en daarna bekijken of kopiëren. Je vindt de code in het bestand frigcode.txt.

De meest praktische methode om beelden van ip-camera’s op te nemen, is een network video recorder (NVR). Alles wordt dan centraal én lokaal verwerkt. Bekende opties zijn Blue Iris, Synology Surveillance Station, Unifi Protect en Frigate NVR. Steeds vaker wordt AI toegepast. Niemand heeft immers zin om de hele dag naar camera-feeds te kijken. Liever ontvang je een melding als er echt iets interessants gebeurt, zonder overvloed aan valse meldingen natuurlijk.

Blue Iris biedt slimme detectie met CodeProject.ai of DeepStack. Maar de afhankelijkheid van Windows is voor velen een probleem. Frigate NVR is een andere bekende optie en werkt onder Linux. Recent verscheen een grote update naar 0.12.0 waar we in dit artikel mee aan de slag gaan. Aantrekkelijk is de detectie van objecten en personen die je kunt versnellen met onder meer een Google Coral Edge TPU: een kleine chip die machinelearning-taken kan uitvoeren voor een snellere en efficiëntere verwerking. Deze chip gaan we ook gebruiken. Optioneel zorgt een integratie met Home Assistant voor nog meer slimme bewakingsmogelijkheden.

01 Installatie via Docker

Een gebruikelijke manier om Frigate te installeren is via Docker met Compose. Voor je docker-compose.yml-bestand kun je het voorbeeld gebruiken dat je vindt op de installatiepagina van Frigate. Waar je vooral op moet letten, zijn de volumes voor het configuratiebestand (config.yml) en media, zoals opnames en snapshots. Voor media is om te beginnen een paar gigabyte genoeg. Daarna hangt de benodigde ruimte vooral af van het aantal dagen waarvan je opnames gaat bewaren.

Voordat we Frigate gaan starten, zorgen we eerst voor de juiste camerastreams. Als deze streams werken, gaan we verder met de detectie van personen en objecten.

Voor de installatie kun je onder andere Docker Compose gebruiken.

02 Installatie via Home Assistant

Frigate kun je ook als add-on installeren onder Home Assistant OS. Let er in dat geval wel op dat singleboardcomputers, zoals de Raspberry Pi en Odroid N2+, die vaak voor Home Assistant worden gebruikt niet altijd snel genoeg zijn. Vooral bij objectdetectie met meerdere camerastreams kun je zonder extra hardware tegen beperkingen aanlopen.

Voor de installatie voeg je deze repository toe aan de add-on-winkel, waarna je Frigate eenvoudig kunt installeren: https://github.com/blakeblackshear/frigate-hass-addons.

Voor de configuratie van Frigate maak je een bestand frigate.yml in de configuratiemap (/config) van Home Assistant.

Hier installeren we Frigate als add-on voor Home Assistant.

03 Welke ip-camera?

Voor Frigate gebruik je bij voorkeur een ip-camera die H.264 ondersteunt, wat gelukkig heel gangbaar is. Hoewel het nieuwere H.265 een betere compressie geeft, is de compatibiliteit met browsers en Home Assistant niet optimaal. Een camera sluit je voor de beste stabiliteit aan via een netwerkkabel. Voor het gemak kun je Power over Ethernet (PoE) gebruiken, waarbij de camera vanuit de switch of een PoE-injector voeding krijgt via diezelfde netwerkkabel.

Het is een pluspunt als de camera meerdere streams kan aanbieden met verschillende resoluties. Je kunt dan opnemen in de hoogste resolutie en voor objectdetectie een lagere resolutie gebruiken, zonder dat je deze streams hoeft om te zetten. Bekende merken die vaak worden aanbevolen, zijn Dahua, Hikvision en Amcrest.

In dit artikel gebruiken we een camera van Hikvision. Het is raadzaam een camera te kiezen die RTSP-streams ondersteunt. Daar gaan we in dit artikel ook mee werken. Controleer in andere gevallen de compatibiliteit van jouw camera. In de documentatie van Frigate vind je nog andere opties om streams op te halen van bekende camera’s.

In de documentatie vind je diverse camera-specifieke configuraties.

04 Hoofdstream voor opnames

We gaan eerst de camera instellen zodat deze de juiste streams aanbiedt met de juiste resolutie en framerate. Open daarvoor de configuratie van jouw ip-camera. De camera van Hikvision kun je via de browser configureren. We gaan twee streams gebruiken: een hoofdstream voor het maken van opnames en een substream voor objectdetectie en snapshots. Voor de hoofdstream kiezen we de hoogst mogelijke resolutie (in dit geval 2688 × 1520 pixels) en een beeldfrequentie (framerate) van naar voorkeur 15 fps. Bij de optie i-frame-interval vullen we 30 in. Zorg dat H.264 is geselecteerd als je die keuze hebt en gebruik geen opties als H.264+.

Voor de opnames gebruiken we de hoogst mogelijke resolutie.

05 Substream voor detectie

De camera van Hikvision ondersteunt naast de hierboven genoemde hoofdstream ook een substream. Standaard is de hoogste resolutie voor die substream 640 × 480 pixels. Optioneel kun je via de systeeminstellingen nog een derde stream instellen. Die biedt een hogere resolutie, tot 1280 × 720 pixels. Dat heeft onze voorkeur en daarom kiezen we ervoor deze derde stream in te schakelen. Hiermee verlies je wel opties als gezichtsherkenning door de camera zelf, H.264+ en H.265+, maar die zijn niet nodig voor deze toepassing. Verder selecteren we H.264. Voor de substream selecteren we een resolutie van 1280 × 720 pixels, en een beeldfrequentie en i-frame-interval van 6 fps. Meer is voor detectie niet nodig.

Voor de detectiestream mag je een lagere resolutie kiezen.

Test de cameraverbinding We raden je aan om met een programma als VLC media player de verbinding met je camera via RTSP te controleren. Hiervoor installeer je www.videolan.org. Kies dan onder Media de optie Netwerkstream openen en blader naar de url. Voor onze camera van Hikvision is dat rtsp://gebruiker:wachtwoord@ipadres:554/Streaming/Channels/101 voor de hoofdstream. De derde stream is beschikbaar via rtsp://gebruiker:wachtwoord@ipadres:554/Streaming/Channels/103. Zulke streams zijn voor elke ip-camera anders.

Test de verbinding met je camera via RTSP met bijvoorbeeld VLC media player.

06 Configuratie

We beginnen met het toevoegen van de detectiestream. Daarvoor zetten we de onderstaande regels in het configuratiebestand config.yml. We geven hierin de camera een naam (oprit), configureren we de RTSP-stream en definiëren we de resolutie, maar zetten we de detectie nog even uit:

De code kun je bekijken in het bestand frigcode.txt, te downloaden via .

Je kunt Frigate nu starten met dit commando in dezelfde map als het bestand docker-compose.yml:

docker compose up

Met dit commando krijg je in de terminal meldingen te zien. Als alles werkt, kun je Frigate ook als achtergrondproces starten met deze opdracht:

docker compose up -d

De parameter -d staat voor daemon. Je krijgt dan geen meldingen te zien. Je kunt dan de terminal sluiten zonder Frigate te stoppen. Als je na het starten met een browser naar http://ipadres:5000 bladert, zie je als het goed is de beheerdersomgeving met een beeld van de camera. Verander als het werkt achter detect de optie enabled naar True en herstart je container. Hierna zullen personen worden gedetecteerd.

We testen de detectiestream via de beheeromgeving van Frigate.

07 Optimalisaties toepassen

Als de stream werkt, kun je enkele optimalisaties gaan toepassen. Bij de huidige configuratie zal ffmpeg de processor gebruiken voor het (softwarematig) decoderen van de streams. Het is verstandig hardwareversnelling te gebruiken als je die mogelijkheid hebt. Hoewel een losse grafische kaart kan worden gebruikt, is een geïntegreerde gpu meer dan toereikend. Voor de negende generatie Intel-processor die we in dit artikel gebruiken, voegen we de parameter preset-vaapi toe als parameter onder ffmpeg.

De code kun je bekijken in het bestand frigcode.txt, te downloaden via .

Vanaf de tiende generatie gebruik je preset-intel-qsv-h264. In de documentatie van Frigate vind je nog aanwijzingen voor verschillende andere systemen. Na het maken van de aanpassing zul je de Docker-container opnieuw moeten starten. Als je daarna via de beheerdersomgeving naar System gaat, zie je of een gpu wordt gebruikt voor hardware-versnelling.

Via de systeempagina kun je controleren of hardwareversnelling wordt gebruikt.

08 Detecteren personen en objecten

Frigate zal bij elke detectie een gebeurtenis maken met daarbij een clip en/of snapshot. Op het snapshot zie je een afbeelding van de gedetecteerde persoon met een kader eromheen en een percentage dat aangeeft hoe zeker het model is dat het een persoon is.

Behalve personen kun je ook bijvoorbeeld honden, katten, paraplu’s, auto’s, fietsen of paarden laten detecteren via sleutelwoorden die je aan de configuratie toevoegt. In de documentatie bij Frigate vind je een enorme lijst met opties. Ook deze opties worden als gebeurtenis toegevoegd en je kunt hier eventueel op filteren. Daarnaast kun je bijvoorbeeld ook op camera en datum filteren.

Standaard zal Frigate de processor gebruiken voor detectie. Dit gaat doorgaans prima met enkele streams, afhankelijk van de resolutie van de detectiestream en de snelheid van de processor. Een speciale detector kan de taken wel enorm versnellen. Bekende opties zijn TensorNT voor grafische kaarten van Nvidia en OpenVINO die werkt op niet al te oude Intel-systemen. De tijd die het AI-model nodig heeft om uitvoer te genereren, ook wel inference speed genoemd, is, afhankelijk van je opstelling, veel korter met zulke detectors. Een Google Coral Edge TPU (zie het gelijknamige kader), onder meer verkrijgbaar in usb-uitvoering, is een van de populairste opties. Alleen is de beschikbaarheid soms beperkt door de snelle opmars van AI.

De detectie van personen gaat veel sneller met speciale hardware.

Google Coral Edge TPU Bij machinelearning worden vaak krachtige servers in de cloud gebruikt. Erg snel en efficiënt is dat echter niet en er zijn voor bepaalde toepassingen zorgen over privacy. Met een zogeheten Edge TPU kun je lokaal je machinelearning-taken versnellen. De Google Coral Edge TPU is een populaire optie, verkrijgbaar als usb-dongel of mini-PCIe-adapter.

Hij is ontwikkeld voor het TensorFlow-platform van Google, een opensource-softwarebibliotheek. Frigate gebruikt die bibliotheek voor het detecteren en identificeren van personen en objecten. Het achterliggende model is daarbij getraind voor bijvoorbeeld personen, auto’s, dieren of andere objecten. De Edge TPU zal de detectie enorm versnellen, waardoor de processorbelasting in Frigate tot een minimum beperkt kan blijven. Dit merk je zeker in het stroomverbruik en daarmee de kosten voor 24x7-gebruik. Helaas is met name de usb-variant soms lastig te verkrijgen en al wat prijziger dan voorheen. De uitvoering met mini-PCIe is eenvoudiger te verkrijgen, maar let op: deze past niet in elk M.2-slot.

De kleine Google Coral Edge TPU kan objectdetectie enorm versnellen.

09 Coral Edge TPU toevoegen

Voor dit artikel gaan we de usb-uitvoering van de Coral Edge TPU gebruiken. Je hoeft op de host in principe geen drivers te installeren voor de detector, omdat je deze doorgeeft aan de Docker-container, zoals je in docker-compose.yml kunt zien. De container bevat alle vereiste drivers. In de configuratie van Frigate voeg je de volgende regels toe:

De code kun je bekijken in het bestand frigcode.txt, te downloaden via .

Het is overigens wel handig wat drivers en software te installeren op je Docker-systeem, zodat je kunt testen of het apparaat werkt. Zeker als je zoals in onze situatie een Linux-container in Proxmox gebruikt en de hardware voor die container beschikbaar wil maken, wat soms een uitdaging kan zijn. Voor het testen kun je de instructies van Coral volgen. Merk op dat de gebruikte PyCoral-bibliotheek beschikbaar is voor ten hoogste Python 3.9. Debian 11 en Ubuntu 20.04 hebben een nieuwere Python-versie. Eventueel kun je de oudere Python-versie dan via pyenv installeren om de test te doen. Na enkele installatiestappen kun je een model testen met de afbeelding van een papagaai.

Volg de instructies bij Coral voor het testen van de detector.

10 Gebieden maskeren

Het is nuttig om bepaalde gebieden op het camerabeeld die ongewenste detecties geven te maskeren om de systeembelasting te beperken. Denk bijvoorbeeld aan een overhangende struik die beweegt in de wind.

Je kunt zien welke gebieden veel detecties geven. Open hiervoor het camerabeeld, klik op Show options en zet een vinkje bij Motion boxes. Je ziet nu rode vakjes op het camerabeeld rond plekken weer beweging werd gedetecteerd. Klik op Mask & Zone creator. Klik op Add om een eerste masker toe te voegen. Klik op het camerabeeld op plekken waar je een punt toe wil voegen of houd een punt ingedrukt om deze te verslepen. Je ziet nu een hele reeks coördinaten die je handmatig aan je configuratie moet toevoegen bij de betreffende camera, bijvoorbeeld:

De code kun je bekijken in het bestand frigcode.txt, te downloaden via .

Hierna moet je Frigate herstarten. Je kunt meerdere maskers toevoegen voor verschillende gebieden in het beeld. Uiteraard kun je dit ook bij andere camera’s doen.

Bekijk welke gebieden ongewenste detecties geven, zodat je die kunt maskeren.

Zones aanwijzen

Binnen je beheeromgeving kun je zones aanmaken voor delen van je camerabeeld. Dat werkt vergelijkbaar met het maskeren van gebieden. Op het beeld van je oprit wijs je bijvoorbeeld een apart gedeelte aan met daarin de voordeur. Vaak zul je immers extra geïnteresseerd zijn in personen die voor de voordeur staan.

Zones helpen je ook om ongewenste meldingen tegen te gaan. Neemt de camera bijvoorbeeld een stukje van de weg mee, dan helpen zones je om auto’s die langsrijden of personen die langslopen te negeren, door jouw terrein als zone in te stellen. In je configuratie voeg je de zones dan weer toe bij de betreffende camera:

De code kun je bekijken in het bestand frigcode.txt, te downloaden via .

11 Opnames en snapshots

Voor opnames in hoge kwaliteit kun je voor de betreffende camera een extra stream toevoegen met onder roles de optie record. Als je geen aparte stream hebt, kun je eventueel de stream die je voor detectie gebruikt deze extra rol geven. Verder zetten we opnames (onder record) aan met enabled: True. Voor snapshots doen we hetzelfde onder snapshots. Hier wordt de detectiestream voor gebruikt.

Let op: als bepaalde opties in het configuratiebestand uitstaan, heeft het geen effect als je ze via de beheerdersomgeving aanzet! Dat geldt onder meer voor opnames en snapshots. De totale configuratie voor de bewuste camera ziet er dan als hieronder uit:

De code kun je bekijken in het bestand frigcode.txt, te downloaden via .

Standaard zal Frigate gebeurtenissen van de laatste tien dagen bewaren, maar je kunt dit op allerlei manieren aanpassen.

De uiteindelijke configuratie voor de betreffende camera.

Geavanceerde opties benutten Frigate geeft je ook nog diverse geavanceerde opties. Zo kun je met wat parameters de detectie nog wat verbeteren, om de incidentele valse melding ook nog tegen te gaan. Ook kun je go2rtc gebruiken, zodat andere systemen zoals Home Assistant de RTSP-streams bij Frigate zelf op kunnen vragen en niet bij de camera (die dat vaak niet aankan).

Ook is integratie met Home Assistant mogelijk. Je kunt dan eenvoudig via Blueprints automatiseringen maken, die zorgen dat je bijvoorbeeld voor bepaalde zones een notificatie ontvangt met clip en snapshot van de gedetecteerde persoon. Merk op dat je voor die integratie een MQTT-broker nodig hebt (bijvoorbeeld de Mosquitto-broker-add-on van Home Assistant), die je dan ook in je configuratie van Frigate moet opnemen.

▼ Volgende artikel
It Takes Two- en Split Fiction-maker bezig met opnames voor nieuwe game
Huis

It Takes Two- en Split Fiction-maker bezig met opnames voor nieuwe game

Hazelight Studios, de ontwikkelaar van de succesvolle coöperatieve games It Takes Two en Split Fiction, heeft een nieuwe game in ontwikkeling en is op dit moment bezig met de opnames ervoor.

Enige tijd geleden gaf regisseur Josef Fares al aan dat er een nieuwe game in ontwikkeling was bij de studio, maar nu heeft hij op social media een foto geplaatst waarop Fares te zien is met drie acteurs in motion capturing-pakken. Daarmee wordt dus duidelijk gemaakt dat de opnames voor de game in ieder geval al in volle gang zijn.

Overigens is de identiteit van de acteurs niet bekend. Fares houdt zijn arm voor de gezichten van de acteurs. Mogelijk zijn het dus bekende acteurs en wil hij dat nog verhullen, al is dat speculatie. Over speculatie gesproken: het feit dat er drie acteurs te zien zijn, doet sommige fans vermoeden dat de nieuwe game van Hazelight mogelijk met drie spelers tegelijk te spelen valt in plaats van twee, maar ook dat is nog alles behalve bevestigd.

View post on X

Over de games van Hazelight Studios

Hazelight Studios is gespecialiseerd in het creëren van games die coöperatief doorlopen moeten worden. No Way Out, It Takes Two en Split Fiction vergen allen twee spelers. Daarbij draait het om samenwerken, wat hun games een populaire bezigheid maakt voor gamende koppels en vrienden.

It Takes Two bleek een grote hit voor de studio. In het spel spreekt een dochter van een ruziënd stel een vloek over het tweetal uit, waardoor ze minuscuul worden. Ze zullen moeten leren communiceren en samenwerken om zich uit deze hachelijke situatie te redden, terwijl ze als kleine poppen door een uitvergrote versie van hun huis en tuin reizen.

Na het succes van It Takes Two bracht Hazelight het conceptueel vergelijkbare Split Fiction uit. Die game draait om twee schrijvers, Mio en Zoe, die worden ingehuurd om verhalen te creëren voor een technologie die deze verhalen levensecht kan simuleren. De vrouwen worden door het bedrijf achter de technologie echter gevangen in een simulatie, en in de game wordt er constant tussen de twee verhalen van Mio en Zoe geschakeld. Dat levert zowel fantasievolle als futuristische settings op.

Zowel It Takes Two als Split Fiction komen met een Friend Pass. Dat houdt in dat maar één speler de game hoeft te kopen, en de tweede speler gratis online mee kan spelen. De games zijn ook via splitscreen samen op de bank speelbaar.

Watch on YouTube
▼ Volgende artikel
Apple is nu de volledige eigenaar van hitserie Severance
Huis

Apple is nu de volledige eigenaar van hitserie Severance

Apple heeft de volledige rechten op de Apple TV-serie Severance overgenomen, en gaat de serie voortaan binnenshuis produceren.

De eerste twee seizoenen van Severance staan al op Apple TV, maar de serie werd geproduceerd door Fifth Season. Apple Studios was alleen de distributeur. Daar is nu verandering gekomen: Apple heeft iets minder dan 70 miljoen dollar betaald voor de volledige rechten op de serie.

Dat betekent dat het bedrijf de productie van de serie voortaan ook zelf gaat doen, al zal Fifth Season wel als executive producer aangesteld blijven. Ook showrunner Dan Erickson en uitvoerden producent Ben Stiller (die we natuurlijk ook kunnen van vele comedyfilms) blijven hun rollen bekleden, dus aan de kwaliteit van de serie verandert als het goed is niets.

Watch on YouTube

Financiële stabiliteit

Volgens Deadline zou de overname mogelijk gedaan zijn om de productie van de show financieel stabiel te houden. In het tweede seizoen waren de productiekosten naar het schijnt zo'n 20 miljoen dollar per aflevering, en Apple kan door zijn formaat dit beter dragen.

Het plan is dat Severance in totaal vier seizoenen krijgt - al worden een vijfde seizoen en een spin-off ook niet uitgesloten. De opnames van het langverwachte derde seizoen moet aankomende zomer starten. De makers van de serie willen eerst de scripts zover mogelijk afkrijgen, zodat ze bij schrijfwerk van de laatste afleveringen van het seizoen nog relatief goedkoop terug kunnen gaan naar scripts van eerdere afleveringen om wijzigingen aan te brengen waar nodig.

Watch on YouTube

Over Severance

De Apple TV-serie Severance draait om Mark S., die een opmerkelijke kantoorbaan bij het bedrijf Lumon Industries heeft: zodra hij op kantoor komt, weet hij niets van zijn leven buiten kantoor. Wanneer hij klaar is en weer naar huis gaat, weet hij niets van zijn werk. Dat komt door een speciale procedure waardoor de herinneringen van de werkplek in het privéleven gescheiden worden.

Dit concept is de voedingsbodem voor een ingewikkelde en verrassende serie waarin Mark samen met zijn collega's langzaam maar zeker probeert te achterhalen hoe de vork precies in de steel steekt bij Lumon. Zoals gezegd zijn er inmiddels twee seizoenen uitgekomen, die beiden op streamingdienst Apple TV te zien zijn.