EdgeFlow - framework distribuído de processamento de vídeo em tempo real com escalabilidade horizontal
(github.com/seolgugu)É um framework baseado em k3s criado para viabilizar o processamento de vídeo em alto FPS em dispositivos de baixo desempenho, como o Raspberry Pi.
A escalabilidade horizontal foi implementada distribuindo quadros de vídeo contínuos para vários nós de processamento via Redis e reunindo os resultados novamente depois.
Na prática, foi confirmado que a velocidade de execução do YOLOv5, que era de apenas 4 fps em um único Raspberry Pi 4B, aumentou linearmente até 16–17 fps quando distribuída entre 4 nós.
O sistema é composto por um Producer, que gera os quadros, um Consumer, responsável pelo processamento, e um Gateway, que reúne e exibe os resultados.
O Gateway pode ter sua interface trocada livremente para se expandir para vários sistemas, e o Redis, que atua como broker intermediário, também foi estruturado para permitir customização com outros protocolos.
Principais características
- Comando
edgeflow: com um único comando, faz de uma vez o build da imagem, o push e o deploy no cluster k3s. - Pipeline intuitivo: é possível montar o pipeline de forma intuitiva com a sintaxe
link().to(). - Gerenciamento flexível: cada nó pode ter dependências gerenciadas de forma independente e, se não houver mudanças nas dependências, o código pode ser aplicado imediatamente ao pod em execução sem rebuild.
- Garantia de ordem: para resolver o problema de embaralhamento na ordem dos quadros durante o processamento distribuído, foi incorporado um Jitter Buffer ao Gateway.
- Teste local: mesmo sem um cluster Kubernetes, é possível reproduzir o pipeline em ambiente local usando multiprocessos.
Status do progresso
Na fase de protótipo, foi possível trazer com sucesso uma câmera real do Raspberry Pi diretamente para dentro de um pod, e atualmente a implementação está em andamento para reproduzir esse recurso de forma estável no framework.
Atualmente, o projeto está sendo aprimorado para integrar vários sistemas. Ainda há muitos pontos a melhorar, mas qualquer feedback sobre sistemas distribuídos ou sobre o design de pipelines de processamento de vídeo seria de enorme ajuda para o aprendizado. Obrigado pela leitura.
Mais detalhes ou um tutorial rápido podem ser encontrados no link abaixo.
Github: https://github.com/seolgugu/edgeflow
Ainda não há comentários.