Tuto : Intégrer Frigate, et faire de la reconnaissance video d'objet par IA en local dans son Jeedom

Alors sinon, pour revenir un peu au sujet de base :
Ayant eu l’occasion de faire une upgrade de mon serveur ZM j’en ai profité de l’avoir sous la main pour tenter d’installer Frigate. J’ai suivi un tuto trouvé sur youtube, en recoupant les infos avec un autre tutos sur un site anglophone, et avec les instructions du site de Frigate…
Et bien entendu, moi aussi je me suis retrouvé bloqué avec le problème de config.yml !
J’ai installé Portainer pour y voir plus clair.
Dans les logs j’avais toujours l’erreur « /config/config.yml is a directory » qui est somme toute assez explicite mais qu’il m’a fallut du temps pour résoudre.
Il me disait aussi que mon fichier de config n’était pas valide, mais c’était lié

Sur mon système (utilisateur « frigate ») j’avais un répertoire « /home/frigate/config » qui contenait le fichier config.yaml
et dans mon docker compose, conformement au tutos et à la documentation j’avais inscrit

 volumes:
    - /home/frigate/config.yml:/config/config.yml

sauf que ça ne fonctionnait pas, et a chaque fois que je relançais le docker il me créer un dossier au nom de « config.yml » dans mon dossier « /home/frigate/config » et me disait que config.yml est un repertoire et que mon fichier config.yml n’était pas conforme (normal vu qu’il existait pas)

Donc première erreur, le fichier de config c’est « config.yml » et non pas « config.yaml »
Ensuite l’exemple dans la donc n’est pas très explicite, je passe sur les explications, mais en fait, dans le docker-compose il ne faut pas indiquer le chemin du ficier config.yml mais simplement le dossier dans lequel il se trouve. Dans mon cas ça donne donc :

 volumes:
    - /home/frigate/config:/config

en mettant donc le fichier config.yml dans /home/frigate/config (pour mon cas)

Voilà, donc désolé pour le « hors sujet » mais je pense que ça peut être utile

2 « J'aime »

Tu n’es pas du tout hors sujet et j’espère que ton message pourra dépanner @anthopocket.
:+1:

Non, c’est marrant :rofl::

Tu as installé une beta ou une stable ? Car il y a un breaking change dans la 0.13 beta

For Docker Container Users:
The migration is handled for you, but you must make sure that the docker CLI or docker-compose binds the entire /config directory and not just the /config/config.yml file.

For example, if your current volume mapping is - /host/path/config_folder/config.yml:/config/config.yml it should now be - /host/path/config_folder/:/config/

Cf : Releases · blakeblackshear/frigate · GitHub

Je pense que c’est une stable :

image: ghcr.io/blakeblackshear/frigate:stable

Bon, après je suis pas encore sorti des ronces, il ne me trouve aucune camera. Mais mes cameras sont sur un réseau spécifiques séparées du reste et le serveur à 2 cartes réseaux (donc 1 que pour le réseau cameras) je sens qu’avec Docker ça va être encore tout une histoire pour que le container accède au 2 réseaux (je n’y suis jamais parvenu lors de mes test ZM sous Unraid…)

Mais en entrant manuellement les cameras ça fonctionne, c’est déjà ça !

1 « J'aime »

Hello,

quelqu’un aurai un bon tuto pour se connecter sur une caméra ? J’ai une coolcam, nip-06 et je n’arrive pas à trouver la bonne URL pour l’avoir… J’ai testé à peu près toutes les URL générées par ce site ( Connect to Neo Coolcam cameras ) aucune n’est valide :cry: dans le même temps, avec mon tel Android j’ai l’appli CoolCam qui va bien, qui se connecte dessus sans problème mais il ne me dit pas comment il a fait :confused:

C’est souvent assez galère. Pour ma Reolink, j’ai du utiliser la sonde ONVIF intégrée à ZM pour trouver la bonne adresse du flux vidéos, parce que pareil, tout ce qu’on trouvait sur le net (y compris sur le site du fabricant…) soit ne fonctionnait pas, soit faisait carrément planter la caméra !
Une rapide recherche avec « onvif probe » semble montrer qu’il existe des softs qui font ça. A tester…

J’ai lu dans plusieurs post que l’adresse rstp pour les NIP-06 est :

rtsp://<IP>:554/12
ou
rtsp://<IP>:554/cam[CHANNEL]/h264
ou
rtsp://<IP>:8001/12
ou
rtsp://<IP>:8001/0/av1

L’idée d’une solution IA locale est pas mal. J’utilise Synology Surveillance, on verra la motivation pour sauter le pas^^

Le bilan après un test de 48h de Frigate est plutôt positif. Disons qu’il y a du potentiel mais c’est pas encore parfait.
La configuration avec le fameux « config.yml » à éditer à la main est un casse tête sans nom. Il y’a des tonnes d’options et de réglages mais la documentation mentionne juste qu’il existent, sans les expliquer.
Rien que pour comprendre comment spécifier quels « objets » il devait détecter, il m’a fallut aller fouiller dans les fichiers sources sur github. Et pour pas mal d’autres réglages liés à la détection je pense qu’il faut quasiment être un pro d’IA pour savoir ce qu’il faut mettre…
Mais le projet ne semble être encore qu’a ses débuts (c’est même pas une version 1.x) et ça va sans doute s’améliorer (j’ai vu que dans la version beta, on peut ajouter des zones directement depuis l’interface web et non plus en faisant un copier-coller des coordonnées, donc ça va dans le bon sens)

Au niveau de la détection, il n’y a effectivement plus du tout de faux-positif. Quand il y a un enregistrement, c’est ce qu’il s’est réellement passé quelque chose (contrairement aux 126 « événement » par jour de ZM qui déclenche pour une branche d’arbre qui bouge, une goutte de pluie, ou la transition jour-nuit des caméra)
Par contre y a aussi des loupés : il ne ma jamais détecté quand je suis passé avec un sac de grain sur l’épaule. Ou un matin, il détecte bien le chien qui sort de la maison… mais pas ma femme.
Alors certes j’ai utilisé les réglages « par défaut » (mais sur ZM aussi…) et on peut sans doute améliorer la détection si on est un barbu de l’IA mais dans l’état actuel je ne lui ferrais pas 100% confiance, quand il dit qu’il ne s’est rien passé, on ne peut pas en avoir la certitude…

C’est un projet que je vais suivre, surtout qu’il évolue encore (contrairement à l’event notification de zm qui semble abandonné) mais je vais encore attendre un peu avant de m’en servir comme système de prod

3 « J'aime »

C’est sur que c’est pas hyper intuitif ! et le coté « j’ai oublié une indentation » est un peu pénible

Je ne pense pas, il n’y a aucun paramétrage à faire sur la partie IA. Par contre, pour améliorer la détection, il est bien de travailler sur ces zones/masques et comprendre le principe :

Le principe de base, c’est qu’on a un flux de détection (detect) et un flux d’enregistrement (record) (ca peut-être les 2 même, mais il est conseillé d’avoir un flux de détection de plus faible qualité pour des raisons de perf.
Ensuite :
sur le flux detect–> analyse de mouvement → si mouvement, analyse object → si object detecté → enregistrement sur le flux record

Il y a de plus 2 notions :
1 - les masques (mask) qui concernent l’analyse de mouvement (pas d’IA, juste une gestion des modifs de pixels sur le flux)
2 - les zones qui permettent l’analyse d’objets, et c’est là que ca devient puissant et que ca se complique si on veut … puisqu’on peut définir des zones par objet (ex : je souhaite qu’il détecte une voiture qui roule sur l’allée, mais pas la voiture garée sur le parking

Et voilà, ce que ca donne :

    objects:    
      track:      # je surveille, les personnes, les vehicules et les animaux
      - person
      - vehicle
      - animal
    motion:
      mask:
      - 324,0,330,49,687,49,708,0        # j'exclus la voie public de ma détection de mouvement
    zones:
      allee:                    # dans la zone allée, je surveille les personnes les animaux et les véhicules
        coordinates: 120,453,354,102,523,123,468,229,510,342,631,433
        objects:
        - vehicle
        - person
        - animal
      jardin:                  # dans le jardin, juste les personnes et les animaux
        coordinates: 551,348,483,195,492,0,758,0,1280,140,1280,720,1280,720
        objects:
        - person
        - animal
      parking:              # dans le parking, juste les personnes et les animaux (pas les véhicules pour ne pas declencher lorsqu'un véhicule est stationné)
        coordinates: 1280,720,586,411,162,422,0,720
        - person
        - animal
      chemin_haut:   # sur le haut du chemin, juste les personnes et les animaux
        coordinates: 0,0,418,0,0,468
        objects:
        - person
        - animal

Enfin, une autre notion, c’est qu’on peut à la marge paramétrer le modèle - la liste des labels est dispo là : frigate/labelmap.txt at dev · blakeblackshear/frigate · GitHub

model:
  width: 320
  height: 320
  labelmap:
    0: person
    1: vehicle
    2: vehicle
    3: vehicle
    5: vehicle
    7: vehicle
    16: animal
    17: animal
    18: animal
    19: animal
    20: animal

Ca veux dire que les labels 1,2,3,5 et 7 seront vus comme un « vehicle ». Ca simplifie le paramétrage

pour les faux negatifs, j’en ai aussi … pour l’instant, dans l’attente de l’installation de ma clé Coral, je mets ca sur un manque de puissance de ma machine et son incapacité (à ce stade) à traiter toutes les images. A suivre lorsque la clé coral sera en place

Norbert

1 « J'aime »

Si quelqu’un veut faire un plugin pour installer tout ca automatiquement, c’est parfait !

A bon entendeur :wink:

1 « J'aime »

Pour la config de ma machine de test je me suis en grande partie inspiré de ton fichier config, parce que tout ça n’est pas très explicite dans la doc. Surtout qu’on peut faire des réglages globaux qui peuvent être écrasé dans la config de chaque caméra. Bref, c’est pas super explicite.
La documentation concernant le fichier « config.yml » devrait faire 15 à 20 pages pour expliquer en détails tous les concepts, et elle n’en fait à tout casser que 2. Bref, je pense que ça va évoluer, il faut attendre.

Pour les faux négatifs je ne suis pas certain que ce soit un manque de puissance.
Ma machine est basée sur un Core I5-8500, j’avais bien activé l’accélération matérielle pour le décodage du flux vidéo grâce au GPU intégré, et avec seulement 2 caméras le processeur était loin d’être surchargé.

J’ai des composants électroniques à commander, donc je vais profiter de l’occasion pour les commander chez Mouser et prendre un Google TPU afin de refaire un essai (peut-être avec la beta cette fois) mais je ne suis pas convaincu que ce soit un problème de puissance.

C’est sur qu’un plugin pour gèrer les évents ou les enregistrements, ça serait cool.
Après, j’imagine mal faire tourner ça sur le même serveur que jeedom

Merci pour la precision je n’avais pas percuté que ce n’était pas forcement sur la meme machine que jeedom.

Je viens de relire ta présentation et effectivement, tu parles de NVR. Je commencais à me renseigner là-dessus afin d’enregistrer mes flux dessus et non plus sur carte SD…

Je ne connais pas du tout les NVR mais cela m’interesse… Frigate s’installe en plus du logiciel du NVR ou C’EST le logiciel NVR ?
Ce que j’aimerais dans le plus beau des monde c’est unsystème qui centralise plusieurs caméras éventuellement de marque différente (ca je le fais avec le plugin caméra) mais je ne les ai pas toutes avec l’app camhi…
Y a t-il une appli « Frigate » qui, si on arrive à mettre la caméra sur le NVR alors l’appli et capable de l’afficher svp ?
Mon cas perso: j’ai plusieurs caméras noname achetées sur ali et une caméra ANNKE. Toutes sont visibles sur l’app camhi mais pas la ANNKE, c’est dommage

C’est EXACTEMENT ça ! Frigate est le logiciel NVR
Tu paramètres tes caméras sur frigate (caméras de différentes marques, et tu fais de la reconnaissance dessus, ou tu rediffuses des flusx rstp TOUS NORMALISÉ que tu peux récupérer sur jeedom.
Il y a bien sûr aussi une interface web ou tu vois tous tes flux, tes évènements, tes enregistrements, …
L’important, c’est d’avoir pour chacune des caméras un flux rstp ou un flux mjpeg

ok, et je peux installer Frigate s’installe sur n’importe quel NVR ou faut en choisir 1 déjà dédié Frigate ?
Pour les flux je pense que c’est bon car je les ai dans le plugin caméra.
Concernant le mobile, il y a une app mobile qui permet de visualiser cela a distance ?

Il y a un sujet sur le forum qui en parle un peu:

C’est un docker, donc tu peux l’installer n’importe où !
Reste qu’il faut un peu de puissance… J’ai installé sur un rpi4 avec 4cameras, c’est un peu juste… J’ai reçu une clé coral, pour délecter le CPU. J’ai cru comprendre que ça changeait tout !!

L’interface web est compatible Smartphone

Viseron NVR : je ne connais pas, mais ça semble assez comparable à frigate, NVR, IA intégrée via tensorflow, mqtt, fichier de paramétrage en yaml, fonctionnement sous docker, …

Ce que je pourrais reprocher à frigate qui a l’air traité côté viseron, c’est que la sécu est intégrée à viseron, là ou il faut la traiter côté apache sur frigate

il me tarde d’avoir ton retour de la cle coral.
moi j’y ai affecter sur mon nuc 8GO de ram et 4 coeur. je ne sais pas si ca suffit

donc si j’achète « n’importe » quel NVR, je peux installer dessus ?