Journal Intégration d'une clé USB accélérateur Coral Edge TPU sous ZoneMinder et Frigate

8
1
nov.
2025

'lut les moules,

Je prends le risque de me faire moinser pour faire le panégyrique d'un outil Google, de modèles de détection d'image chinois, mais le monde n'est pas aussi binaire et même le diable incarné peut contribuer à sa manière aux logiciels libres et permettre au plus grand nombre d'accéder au développement d'outils basés sur l'IA.

J’ai donc investi dans une clé USB accélérateur Google Coral Edge TPU pour moins d’une centaine d’euros sur un célèbre site de vente en ligne. Cette clé est destinée à booster mon système personnel de vidéosurveillance aujourd’hui basé sur ZoneMinder avec un périphérique entièrement dédié aux tâches de détection d'objet coûteuses en ressource car faisant tourner des modèles de détection pré-entraînés Yolo (qui vous noterez sont placés sous licence libre).
Sur la photo ci-dessous on peut voir la clé connectée à mon serveur basse consommation Lenovo M92p.

Titre de l'image

Cette clé est un TPU pour Tensor Processing Unit, c'est une unité de calcul spécifique qui vient compléter des CPU et GPU pour faire tourner un moteur d'IA pour l’apprentissage automatique, les réseaux de neurones et les calculs numériques généraux sur CPU, GPU, cluster de GPU et TPU donc. Elle utilise le moteur d'IA TensorFlow, opensource lui aussi. Pour la petite histoire tensor, ou tenseur en français, est le nom générique pour les structures de données utilisées pour l’apprentissage automatique. Le tout est développé par Google au sein de la division dédiée à l’IA Google AI. TensorFlow n’est pas le seul moteur d’IA, pour s’en convaincre wikipedia a recensé dans cette page les principaux moteurs, mais tous ne bénéficient pas d’une puce dédiée. L’avantage du TPU de Google est qu’il se base sur des bibliothèques libres qui ont favorisé son développement et l’ont popularisé, couplé à un coût abordable qui permet de booster un PC quelconque à moindre frais. En terme de performance, il faut savoir qu’un TPU peut être 15 à 20 fois plus performant qu’un CPU ou GPU pour des tâches d’apprentissage automatique (cf. réf).

L’installation est prévue pour les distributions Debian et Debian like comme Ubuntu comme on peut le voir sur la page officielle et il n’y a pas plus d’indications pour les autres distributions notamment celles basée sur RPM comme ma Mageia. Trois bibliothèques sont nécessaires à l’utilisation de la clé, TensorFlow évoquée plus haut, libedgetpu pour piloter les périphériques Coral et PyCoral, une bibliothèque API Python pour exploiter TensorFlow sur des périphériques Coral. A défaut de packages précompilés pour ma distribution, je suis parti dans la compilation des bibliothèques. Encore une fois je me suis fait assister par ChatGPT, mais alors qu’il m’a été d’un grand secours pour rédiger des scripts pour adresser une caméra IP dont l’adresse change régulièrement comme je l'avais évoqué ici dans un précédent journal, il m’a totalement perdu. Il m’a envoyé sur un tas de chemins de traverse, souvent contradictoires entre eux, sur la base d’informations obsolètes, incomplètes voire fausses, sans prendre en compte forcément le travail déjà réalisé. Il pouvait dire tout et son contraire en deux questions, pour prendre un exemple une fois il va me dire qu’il faut une version de Bazel supérieure à 8 et deux questions plus loin il faut une version inférieure à 7 ! Il y a souvent aucune logique dans l’enchaînement des réponses alors que j’avais l’impression de rester sur mon cheminement de raisonnement logique. Au final j’ai perdu un temps considérable à exploiter chacune des pistes, finalement j’ai arrêté les frais, pris du recul et j’y suis allé au feeling à l’ancienne, j’ai réussi à compiler TensorFlow et libedgetpu plus ou moins laborieusement car il est nécessaire de faire coïncider les versions pour que ça fonctionne et j’ai trouvé sur le net des packages fonctionnels pour PyCoral compatible avec Python 3.10 de ma distribution que quelqu’un a bien voulu partager. Tout cela est expliqué sur cette page.

Il en reste pas moins que l’installation de cette clé n’est pas la finalité, il me restait à voir ce qu’elle apporte à ZoneMinder. Le gain principal est clairement au niveau des performances, lors de la détection d’évènement la charge du CPU montait en flèche et avec le TPU ça passe crème. Pour ce qui est la reconnaissances des objets, j’ai toujours galéré à trouver les bons réglages avec ZoneMinder qui est quand même de ce côté une bonne usine à gaz et je n’ai pas pris le recul suffisant pour estimer le gain car j’ai immédiatement saisi l’opportunité de tester son concurrent libre Frigate.

Jusqu’à présent je n’avais pas été plus loin dans les tests et l’utilisation de Frigate car il était en l’état inutilisable avec un simple CPU. Mais avec la clé, c’est le jour et la nuit comme les deux copies d’écran ci-dessous des ressources système l’attestent, avec CPU seul puis avec le TPU.

Titre de l'image

Titre de l'image

Frigate est enfin utilisable et se révèle d’une facilité déconcertante pour la configuration, les réglages et l’utilisation. Ça n’a rien à voir avec ZoneMinder qui est peu convivial et d’une complexité déroutante. Frigate est aujourd’hui en phase de test pour piloter mon système de vidéosurveillance et est bien parti pour le rester. En complément on pourra consulter cette page de l’excellent site haade consacré à la domotique qui présente l’installation simplissime de Frigate sous Debian et qui évoque les performances du Google Coral en terme d’inférence qui est un indicateur de la capacité d’apprentissage d’un moteur d’IA.

Pour finir et revenir à d'autres exemples d'utilisation d'un TPU, l'intérêt de cet écosystème libre et de périphériques bas coût associés est qu'il permet l'éclosion d'un tas de projets, j'ai retenu ces deux liens :
- intégration sur un raspberry en utilisant Yolo v11
- DIY d'un petit robot piloté par un raspberry et TPU, vidéo par

  • # Intégration dans le CPU

    Posté par  (site web personnel) . Évalué à 5 (+3/-0).

    Quand je vois la taille de l'objet et que tout passe par USB, je me dis que cela va rapidement intégrer le coeur des CPU.

    Cela me rappelle l'intégration d'AES dans les CPU il y a une quinzaine d'année (ajout d'instructions dédiées). Avant, chiffrer un poste ou faire un transfert avec SSH se sentait en terme de CPU / débit. De nos jours, le chiffrement AES est quasi transparent.

    • [^] # Re: Intégration dans le CPU

      Posté par  . Évalué à 2 (+0/-0).

      Les processeurs récents intègrent bien des accélérateurs d'inférence.

      D'une part pour répondre au besoin de Microsoft "Copilot+" (40+ TOPS), ça inclue:
      * AMD Ryzen AI 300 series (50-55 TOPS)
      * Intel Core Ultra 200 series (à priori plutôt entre 19 et 36 TOPS)
      * Snapdragon X (45 TOPS)

      Des processeurs précédents incluaient déjà des accélérateurs, mais sans atteindre 40 TOPS:
      * Ryzen 8040 series (16 TOPS)
      * Intel Meteor Lake / Arrow Lake (11-13 TOPS)

      (En comparaison le Coral USB Accelerator a une performance de 4 TOPS)

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.