videoflow/videoflow

Python framework that facilitates the quick development of complex video analysis applications and other series-processing based applications in a multiprocessing environment.

解决的问题

Videoflow 是一个用于构建分布式视频和流处理管道的框架。开发者只需定义一次处理图(有向无环图或 DAG),即可在本地进行开发,或在 Kubernetes 上用于生产环境,无需更改代码。

工作原理

用户将管道描述为一系列生产者、处理器和消费者。图中的每个节点作为独立的工作进程运行(本地为子进程,Kubernetes 上为 Pod),并通过 NATS JetStream 消息代理进行通信。每个节点将其输出发布到特定的代理主题,并订阅其父节点的主题以重新组装输入。为了处理加载 ML 模型等昂贵的初始化操作,节点使用 open() 方法而非构造函数。

适用人群

专为需要扩展性、GPU 调度以及在分布式环境中运行复杂处理链的高吞吐量视频分析管道的开发者设计。

主要亮点

  • 双执行模式:无需更改代码,即可在本地作为子进程运行,或在 Kubernetes 上作为容器运行相同的管道。
  • 分布式架构:使用 NATS JetStream 进行通信,使用 Redis 存储数据负载。
  • C 级扩展:支持节点级扩展、GPU 调度以及在 Kubernetes 上的自动扩展。
  • 语言无关:只要组件以容器镜像形式发布,即可使用任何语言编写。
  • 内置视觉组件:包含开箱即用的对象检测、跟踪、姿态估计和分割组件。
  • 健壮的错误处理:支持毒消息的死信队列(DLQ)和崩溃节点的自动重启。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目