Utilisation Frigate avec 2 TPU CORAL

Bonjour à tous, je suis nouveau dans l’utilisation de Frigate que j’utilise essentiellement pour créer des détections à des fins de générer des alertes pour mon alarme. J’ai la config suivante :

Homme assistant sur une VM dédiée, Frigate sur une autre VM. J’ai 2 TPU CORAL associés à la VM Frigate. Tout ceci pour gérer 6 caméras (pour le moment la cible sera surement à 10 caméras au total). Mon soucis est le suisvant : je viens de passer à 2 TPU car c’était une peu tendu côté CPU et mémoire. Voici les résultats avec les 2 TPU : Vitesse d’inférence vers les 80ms utilisation des processeurs des TPU vers les 40%. En gros j’espérais avoir des vitesses d’inférence par détecteur nettement plus basses. Alors j’ai peut-être un défaut de config, c’est ma 1ere question dans le cas d’une utilisation de plusieurs TP, faut-il affecter les caméras à un TPU en particulier ?

En gros je pensais qu’il fallait avoir dans la conf frigate :

detectors:
coral1:
type: edgetpu
device: usb:0
coral2:
type: edgetpu
device: usb:1

et ne pas affecter les cameras à un TPU. Mais j’ai vu (surtout en sollicitant MIstral AI) qu’il fallait plutôt dédier les TPU aux caméras ainsi :

cameras:

cam1:
detectors:
-coral1

ffmpeg:
inputs:

  -path: rtsp://127.0.0.1:8554/portail ………..
cam2:
  detectors:
    -coral2

Donc est-ce bien ainsi qu’il faut faire ou juste déclarer les 2 TPU les dédier aux caméras ?

2eme question (si la solution proposée par MIstral AI est bien la bonne : est-ce que la syntaxe décrite est la bonne car chez moi si j’utilise cela frigate ne démarre plus.

Bonsoir, J’ai aussi un TPU mais en version PCI express Access to this page has been denied. qui est de la même puissance que toi,
Même avec 6 caméra , les vitesses d’inférence ne dépassaient pas les 10 ms. ( En ce moment je suis à 47 ms, mais c’est parce que j’ai changé le modèle de base)
C’est quoi les résolutions de tes caméras ?

Et c’est quoi le hardware de ta VM ?

Ma VM est sur un serveur (BMAX B9 Power i9-12900H 14 coeurs 32Go de mémoire 1To SSD M.2).

Donc côté HW je suis plutôt bien normalement.

Cette VM est taillée à 16 CPU (2 sockets 8 cores) et 8Go de mémoire. La résolution des caméras est de 1280x720. J’ai de la détection sur les personnes uniquement.

Je me demande donc si mes 2 TPU Coral prennent bien leur part du travail …

Ma config est ainsi :

Il y a 5 déclarations de caméras qui suivent mais toutes sur le même principe.

Stats Frigate(redémarré à 00:14)

Le monstre que tu as. moi j’ai un petit N100 avec 8 gigas de RAM sous HAOS. (et surtout consomme 10 W ; pour pouvoir le mettre sur UPS de nombreuses heures , en plus du fait que chaque watt supplémentaire, c’est presque 2 euro / ans , et mon N100 à couté 110euro )
j’ai 3 caméras qui me sors du 2304x2592, 1 caméra 1080P et deux caméras UHD

  • Tests avec seulement une caméra, à mon avis tu auras lamême vitesse d’inférence.

  • Met qu’un seul coral
    normalement il devrait déjà être en dessous des 10 ms.

  • et utilise go2rtc ( qui te servira plus tard aussi) qui est maintenant intégré automatiquement avec frigate sous HAOS.

detectors:
  coral:
    type: edgetpu
    device: usb

cameras:
  frigate7:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/Camera_int_SonOff_PTZ_1
          input_args: preset-rtsp-restream
          roles:
            - detect

go2rtc:
  streams:
    Camera_int_SonOff_PTZ_1: rtsp://sonoff:MdP@192.168.1.245:554/av_stream/ch0

  webrtc:
    candidates:
      - 192.168.1.20:8555
      - stun:8555 # if you have dynamic public IP-address

detect:
  enabled: true

Et dans le journal frigate tu doit avoir quelque chose comme ça au démarrage :

2025-09-30 22:19:54.514893844  [2025-10-01 00:19:54] detector.coral                 INFO    : Starting detection process: 463
2025-09-30 22:19:54.516500547  [2025-10-01 00:19:54] frigate.detectors.plugins.edgetpu_tfl INFO    : Attempting to load TPU as pci
2025-09-30 22:19:54.538045768  [2025-10-01 00:19:54] frigate.app                    INFO    : Output process started: 485
2025-09-30 22:19:54.542325199  [2025-10-01 00:19:54] frigate.detectors.plugins.edgetpu_tfl INFO    : TPU found
2025-09-30 22:19:54.547612264  INFO: Created TensorFlow Lite XNNPACK delegate for CPU.

Autant pour moi, je n’avais pas vu tu utilises déjà go2rtc

ALors j’utilise aussi go2rtc. Voici ma conf

go2rtc:
  streams:
    portail:
      rtsp://admin:XXXXXXXXX@192.168.0.14:554/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif
    garage:
      rtsp://admin:XXXXXXX@192.168.0.15:554/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif
    terrasse: rtsp://rtsp_terrasse:XXXX@192.168.0.17:554/stream1 -
      "ffmpeg:terrasse=aac"
    cuisine: rtsp://rtsp_cuisine:XXXXXXX@192.168.0.12:554/stream1r -
      "ffmpeg:cuisine#audio=aac"
    salon: rtsp://rtsp_salon:XXXXXXXXXX@192.168.0.13:554/stream1r 
      "ffmpeg:salon#audio=aac"
    bureau: rtsp://rtsp_bureau:XXXXXXXXXX@192.168.0.16:554/live/stream1 -
      "ffmpeg:bureau#audio=aac"

detect:
  enabled: true
version: 0.16-0

Les logs me donnent ceci :

Type
Horodatage
Balise
Message

info
2025-10-01 00:13:20
startup
Preparing Frigate...
info
2025-10-01 00:13:20
startup
Starting Frigate...
info
2025-10-01 00:13:22
frigate.util.config
Checking if frigate config needs migration...
info
2025-10-01 00:13:22
frigate.util.config
frigate config does not need migration...
warning
2025-10-01 00:13:22
frigate.util.services
Did not detect hwaccel, using a GPU for accelerated video decoding is highly recommended
info
2025-10-01 00:13:22
frigate.app
Starting Frigate (0.16.0-c2f8de9)
info
2025-10-01 00:13:22
peewee_migrate.logs
Starting migrations
info
2025-10-01 00:13:22
peewee_migrate.logs
There is nothing to migrate
info
2025-10-01 00:13:22
frigate.app
Recording process started: 467
info
2025-10-01 00:13:22
frigate.app
Review process started: 474
info
2025-10-01 00:13:22
frigate.app
go2rtc process pid: 115
info
2025-10-01 00:13:22
detector.coral1
Starting detection process: 492
info
2025-10-01 00:13:22
frigate.detectors.plugins.edgetpu_tfl
Attempting to load TPU as usb:0
info
2025-10-01 00:13:22
detector.coral2
Starting detection process: 495
info
2025-10-01 00:13:22
frigate.detectors.plugins.edgetpu_tfl
Attempting to load TPU as usb:1
info
2025-10-01 00:13:22
frigate.app
Output process started: 522
info
2025-10-01 00:13:22
frigate.app
Camera processor started for portail: 548
info
2025-10-01 00:13:22
frigate.app
Camera processor started for garage: 552
info
2025-10-01 00:13:22
frigate.app
Camera processor started for terrasse: 564
info
2025-10-01 00:13:22
frigate.app
Camera processor started for cuisine: 615
info
2025-10-01 00:13:22
frigate.app
Camera processor started for salon: 631
info
2025-10-01 00:13:22
frigate.app
Camera processor started for bureau: 639
info
2025-10-01 00:13:22
frigate.app
Capture process started for portail: 657
info
2025-10-01 00:13:22
frigate.app
Capture process started for garage: 664
info
2025-10-01 00:13:22
frigate.app
Capture process started for terrasse: 679
info
2025-10-01 00:13:22
frigate.app
Capture process started for cuisine: 684
info
2025-10-01 00:13:22
frigate.app
Capture process started for salon: 697
info
2025-10-01 00:13:22
frigate.app
Capture process started for bureau: 705
info
2025-10-01 00:13:22
frigate.api.fastapi_app
Starting FastAPI app
info
2025-10-01 00:13:22
frigate.api.fastapi_app
FastAPI started
info
2025-10-01 00:13:26
frigate.detectors.plugins.edgetpu_tfl
TPU found
unknown
2025-10-01 00:13:26
unknown
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
info
2025-10-01 00:13:27
frigate.detectors.plugins.edgetpu_tfl
TPU found
unknown
2025-10-01 00:13:27
unknown
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.

Tes TPU sont détectés et utilisés. On n’arrive un peu à mes limites de compétences sur frigate. Et je n’y connais rien en machine virtuelle.
Perso, je commencerai par mettre qu’une caméra, voir si ça va mieux, en ajouter jusqu’à voir le moment ou le problème apparaît significativement.
je vois aussi du ffmpeg, qui est sûrement du transcodage ; donc peut-être que ces caméra consomme plus à cause de ça aussi ?

Merci pour tes conseils je vais tenter de repartir d’une config light effectivement déjà pour avoir une base comparable avec tes données puis je tenterai de la gonfler. Bon ce sera pour demain il se fait tard :slight_smile: . Merci encore pour ton aide.

Je n’avais pas vu ce log :

Did not detect hwaccel, using a GPU for accelerated video decoding is highly recommended

Ce n’est pas un problème de TPU, mais un problème d’accélération GPU qui est pas installé (pour ffmeg).
J’avais le même problème quand j’utilisais proxmox : Video Decoding | Frigate
Exemple sur mon N100 :

ffmpeg:
  hwaccel_args: preset-vaapi

Je n’ai effectivement pas de GPU dans mon serveur. Est-ce que cela veut dire qu’il faut que j’ajoute un GPU externe ? Ou parles-tu juste d’une install soft manquante ?

Non il te faut un gpu dédier pour accélérer le transcodage vidéo et avec une telle machine tu dédies ton gpu (celui du cpu suffit) mais tu n’as plus de console locale sur proxmox et dans certains cas ça peut être chiant
Ou tu passes avec un lxc et tu peux partager ton gpu avec l’hôte

Bon ça y est j’ai réussi à avoir un décodage vaapi qui fonctionne pour ffmpeg. Bon c’est pas fou pour le moment mes temps d’inférence sont en gros de 80ms pour 6 caméras en détection 1280x720 avec 2 CORAL TPU. Au moins ça marche…

Tes temps d’inférence sont quand même très haut… c’est bizarre ton histoire.

Je suis sur un serveur à base de i5-13500H/32Go de RAM, Frigate en Docker (je laisse l’OS gerer les ressources) et avec 3 caméras et un TPU Coral en PCI-E je suis a a peine plus de 6ms de temps d’inférence.

(Et je l’ai déjà dis, mais Go2RTC, si vous êtes pas dans les cas où c’est nécessaire [voir la doc Frigate] a part bouffer des ressources ça sert à que dalle)

Je veux bien quelques explications :innocent: j’ai dû rater la discussion où tu en as parlé :relieved_face:

Merci pour ton conseil que je suis actuellement en train de tester. 2 remarques, j’ai cru un instant avoir atteint le graale en voyant des vitesses d’inférence redescendues à 10ms mais c’était sans me rendre compte que la détection pour chaque caméra n’était pas active. En réactivant je reviens à 75ms en ayant tenté de ne pas utiliser Go2RTC. Je dis en tentant car dans les nouvelles versions de Frigate Go2RTC est systématiquement activé donc la seule chose qu’on puisse faire c’est d’utiliser dans la définition le flux RTSP directement (mais Go2RTC fonctionne tout de même). Ou alors y a -t-il un moyen de ne pas faire tourner Go2RTC ? Du coup également est-ce que vous tous qui avez des vitesses d’inférence de 10ms vous avez bien la détection active pour toutes les cameras ?

Oui détection sur toutes les caméras. Par contre faut pas activer la détection sur le flux en HD, faut soit utiliser un flux avec une définition plus faible, soit faire mouliner Go2RTC pour créer un flux secondaire avec une définition plus basse juste pour la détection.

perso, j’utilise les résolutions maximum sur un petit N100, et mes inférences sont pourtant inférieures à 10 ms.

Ce sujet a été automatiquement fermé après 60 jours. Aucune réponse n’est permise dorénavant.