EdgeFlow – horizontal skalierbares Framework für verteilte Echtzeit-Videoverarbeitung
(github.com/seolgugu)Dies ist ein auf k3s basierendes Framework, das entwickelt wurde, um Videoverarbeitung mit hoher fps auf leistungsschwachen Geräten wie dem Raspberry Pi zu ermöglichen.
Fortlaufende Videoframes werden über Redis auf mehrere Verarbeitungs-Knoten verteilt und anschließend wieder zusammengeführt, wodurch horizontale Skalierung umgesetzt wird.
Tatsächlich zeigte sich, dass sich die Ausführungsgeschwindigkeit von YOLOv5, die auf einem einzelnen Raspberry Pi 4B nur 4fps erreichte, bei Verteilung auf 4 Knoten linear auf 16–17fps erhöhte.
Das System besteht aus einem Producer, der Frames erzeugt, einem Consumer für die Verarbeitung sowie einem Gateway, das die Ergebnisse sammelt und anzeigt.
Das Gateway kann durch freien Austausch der Schnittstelle auf verschiedene Systeme erweitert werden, und auch Redis, das die Rolle eines zwischengeschalteten Brokers übernimmt, ist so aufgebaut, dass es auf andere Protokolle angepasst werden kann.
Hauptmerkmale
- edgeflow-Befehl: Mit einem einzigen Befehl werden Image-Build, Push und Deployment in ein k3s-Cluster in einem Schritt ausgeführt.
- Intuitive Pipeline: Mit der
link().to()-Syntax lässt sich eine Pipeline intuitiv aufbauen. - Flexible Verwaltung: Abhängigkeiten können für jeden Knoten separat verwaltet werden; wenn sich Abhängigkeiten nicht ändern, kann Code ohne Rebuild sofort in laufende Pods übernommen werden.
- Reihenfolgegarantie: Um das bei verteilter Verarbeitung auftretende Problem durcheinandergeratener Frame-Reihenfolgen zu lösen, ist im Gateway ein Jitter Buffer integriert.
- Lokale Tests: Auch ohne Kubernetes-Cluster kann die Pipeline lokal per Multi-Prozess-Ansatz reproduziert werden.
Aktueller Stand
In der Prototyp-Phase ist es gelungen, eine echte Raspberry-Pi-Kamera direkt in einen Pod einzubinden; derzeit läuft die Implementierung, um diese Funktion im Framework stabil reproduzierbar zu machen.
Derzeit wird das Projekt weiter ausgebaut, um mehrere Systeme miteinander zu verbinden. Es gibt noch viele Verbesserungsmöglichkeiten, aber jedes Feedback zu verteilten Systemen oder zum Entwurf von Videoverarbeitungs-Pipelines wäre für mich eine große Hilfe beim Lernen. Vielen Dank fürs Lesen.
Weitere Details und ein schnelles Tutorial finden Sie unter dem folgenden Link.
Github: https://github.com/seolgugu/edgeflow
Noch keine Kommentare.