Show GN: EdgeFlow - 수평 확장 가능한 실시간 영상 분산 처리 프레임워크
(github.com/seolgugu)라즈베리파이와 같은 저성능 기기에서 고fps 영상 처리를 구현하기 위해 만든 k3s 기반의 프레임워크입니다.
연속된 영상 프레임들을 Redis를 통해 여러 처리 노드로 분산시킨 뒤 다시 취합하는 방식으로 수평 확장을 구현했습니다.
실제로 라즈베리파이 4B 한 대에서 4fps에 불과했던 YOLOv5 구동 속도가 4대의 노드로 분산했을 때 16~17fps까지 선형적으로 증가하는 것을 확인했습니다.
시스템은 프레임을 생성하는 Producer, 처리를 담당하는 Consumer, 그리고 결과를 취합해서 보여주는 Gateway로 구성됩니다.
Gateway는 인터페이스를 자유롭게 교체하여 여러 시스템으로 확장할 수 있으며, 중간 브로커(Broker) 역할을 하는 Redis 역시 다른 프로토콜로 커스텀이 가능한 구조입니다.
주요 특징
- edgeflow 명령: 명령어 하나로 k3s 클러스터에 이미지 빌드, 푸시, 배포까지 한 번에 처리합니다.
-
직관적인 파이프라인:
link().to()문법을 통해 파이프라인을 직관적으로 구성할 수 있습니다. - 유연한 관리: 각 노드별 독립적인 의존성 관리가 가능하며, 의존성 변경이 없다면 리빌드 없이 실행 중인 파드에 코드를 즉시 반영할 수 있습니다.
- 순서 보장: 분산 처리 시 발생하는 프레임 순서 뒤섞임 문제를 해결하기 위해 Gateway에 Jitter Buffer를 내장했습니다.
- 로컬 테스트: 쿠버네티스 클러스터가 없더라도 로컬 환경에서 멀티 프로세스 방식으로 파이프라인을 재현할 수 있습니다.
진행 상황
프로토타입 단계에서 실제 라즈베리파이 카메라를 파드 내부로 직접 끌어오는데 성공했으며, 현재 이 기능을 프레임워크 상에서 안정적으로 재현하기 위해 구현을 진행중입니다.
현재 여러 시스템을 엮기 위해 프로젝트를 고도화하고 있습니다. 아직 부족한 점이 많지만, 분산 시스템이나 영상 처리 파이프라인 설계에 대해 어떤 피드백이든 주신다면 정말 큰 공부가 될 것 같습니다. 읽어주셔서 감사합니다.
자세한 내용이나 빠른 튜토리얼은 아래 링크에서 확인하실 수 있습니다.
Github: https://github.com/seolgugu/edgeflow