Un NVR, acronimo di Network Video Recorder, è un dispositivo o un software progettato per registrare, archiviare e gestire video provenienti da telecamere di sorveglianza IP. A differenza dei tradizionali DVR (Digital Video Recorder), che gestiscono telecamere analogiche, gli NVR si occupano di telecamere IP che trasmettono dati attraverso la rete.
Il segnale video proveniente dalle varie telecamere, compresso per risparmiare spazio di archiviazione, può essere eventualmente sottoposto a qualche tipo di elaborazione a livello di NVR prima di essere archiviato. Frigate è un software NVR open source in grado di riconoscere persone e oggetti in tempo reale con la possibilità di inviare notifiche e innescare azioni specifiche in risposta a specifici eventi.
Frigate è un NVR con riconoscimento in tempo reale delle persone e degli oggetti
Diversamente rispetto ad altri prodotti, un NVR come Frigate si propone come una soluzione avanzata progettata specificamente per Home Assistant. Funzionando interamente in locale, Frigate è rispettoso della privacy e dei dati personali degli utenti scongiurando la necessità di effettuare l’upload dei flussi video su servizi cloud. L'”intelligenza” di Frigate risiede infatti sui sistemi degli utenti che decidono di installare il software, senza appoggiarsi a strumenti di terze parti accessibili soltanto attraverso la rete.
La caratteristica distintiva di Frigate è la sua capacità di eseguire il rilevamento oggetti in tempo reale tramite intelligenza artificiale, utilizzando librerie come OpenCV e Tensorflow. Questa tecnologia consente di analizzare i flussi video provenienti dalle telecamere IP e identificare oggetti e persone in modo preciso e puntuale.
L’installazione dimostrativa di Frigate, accessibile via Web, aiuta a rendersi conto di ciò che è possibile ottenere con questo NVR smart. Come si può verificare cliccando su Events, Frigate ha registrato una serie di eventi a valle dell’elaborazione del video in streaming riconoscendo veicoli e persone.
Frigate tiene traccia degli oggetti in tempo reale e può determinare il momento esatto in cui una persona si avvicina a un’area evidenziata o quando un’auto supera un cancello. Ciò consente di perfezionare le notifiche in base a posizioni precise.
Utilizzo di OpenCV e TensorFlow
Frigate utilizza OpenCV e Tensorflow per eseguire il rilevamento oggetti in tempo reale. OpenCV è una libreria open source per la visione artificiale e l’apprendimento automatico: la prima versione fu rilasciata addirittura nel 2000 e oggi è diventata uno standard de facto, offrendo anche un vasto set di strumenti per la manipolazione di immagini e video.
Semplificando complesse attività di computer vision attraverso una libreria ad alto livello, OpenCV facilita la creazione di applicazioni evolute per rilevare oggetti e persone, identificarli e tracciarli in tempo reale su una sequenza video. Fornisce inoltre algoritmi e funzioni per eseguire una vasta gamma di operazioni su immagini e video, come il rilevamento di contorni, la segmentazione, il filtraggio e altro ancora.
TensorFlow è il noto framework open source per il machine learning sviluppato da Google. È progettato per la creazione e l’addestramento di modelli: la presenza di modelli pre-addestrati per molte applicazioni comuni semplifica lo sviluppo di nuovi progetti. I dati sono rappresentati come tensori, strutture multidimensionali simili ad array, direttamente gestite dal framework durante il processo di apprendimento.
Integrazione con Home Assistant e interfaccia di Frigate
Il già citato Home Assistant è un software open source che fornisce un hub centralizzato per la gestione di dispositivi e servizi per la domotica. La comunità di sviluppatori contribuisce ogni giorno a migliorare costantemente la piattaforma, garantendo una vasta compatibilità con una vasta schiera di dispositivi smart.
Frigate è progettato per legarsi a doppio filo con Home Assistant tramite un componente personalizzato. Ciò significa che gli utenti di Home Assistant possono facilmente implementare Frigate nel loro sistema esistente, creando una sinergia perfetta tra le funzionalità di sorveglianza e il controllo domestico intelligente.
Nell’immagine (fonte: Frigate) si può osservare un esempio di integrazione con Home Assistant. In evidenza ci sono le sequenze video acquisite dall’NVR in risposta a determinati eventi (l’ingresso di una persona nell’area di controllo della telecamera).
Frigate dispone comunque di una sua interfaccia, accessibile sia da sistemi desktop che dispositivi mobili.
Utilizzo di Google Coral Accelerator
L’utilizzo opzionale, ma fortemente raccomandato dagli sviluppatori di Frigate, di un acceleratore Google Coral permette di beneficiare di prestazioni superiori rispetto alle migliori CPU riducendo al contempo i falsi positivi.
Google Coral Accelerator è una famiglia di co-processori di intelligenza artificiale sviluppati dall’azienda di Mountain View per l’esecuzione di inferenze con modelli di machine learning su dispositivi edge. Si tratta di acceleratori pensati per migliorare significativamente le prestazioni delle operazioni di intelligenza artificiale, consentendo ai dispositivi con risorse limitate di eseguire modelli complessi in tempo reale.
Il cuore del Google Coral Accelerator è la Tensor Processing Unit (TPU), un’unità di elaborazione specializzata per operazioni su tensori. L’obiettivo principale è accelerare le operazioni di machine learning sui dispositivi edge. Ciò significa che i modelli possono essere eseguiti direttamente su dispositivi vicinissimi agli utenti finali senza la necessità di una connessione a un server cloud.
Nel caso dell’NVR Frigate, Google Coral Accelerator migliora le prestazioni di rilevamento oggetti basato su TensorFlow, consentendo al sistema di operare in tempo reale e processare oltre 100 frame per secondo con un impatto minimo sulle risorse del sistema. Questa potenza di elaborazione garantisce la copertura di ogni singolo frame e riduce il rischio di “mancare” eventi importanti.
Caratteristiche aggiuntive di Frigate
Frigate ambisce a proporsi come una soluzione completa per la videosorveglianza grazie a una serie di caratteristiche aggiuntive:
- Supporto delle comunicazioni tramite MQTT per una facile integrazione con altri sistemi. Il protocollo MQTT utilizza un modello di messaggistica leggero publish/subscribe, in cui i dispositivi possono pubblicare (invio) o iscriversi (ricezione) a specifici “argomenti” (topics). Abbiamo già visto, nel dettaglio, cos’è MQTT e perché è diventato uno standard nel mondo dell’Internet delle Cose (IoT).
- Registrazione video con impostazioni di retention sulla base degli oggetti rilevati. Anziché registrare continuamente, Frigate può essere configurato per iniziare la registrazione quando viene rilevato un oggetto specifico (come una persona o un veicolo) e interrompere la registrazione quando l’oggetto non è più presente. Le impostazioni di retention determinano per quanto tempo i video associati a determinati oggetti sono conservati.
- Registrazione 24/7 per una copertura continua. Frigate supporta anche la registrazione continua, indipendentemente dalla presenza o dall’assenza di oggetti. In questo modo è possibile assicurarsi una copertura completa delle attività video per tutte le telecamere gestite nell’ambito del sistema.
- Re-streaming tramite RTSP per ridurre il numero di connessioni alle telecamere. Invece di connettersi direttamente a ciascuna telecamera, Frigate può raccogliere i flussi video e redistribuirli attraverso RTSP, semplificando la gestione delle connessioni. RTSP (Real Time Streaming Protocol) è un protocollo utilizzato per la trasmissione di dati audio e video in tempo reale.
- Supporto WebRTC e MSE per una visualizzazione live a bassa latenza. WebRTC (Web Real-Time Communication) e MSE (Media Source Extensions) sono tecnologie che consentono la visualizzazione di video in tempo reale con bassa latenza direttamente all’interno di un browser Web. Il supporto di Frigate per WebRTC e MSE fa sì che gli utenti possano visualizzare le telecamere in tempo reale con ritardi minimi, rendendo l’esperienza di visualizzazione del tutto immediata.
Configurazione hardware consigliata per installare e usare Frigate
Frigate NVR è progettato per supportare un’ampia schiera di dispositivi hardware. Gli autori del progetto, tuttavia, consigliano telecamere che producono video in streaming H.264 con audio AAC. In questo modo è possibile beneficiare della massima compatibilità con tutte le funzionalità di Frigate e Home Assistant. È inoltre utile che la videocamera supporti più substream per consentire l’utilizzo di risoluzioni diverse ai fini di rilevamento, streaming e registrazioni senza ricodifica.
Tra le telecamere IP consigliate ci sono quelle a marchio Dahua, Hikvision e Amcrest, in quest’ordine. Sia i prodotti Dahua che Hikvision hanno entrambi flussi multipli con risoluzioni e frame rate configurabili garantendo uno streaming solidissimo. Entrambi i produttori hanno a catalogo modelli con sensori di grandi dimensioni ben noti per l’eccellente qualità dell’immagine notturna.
Come spiegato nel documento “Recommended hardware“, gli autori dell’NVR Frigate consigliano inoltre la seguente configurazione:
- Mini PC Minis Forum GK41 o similari come sistema server. Qualsiasi cosa con una CPU Intel e in grado di eseguire Debian dovrebbe funzionare bene. Come bonus, potrebbe essere utile indirizzare l’attenzione su mini PC con slot M.2 o PCIe compatibile Google Coral.
- Acceleratore Google Coral. La versione USB è compatibile con la più ampia varietà di hardware e non richiede l’utilizzo di driver. Tuttavia, non dispone delle funzionalità di automatic throttling delle quali sono dotate le altre versioni. Si tratta di una caratteristica che adatta dinamicamente la sua potenza di elaborazione per gestire il carico di lavoro senza superare le capacità nominali e senza quindi surriscaldarsi. Le versioni PCIe e M.2 richiedono invece l’installazione di un driver sull’host. Un singolo Coral può gestire molte telecamere ed è generalmente sufficiente per la maggior parte degli utenti. È possibile calcolare le prestazioni massime del Coral in base alla velocità di inferenza riportata da Frigate.
- Processore in grado di supportare OpenVINO. Intel OpenVINO, acronimo di “Open Visual Inference and Neural Network Optimization” è un toolkit di sviluppo software che facilita l’implementazione di applicazioni di visione artificiale e intelligenza artificiale su CPU, GPU, acceleratori di IA e altre tipologie di dispositivi. In questa pagina è possibile avere un’idea della velocità delle operazioni di inferenza con varie tipologie di CPU Intel.
Come installare Frigate
L’NVR Frigate è distribuito come container Docker: ne è consigliato l’utilizzo su distribuzioni Linux Debian installate direttamente sulla macchina fisica, senza usare la virtualizzazione.
La configurazione e la successiva esecuzione all’interno di Docker attraverso compose è il metodo di installazione consigliato. Allo scopo è possibile usare il file docker-compose.yml
riportato in questa pagina, al paragrafo Docker.
Il parametro privileged: true
specifica che il container deve godere di accesso privilegiato all’host. Con restart: unless-stopped
, si prescrive il riavvio automatico del container a meno che non sia stato arrestato manualmente.
La direttiva shm_size: "64mb"
imposta la dimensione della memoria condivisa (shm
, shared memory) mentre con devices
si mappano i dispostivi Coral USB, Coral PCIe e un dispositivo per l’accelerazione hardware Intel (/dev/dri/renderD128
).
Per usare il file docker-compose.yml
, dopo aver fatto le opportune sostituzioni, basta portarsi nella stessa directory contenente le informazioni di configurazione e digitare il comando docker-compose up -d
.
Seguendo le istruzioni riportate sul sito ufficiale del progetto, è possibile installare Frigate anche su NAS QNAP e Synology, sempre configurando il caricamento dell’immagine Docker.
Credit immagine in apertura: iStock.com/lechatnoir