|Open WebRTC Toolkit实时视频分析系统( 三 )


其中的pipeline构建用户可以自行定制 , 选择去掉某些步骤重新组合处理流程 。

|Open WebRTC Toolkit实时视频分析系统
本文插图

如果有一个分析任务 , 在OWT中如何实现的呢?
开发者可以使用OWT提供的接口 , 通过将不同功能的GStreamer plugin组合来实现一个特定分析任务的pipeline 。 一个分析任务最后被编译成一个动态库 , 在配置文件里配置算法号以及动态库名来对应分析任务 , 配置好之后用户通过restful请求开始分析任务时指定相应的算法号以及要分析的流 , OWT就会对指定的流进行指定的分析 。
若用户想要多个算法分析 , 只需要构建多个不同的pipeline , 再编译成不同的动态库文件 , 并在配置文件里指定不同的算法号即可在OWT中实现多个算法分析 。
对于这一部分的使用说明 , 在Webrtc hack网站(网址https://webrtchacks.com/accelerated-computer-vision-inside-a-webrtc-media-server-with-intel-owt/)上有一篇比较详尽的文章 , 可以进行查阅学习 。

|Open WebRTC Toolkit实时视频分析系统
本文插图

整个OWT系统演进了很多年 , 在资源调度方面进行了很多处理 , OWT支持依据CPU , GPU , VPU资源使用情况进行任务调度 。 当部署在多台机器以及多种计算资源的环境下 , OWT会收集各个节点上的CPU , GPU以及VPU使用情况 , 将新来的分析任务根据调度策略分配到相应的节点进行工作 。 我们提供了几种常用的调度策略 , 用户可根据实际部署情况对各个模块单独配置不同的策略 。

|Open WebRTC Toolkit实时视频分析系统
本文插图

对于HA , 当Analytics处于正常状态 , IP摄像机的流导入 , 通过图中最上端一路流程进行录像 。 分析任务正在进行时 , 突然出现故障 , 这时可以被Session Control检测到, 。 Session Control发现可用节点 , 将可用节点激活 , 再将正在分析的流导入该分析节点 , 继续被中断的分析任务 , 再传输到Recording节点进行录像 。 这样就可以在实际场景中实现高可用的过程 。
总结
【|Open WebRTC Toolkit实时视频分析系统】
|Open WebRTC Toolkit实时视频分析系统
本文插图

整体方案中分析部分是基于深度学习的方式与OWT相结合 , OWT使用GStreamer pipeline简化实时视频分析过程 , 开发者可以方便地通过组合GStreamer plugin来实现不同的实时分析任务 。 同时 , OWT利用OpenVINO以及OWT本身的调度机制来充分利用计算资源 , 从而提升整体性能 。 OWT支持分布式部署 , 各个功能模块可以快速方便地进行扩展 。 再加上OWT提供的HA机制 , 可以保证实时视频分析系统的稳健运行 。
英特尔一直在致力于Visual cloud、Computing等基于IA平台的发展 , 同时也提供了很多开源资源 , 例如Open VINO、OWT 在GitHub上有相应的开源项目 。 同时英特尔在客户端也有一些AI的方案 , 例如WebNN等 , 未来也将在浏览器上落地 , 敬请期待 。


推荐阅读