La puissance d'un TPU Coral sur Frigate

Test du Google Coral USB avec Frigate pour améliorer les temps et la qualité de détection vidéo.
La puissance d'un TPU Coral sur Frigate
Le Google Coral USB branché à un Raspberry PI 4

Sommaire

Imaginez la scène : vous installez Frigate pour sécuriser votre domicile. Tout semble fonctionner, mais dès qu'une branche bouge ou qu'un chat traverse le jardin, votre Raspberry Pi s'emballe. Le processeur grimpe à 100%, la température monte, et la notification arrive sur votre smartphone avec 15 secondes de retard... quand elle arrive.

Le CPU d'un micro-ordinateur n'est tout simplement pas taillé pour les calculs mathématiques complexes de l'Intelligence Artificielle en temps réel.

Le produit : Google Coral USB Accelerator

C'est ici qu'intervient Google avec sa gamme Coral. Ce petit dongle USB, pas plus grand qu'une clé USB classique, embarque un Edge TPU (Tensor Processing Unit). C'est un coprocesseur dédié exclusivement au Machine Learning. Son but ? Décharger votre processeur principal de toutes les tâches de reconnaissance de formes (humains, voitures, animaux).

Au programme de cet article : Je vais décortiquer ses caractéristiques techniques, voir comment l'intégrer proprement dans une stack Raspberry Pi + Frigate + Home Assistant, et vérifier si le gain de performance justifie l'investissement d'une centaine d'euros environ.

⚠️
Le contenu de cet article a été testé et validé avec la version 2026.7 de Home Assistant et la version 0.17.2 de Frigate.

Fiche Produit

Le Coral USB Accelerator ne paie pas de mine, mais ses spécifications sont impressionnantes pour sa taille :

CaractéristiqueSpécification
PuceGoogle Edge TPU
Performance4 TOPS (Trillions d'opérations par seconde)
InterfaceUSB 3.0 (Type-C)
Consommation500mA (moyenne)
Dimensions65 mm x 30 mm x 10 mm

Pour expliquer brièvement le tableau ci-dessus, prenons un cas concret. Là où un processeur de Raspberry Pi 4 mettrait entre 100ms à 200ms pour analyser une image, le Coral le fait en seulement 7ms à 12ms. C'est une multiplication par 15 ou 20 de la vitesse de traitement !

Installation Frigate & Coral

Pour ce test, j'ai utilisé une configuration classique chez les membres de HACF : un Raspberry Pi 4, un SSD M.2 pour la fiabilité et un PoE+ Hat pour l'alimentation, mais cette partie reste optionnelle. Gardez en tête d'avoir une bonne alimentation, car avec le SSD et le Coral en USB ça va tirer sur la consommation.

1. Connexion physique

Branchez le Coral impérativement sur un port USB 3.0 (bleu). Le flux de données est trop important pour l'USB 2.0.

Bien que je n'ai pas rencontré de problèmes en le branchant à chaud, préférez un branchement sur le Raspberry Pi 4 lorsque celui-ci est éteint.

2. Configuration logicielle (Frigate)

Il faut au préalable avoir une installation fonctionnelle de Frigate. Vous pouvez vous référer à la documentation officielle disponible ici.

Ensuite, il suffit d'indiquer à Frigate d'utiliser le détecteur edgetpu au lieu du CPU de votre machine. Pour cela, rendez-vous dans le fichier config.yml de Frigate et modifiez comme moi, les premières lignes du fichier.
Ci-dessous, je vous partage ma config pour une caméra Reolink.

J'utilise également go2RTC mais ce n'est pas nécessaire pour faire fonctionner le Coral et vous pouvez tout simplement vous en passer :

detectors:
  coral:
    type: edgetpu
    device: usb
mqtt:
  host: 192.168.1.xx
  port: 1883
  user: ####
  password: ####
  topic_prefix: frigate
  
# Configuration de go2rtc pour la gestion des flux
go2rtc:
  streams:
    # On définit le flux basse résolution (sub stream) de la Reolink
    # Note : Le chemin /h264Preview_01_sub est classique chez Reolink
    reolink_trackmix_sub:
      - rtsp://user:mdp@192.168.1.xx:554/h264Preview_01_sub
    reolink_trackmix_main:
      - rtsp://user:mdp@192.168.1.xx:554/h264Preview_01_main

cameras:
  reolink_trackmix:
    ffmpeg:
      inputs:
        # On récupère le flux via go2rtc (port 8554 en interne)
        - path: rtsp://127.0.0.1:8554/reolink_trackmix_main
          roles:
            - record
            - audio
        # On récupère le flux via go2rtc (port 8554 en interne)
        - path: rtsp://127.0.0.1:8554/reolink_trackmix_sub
          roles:
            - detect
      # Accélération matérielle pour le décodage (si sur Raspberry Pi 4)
      hwaccel_args: preset-rpi-64-h264

    detect:
      enabled: true
      width: 1024
      height: 576

    objects:
      track:
        - person
        - dog
        - car

    # Optionnel : Désactiver l'enregistrement si vous ne voulez que de la détection
    record:
      enabled: false
      retain:
        days: 1

    snapshots:
      enabled: false # Pour avoir une photo de l'événement détecté
    motion:
      mask: 0.581,0.023,0.99,0.023,0.991,0.068,0.581,0.069
      threshold: 35
      contour_area: 10
      improve_contrast: true
version: 0.16-0

Pour vérifier que Frigate utilise bien le Coral, il y a plusieurs manières. Dans les logs au démarrage, par exemple, vérifier la présence de cette ligne :

2026-02-27 18:04:28.331106254 [2026-02-27 18:04:28] frigate.detectors.plugins.edgetpu_tfl INFO : TPU found
2026-02-27 18:04:28.334279601 INFO: Created TensorFlow Lite XNNPACK delegate for CPU.

Autre solution, depuis l'interface web de Frigate, tout en bas de la page, cliquer sur "CPU". Ça ouvre la fenêtre de statistiques du système :

Vue du système Frigate lorsqu'il utilise un Coral

On voit bien que le système utilise le Google Coral et que les détections sont dans des vitesses attendues et décrites en début d'article.

3. Remontée dans Home Assistant

Lorsque vous installez et configurez l'intégration Frigate sous Home Assistant, vous vous retrouverez avec 2 appareils (Pour une configuration avec une caméra).

Liste des appareils remontés par l'intégration une fois configurée

Le premier représente le système Frigate en lui même.

Les entités de diagnostic de Frigate

Et le second appareil représente votre caméra. Les entités disponibles dépendent de ce que vous avez mis dans votre config.yml côté Frigate.

Les entités remontées pour chaque caméra configurée suivant ce que vous "détectez"

On retrouve une catégorie générale qui indique le nombre total d'objets détectés à un instant T, le nombre total d'objets détectés statiques et "All Occupancy" qui n'est qu'un capteur générique de présence.

Puis, pour chaque élément qu'on souhaite surveiller dans Frigate, on retrouve la section correspondante. Je retrouve bien ce que j'avais spécifié dans la section objects / track dans mon fichier config.yml côté Frigate, à savoir :

  • Les voitures
  • Les chiens
  • Les personnes

Et pour chacun, les mêmes types d'entités (Nombre d'objets détectés, nombre d'objets statiques détectés, le capteur générique de présence et la dernière photo de la dernière détection).

Grâce à l'intégration Frigate (via MQTT), chaque détection (personne, chien, voiture) devient une entité binaire dans Home Assistant.

Retrouver les médias dans Home Assistant

Là où ça devient vraiment pratique d'utiliser l'intégration Frigate dans Home Assistant, c'est que les détections et les vidéos sont automatiquement sauvegardées et disponibles depuis l'interface de HA.

Il suffit de se rendre dans l'onglet Médias sur la gauche et vous retrouverez une nouvelle entrée nommée Frigate

Suivant la configuration que vous avez de Frigate, vous retrouverez plus ou moins de choses à l'intérieur.
Personnellement, comme Frigate enregistre en continu toute une journée, je retrouve, heure par heure, le flux vidéo entier de la caméra dans le dossier "Recordings". C'est classé par jour et par heure.
Il y a également un dossier "Clips" qui répertorie toutes les détections classées par type ou par jour. Pratique pour rapidement retrouver ce qu'on cherche.
Enfin, si vous avez opté pour les "Snapshots" lors d'une détection, elles sont aussi sauvegardées dans le dossier correspondant.

Transformer la Détection en Action : L'Intégration Home Assistant

Une fois l'intégration Frigate (disponible sur HACS) installée, chaque caméra expose des capteurs de présence spécifiques. Par exemple, l'entité binary_sensor.reolink_trackmix_person_occupancy passera à "Détecté" dès que le Coral aura identifié un humain.

Cas d'usage 1 : Notification avec photo

C'est l'automatisation de base, mais la plus efficace. Je veux être prévenu instantanément si quelqu'un pénètre sur ma propriété, avec une preuve visuelle sur mon smartphone.

Le principe : Dès qu'une personne est détectée, Home Assistant envoie une notification "Actionnable" avec l'image de l'événement fournie par Frigate.

alias: "Sécurité : Humain détecté dans le jardin"
description: "Envoi d'une notification avec photo lors d'une détection humaine"
trigger:
  - platform: state
    entity_id: binary_sensor.reolink_trackmix_person_occupancy
    from: "off"
    to: "on"
action:
  - service: notify.mobile_app_votre_smartphone
    data:
      title: "⚠️ Alerte Intrusion"
      message: "Une personne a été détectée dans le jardin."
      data:
        # On récupère l'image de l'événement via l'API de Frigate
        image: "https://votre-ha.url/api/frigate/notifications/{{ trigger.to_state.attributes.event_id }}/snapshot.jpg"
        # Lien pour ouvrir directement le flux live
        clickAction: "/live-view"

Cas d'usage 2 : Filtrage par Zone (Éviter les fausses alertes)

Grâce à la puissance du Coral, on peut se permettre de définir des Zones précises (ex: "Allée", "Portail", "Terrasse").

Le menu dans Frigate pour créer des zones personnalisées

On peut ainsi créer une automatisation qui ne s'active que si le livreur entre dans la zone "Portail", ignorant ainsi les passants sur le trottoir.

Personnellement, je n'utilise pas de zones, la caméra couvre toute mon allée et j'ai obscurci les zones publiques. Je ne suis ainsi pas dérangé par le passage des voitures dans la rue ni des passants sur le trottoir. Par contre, ne possédant pas de capteur de mouvement à l'extérieur, difficile jusque-là d'allumer les lumières extérieures quand je rentre et qu'il fait déjà nuit. Avec la caméra, Frigate et le Coral, c'est désormais possible et facile. Voici un exemple qui utilise les zones, mais le principe reste le même sans.

Le scénario : "Si une voiture entre dans la zone Allée, allume la lumière extérieure si le soleil est couché."

alias: "Confort : Accueil Voiture"
trigger:
  - platform: state
    entity_id: binary_sensor.reolink_trackmix_allée_car_occupancy
    to: "on"
condition:
  - condition: state
    entity_id: sun.sun
    state: "below_horizon"
action:
  - service: light.turn_on
    target:
      entity_id: light.projecteur_allee

Il y a une entité pour chaque zone définie, facilitant les automatisations qui les utilise

Sans le Coral, le délai entre le passage de la voiture et l'allumage de la lumière pourrait être de 5 à 10 secondes (temps de traitement CPU). Avec le Coral, c'est quasi instantané. La lumière s'allume bien quand vous arrivez et non plus quand vous êtes devant la porte d'entrée à chercher le trou de la serrure.

Mot de la fin

Intégrer un Google Coral avec Frigate et Home Assistant, c'est clairement passer à la vitesse supérieure en matière de vidéosurveillance intelligente. Fini les fausses alertes à cause d'un coup de vent dans les arbres ou d'un chat qui passe : la précision du combo est redoutable, et le tout tourne en local sans envoyer la moindre image sur le cloud. Si vous hésitiez encore à franchir le pas par peur de la configuration, j'espère que cet article vous aura prouvé que l'effort en vaut la peine. Vos processeurs vous diront merci, et vos automatisations Home Assistant n'auront jamais été aussi intelligentes.

- Note HACF -

Nous tenons à remercier notre partenaire, Domadoo, qui a gracieusement offert ce matériel.

Notre unique volonté est de partager, après test et intégration avec HA, nos avis sur du matériel nous semblant intéressant pour la communauté. Il est important de souligner que HACF reste totalement libre de sa ligne éditoriale et les auteurs de leurs propos.
Les médias HACF ont cependant des liens affiliés nous permettant de compléter nos revenus liés aux adhésions et dons, ce qui nous permet de mener nos différentes actions (voir https://www.hacf.fr/association-hacf/#financement).