[Frigate] Retex Intel NPU + YoloV9 & Carte de clips en scrolling

Bonjour à tous,

J'écris ce post pour vous faire un retour d'expérience de l'utilisation d'un NPU Intel avec Frigate, et celle du modèle YoloV9. Depuis la version 18.1 de HAOS et l'ajout des drivers, nous avons accès au NPU de Intel et donc j'ai voulu tester tout ça.

Avant toute chose la config de test :

  • HAOS installé sur un Dell Micro (Ultra Core 235T et 16Go de RAM) très largement surdimensionné mais récupéré à très bon prix donc autant l'utiliser
  • Frigate installé en add on directement dans HAOS (version Full Access)
  • 6 caméras avec enregistrement en 4K uniquement sur détection, et détection sur flux 720p/5fps
  • Modèle tester YoloV9 taille M 320x320, donc pas le moins gourmand

Voici une capture d'écran synthétique du monitoring côté Frigate :

Les résultats sont plutôt convainquant après 1 mois en prod dans mon usage.
La vitesse d'inférence est stable autour de 20ms donc confortable pour mes 6 caméras, au vu du modèle utilisé.
La charge iGPU varie en fonction des détections/enregistrements mais reste sous les 40/50% en pic généralement. Idem pour la charge du NPU qui varie mais reste sous les 60% en pic. Ces résultats sont à prendre avec des pincettes car valable dans mon environnement.

Le modèle YoloV9 M 320x320 est lui aussi convainquant, les détections se font très bien et je n'ai remarqué aucun faux positif, ou faux négatif même si plus difficile à tester.

Enfin, je me suis amusé (enfin Claude...) à créer une carte pour visionner les clips enregistrés par Frigate, directement depuis le dashboard, avec une logique de filtres et un système de scrolling pour naviguer parmi les clips, voici un aperçu :

Cliquer sur un clip ouvre le lecteur dans une pop-up avec la possibilité de le télécharger.
Je peux vous partager le JS de la carte si certains sont intéressés (installation manuelle).

Voilà, pour ceux qui ont accès à un NPU Intel n'hésitez pas à l'utiliser pour Frigate ça fonctionne plutôt bien !

Salut, merci pour le test. J'utilise plutôt l’igpu à ce stade et ça marche bien. En revanche sur les captures, je vois que les deux bossent : le npu et l’igpu . Je croyais que c'était l'un ou l'autre. Du coup je me trompe depuis un moment... ou alors tu as mis le npu que sur quelques flux et pas tous?

Si je me trompe sur toute la ligne, comment faire pour faire travailler les deux en même temps ?

Bonjour @faiseurdepluie,

Alors oui iGPU et NPU travaillent tous les deux mais chacun sur des tâches bien distinctes :

  • L'iGPU traite la gestion des flux vidéos grâce a l'accélération matérielle (décodage/encodage... etc.)
  • Le NPU quand à lui gère l'aspect détection avec l'utilisation du modèle sélectionné

Avant la prise en charge des NPU Intel par HAOS je fonctionnais comme toi, l'iGPU gérait tout cela. Mais maintenant que les NPU sont exploitables, ça permet de mieux répartir la charge et peut améliorer les performances/consommations. Ce qui m'a permis, entre autre, d'utiliser un modèle YoloV9 plus exigeant.

Pour faire fonctionner les deux de concert, tu dois déclarer dans ton fichier de config :

  • le paramétrage d'accélération matériel adapté VAAPI ou Quick Sync (hwaccel_args:)
  • et déclarer le NPU dans la partie detectors: avec le modèle voulu