EdgeFlow - framework distribué de traitement vidéo en temps réel extensible horizontalement
(github.com/seolgugu)Il s’agit d’un framework basé sur k3s, conçu pour réaliser du traitement vidéo à fps élevé sur des appareils peu puissants comme le Raspberry Pi.
L’extensibilité horizontale est mise en œuvre en distribuant des trames vidéo consécutives à plusieurs nœuds de traitement via Redis, puis en les regroupant ensuite.
En pratique, nous avons confirmé que la vitesse d’exécution de YOLOv5, limitée à seulement 4 fps sur un seul Raspberry Pi 4B, augmentait linéairement jusqu’à 16–17 fps lorsqu’elle était répartie sur 4 nœuds.
Le système se compose d’un Producer qui génère les trames, d’un Consumer chargé du traitement, et d’un Gateway qui agrège et affiche les résultats.
Le Gateway peut être étendu à plusieurs systèmes en remplaçant librement l’interface, et Redis, qui joue le rôle de broker intermédiaire, est lui aussi conçu pour pouvoir être personnalisé avec d’autres protocoles.
Caractéristiques principales
- commande edgeflow : avec une seule commande, la construction d’image, le push et le déploiement sur un cluster k3s sont effectués d’un seul coup.
- pipeline intuitif : la syntaxe
link().to()permet de composer le pipeline de manière intuitive. - gestion flexible : il est possible de gérer les dépendances indépendamment pour chaque nœud et, s’il n’y a pas de changement de dépendances, d’appliquer immédiatement le code à un pod en cours d’exécution sans rebuild.
- garantie de l’ordre : pour résoudre le problème de désordre des trames lors du traitement distribué, un Jitter Buffer est intégré au Gateway.
- tests en local : même sans cluster Kubernetes, il est possible de reproduire le pipeline en environnement local via une approche multi-processus.
État d’avancement
Au stade du prototype, nous avons réussi à faire remonter directement une véritable caméra Raspberry Pi à l’intérieur d’un pod, et nous travaillons actuellement à reproduire cette fonctionnalité de manière stable dans le framework.
Nous faisons actuellement évoluer le projet pour interconnecter plusieurs systèmes. Il reste encore beaucoup de points à améliorer, mais tout retour sur les systèmes distribués ou sur la conception de pipelines de traitement vidéo serait pour moi extrêmement enrichissant. Merci de votre lecture.
Vous trouverez plus de détails et un tutoriel rapide via le lien ci-dessous.
Github: https://github.com/seolgugu/edgeflow
Aucun commentaire pour le moment.