Reconnaissance Faciale – partie 3

Salutation, voici la partie, elle va se baser sur la configuration de Double Take et l’ajout de CORAL en USB sur le Raspberry Pi 5

Apprentissage des visages

Lorsque tu arrives sur Double Take tu es directement sur l’onglet Matches, il y a une liste déroulante où tu peux ajouter une nouvelle personne

Ensuite il faut aller dans l’onglet Train, dans la liste déroulante tu sélectionnes la personne que tu viens de créer et tu clics sur Upload

Il ne te reste plus qu’à sélectionner des photos où cette personne apparait, seule et sous différents angles.
Recommence l’opération pour chaque personne que tu veux pouvoir identifier

L’icone Sync sert à relancer l’entrainement sur toutes les photos de la personne, je pense que ça peut être interessant à faire lorsqu’on a ajouter pas mal de photo.

Si tu es un petit fouineur tu as du remarquer que dans CompreFace tu retrouves les photos que tu as envoyé depuis Double Take

Double Take est donc bien là comme chef d’orchestre, c’est CompreFace qui se charge de la reconnaissance !

Sensor dans Home Assistant

Maintenant que tout est prêt on va voir comment récupérer tout ça dans Home Assistant, via MQTT

En allant dans Paramètres -> Appareils et services puis dans Entités, fais une recherche sur Double, tu vas voir que des sensors ont été créé.
Le nom des personnes apparaissent seulement si elles ont été détecté au moin une fois à plus de 80% par Double Take et seulement si la Box de détection est assez grande.

Grace à mon NAS qui récupère les enregistrements, snapshot et clip de Frigate (via un simple montage de lecteur dans Raspberry OS) je peux me créer une automatisation qui va m’envoyer une notification avec une image !
Je pense que le sensor le plus interessant est le double_take_unknown qui va me permettre d’envoyer une notification si personne n’est reconnu.

Voila il reste encore pas mal de chose à découvrir je pense, surtout avoir des idées d’automatisation comme par exemple désactiver l’alarme automatiquement si il reconnait un visage de la famille.

Booster la détection de personne avec un CORAL USB

Avec une caméra le raspberry pi 5 suffit par contre l’ajout d’une seconde caméra m’a fait passer le temps de détection à 5 minutes, je n’ai que 2 caméras pour le moment je n’ai donc pas testé plus.
J’ai voulu essayé le CORAL USB et effectivement ça fonctionne pas mal, je suis passé à 15secs pour la détection d’une personne.

Voici la marche à suivre pour ajouter le CORAL sur un raspberry pi 5, la doc officielle est :

Dans un premier temps il faut installer un runtime, dans le terminal du Pi5 on ajoute le repositury :

echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

sudo apt-get update

Ensuite on installe le runtime

sudo apt-get install libedgetpu1-std

Si le CORAL était déjà branché il faut le débrancher et le rebrancher.

Il reste à modifier notre Docker Frigate pour le laisser communiquer avec le port USB, pour ça il faut modifier le Docker-compose en ajoutant ces lignes :

devices:
      - /dev/bus/usb:/dev/bus/usb  # Passes the USB Coral, needs to be modified for other versions

Donc on ouvre Portainer et on va dans Stack, modifier le stack Frigate

Clic sur Frigate et ensuite Editor

C’est là qu’il faut ajouter les lignes, voici le code complet à mettre :

version: "3.9"
services:
  frigate:
    container_name: frigate
    privileged: true # this may not be necessary for all setups
    restart: unless-stopped
    image: ghcr.io/blakeblackshear/frigate:stable
    shm_size: "64mb" # update for your cameras based on calculation above
    devices:
      - /dev/bus/usb:/dev/bus/usb  # Passes the USB Coral, needs to be modified for other versions
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /opt/data/frigate/config.yaml:/config/config.yaml
      - /mnt/nfs-backup:/media/frigate
      - type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "5000:5000"
      - "8554:8554" # RTSP feeds
      - "8555:8555/tcp" # WebRTC over tcp
      - "8555:8555/udp" # WebRTC over udp
    environment:
      FRIGATE_RTSP_PASSWORD: "P@ssw0rd"

Ensuite tu clics sur Update the stack

Dans la nouvelle fenêtre il faut activer Re-pull image and redeploy et clic sur Update

Il faut attendre un peu que tout se relance et normalement c’est bon, aucune perte de donnée.

Dernière étape, modifier la conf de Frigate :

Modifier le config.yaml en ajoutant les lignes

detectors:
  coral:
    type: edgetpu
    device: usb

se qui donne pour le fichier total :

mqtt:
    enabled: true
    host: 192.168.1.zzz # adresse IP de HA avec Mosquitto
    port: 1883
    user: mqtt_user
    password: P@ssW0rdMqtt
detectors:
  coral:
    type: edgetpu
    device: usb
cameras:
    garage: #ma caméra qui s'appelle garage
      ffmpeg:
        inputs:
          - path: rtsp://login:P@ssW0rd@192.168.1.xxx:yy/videoSub # flux vidéo de la camera, avec l'IP et le port
            roles:
              - detect
      onvif: # permet de diriger la camera si elle est compatible
        host: 192.168.1.xxx
        port: 888
        user: login
        password: P@ssW0rd
      objects:
        track: # se que l'on souhaite détecter
          - person
          - cat
      snapshots:
        enabled: True
      record:
        enabled: True
        retain: # par défaut je n'enregistre pas
          days: 0
          mode: all
        events: # si il y a un évènement je garde la vidéo 14 jours
          retain:
            default: 14
            mode: motion

Une petite sauvegarde + reboot et on est bon !

Pour vérifier que Frigate utilise bien le CORAL tu peux aller voir dans les logs:

2024-05-16 20:49:21.227823141  [2024-05-16 20:49:21] detector.coral                 INFO    : Starting detection process: 311

Ou aller sur une camera et cliquer sur Event, il est indiqué le temps qu’il a fallu pour faire la détection

Voila, l’installation est terminée, si jamais je trouve le moyen d’optimiser tout ça je ne manquerai pas de mettre à jour.
Si tu as une meilleur config, n’hésite pas à laisser un commentaire et je mettrai l’article à jour .

Laisser un commentaire

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

Back to Top