J’ai 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.

Jusqu’à présent dans le monde des processeurs on connaissait les CPU et les GPU, il existe maintenant aussi les TPU. TPU pour Tensor Processing Unit est une unité de calcul spécifique pour pouvoir exploiter la bibliothèque opensource TensorFlow qui est utilisée dans le monde de l’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. 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 cette page recense les principaux moteurs, mais tous ne bénéficient 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, 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 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 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. 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 des ressources système l’attestent.


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.
Ayant poussé assez loin sa configuration j’ai créé sur mon site Funix une page dédiée. On y retrouvera également une page sur ZoneMinder et une autre pour tout l’aspect hardware, installation des caméras et de la clé Google Coral.