Frigate et cameras Hikvision : detection d’objets en local, sans cloud ni abonnement

Frigate combine la détection d’objets par IA et les caméras Hikvision pour un système de vidéosurveillance local, sans cloud ni abonnement mensuel. Voici comment installer et configurer l’ensemble.

Pourquoi choisir Frigate plutôt qu’un NVR classique

Un NVR traditionnel enregistre en continu et vous prévient uniquement sur détection de mouvement basique. Frigate analyse le flux vidéo en temps réel grâce à un modèle d’IA, capable de distinguer une personne, un véhicule, un animal ou un colis. Vous pouvez définir des zones de détection, recevoir des alertes ciblées, et relancer automatiquement l’enregistrement sur un événement précis.

Le coût est un autre argument. Une licence NVR Hikvision avec détection intelligente coûte 15 à 50 euros par caméra. Frigate est gratuit, open source, et tourne sur un serveur existant sous Docker Compose. Seule la puissance de calcul nécessite un peu de matériel : un Google Coral TPU USB à 40 euros suffit pour 5 à 8 caméras en temps réel.

Matériel nécessaire

Vous aurez besoin de caméras Hikvision avec le protocole ONVIF activé, d’un serveur sous Debian ou Ubuntu avec Docker et Docker Compose, et éventuellement d’un Google Coral TPU USB pour accélérer l’inférence. Sans le Coral, un CPU moderne fait l’affaire pour 2 à 4 caméras.

Les caméras Hikvision que j’utilise sont des modèles turret 4MP avec vision nocturne. Elles sont posées en extérieur sous un avant-toit, branchées en PoE. Le protocole ONVIF doit être activé et un utilisateur avec droits de lecture doit être créé dans l’interface Hikvision.

Installation de Frigate en Docker Compose

Créez un fichier frigate.yml avec la configuration suivante :

services:
  frigate:
    container_name: frigate
    image: ghcr.io/blakeblackshew/frigate:stable
    restart: unless-stopped
    shm_size: "64mb"
    ports:
      - "5000:5000"
      - "1935:1935"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./config.yml:/config/config.yml:ro
      - ./storage:/storage
      - /dev/bus/usb:/dev/bus/usb
    environment:
      - FRIGATE_RTSP_PASSWORD=***votremotdepasse***
      - TZ=Europe/Paris

Le fichier config.yml contient les flux RTSP de vos caméras et les modèles de détection. Redémarrez le container après chaque modification de config.

Configuration des caméras Hikvision

Dans l’interface Hikvision, allez dans Réseau > Accès avancé > Intégration. Activez ONVIF, créez un utilisateur frigate avec le rôle Operator. Notez le flux RTSP principal au format : rtsp://utilisateur:motdepasse@adresse_ip:554/Streaming/Channels/101

Ajoutez chaque caméra dans Frigate avec son adresse IP, le port ONVIF (8000), et les identifiants. Définissez les zones de détection : entrées, allées, zone driveway si vous avez un portail.

Les détections IA en pratique

Avec le modèle par défaut, Frigate détecte personnes, véhicules, animaux et sacs à dos. J’ai configuré une alerte Telegram qui m’envoie une capture uniquement quand une personne est détectée entre 22h et 7h, ou quand un véhicule entre dans la zone driveway.

Les alertes indésirées (feuilles qui bougent, ombres) disparaissent avec les zones de masque. Dessinez des polygones autour des zones où le mouvement n’a pas d’importance, et l’IA ignorera ces régions.

Stockage et rétention

Frigate enregistre en continu dans ./storage, avec rétention configurable. J’utilise un SSD de 500 Go pour 4 caméras en 4MP. La rétention est de 7 jours en plein continu, ou 14 jours avec détection par IA uniquement. Ajustez selon votre capacité et vos besoins.

Les enregistrements sont accessibles depuis l’interface web Frigate ou via Node-RED qui interroge l’API REST Frigate pour déclencher des automatisations basées sur les événements de détection.

Conclusion

Frigate et Hikvision forment un duo performant. Le système égale la qualité d’un NVR pro à une fraction du prix, sans dépendre du cloud. La détection IA élimine les fausses alertes qui rendraient un système de vidéosurveillance vite insupportable.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *