借助Intel OWT加速WebRTC媒体服务器内部的计算机视觉(一)

WebRTC让我们能方便地获取和发送实时视频流(大多数情况下)。 下一步是利用它们进行其他操作,比如机器学习就可以让我们从视频流中找点乐子。上个月,我向大家展示了如何在本地浏览器中运行Computer Vision(CV)。那时我曾提到过:本地运行操作很不错,但是有时你可能需要更高的性能,所以你要在远程服务器上运行机器学习推理。 本篇文章中,我会介绍如何使用英特尔的开源Open WebRTC工具包(OWT),在英特尔芯片组上通过硬件加速在服务器端运行OpenCV模型。

注:英特尔赞助了本文。自OWT服务器的工作人员在Kranky Geek上演示了某些CV功能以后,我一直想试试操作它。这次,我终于有机会能与与他们的开发团队合作探索其功能了。 下面,我会分享一些OWT的背景知识,以及如何在本地安装OWT,进行快速测试。然后我会展示一些模型。

打开WebRTC工具包(OWT)

2014年左右,英特尔推出了针对WebRTC的英特尔®协作套件。该套件由服务器和客户端SDK组成,旨在利用英特尔硬件的硬件。英特尔一直在扩展这一软件系列,增加并提高其功能。后来,在2018年,英特尔在Open WebRTC Toolkit(OWT)品牌下,开源了整个项目。 英特尔仍会提供WebRTC协作套件。官方称,新旧项目唯一的不同点在于添加了额外的英特尔QA(对于商业支持的开源项目来说,这种情况并不罕见)。出于本文的目的,我们会将重点放在开源OWT上1。

你可以在https://01.org/open-webrtc-toolkit中找到有关OWT的网页。

作用

OWT除了是一种更典型的选择性转发单元(SFU)模型之外,该媒体服务器还可以是一个多点控制单元(MCU)。该单元,可以解码媒体,处理、重新编码,然后再将媒体发送回客户端。英特尔的OWT独树一帜,成为具有以下功能的实时媒体处理器:

  1. 多人会议:SFU已被证实是WebRTC会议的主要架构,但是在客户端处理受限(比如IoT设备)的情况下,或在其与以下几种情况结合使用时,我们仍需要使用MCU;
  2. 转码:MCU有助于在不同编解码器之间进行转码,尤其是在处理密集型视频编解码器时;3. 实时流传输:使用流传输协议(例如RTSP、RTMP、HLS、MPEG-DASH)向非WebRTC客户端发送视频反馈时;
  3. 记录:以所需的格式将流存储到磁盘;
  4. SIP网关:将WebRTC流和信令转换为版本较低的VoIP网络可以使用的格式;
  5. 分析:在计算机视觉等媒体上运行机器学习负载。

该服务器基于node.js运行。MongoDB用于数据库,RabbitMQ作为消息代理。上述列举的项目和其他项目的功能是作为插入OWT体系结构的各种不同的代理实现的。

OWT还包括用于与媒体服务器进行交互的客户端SDK。也可以在P2P模式下使用。

加速

该架构旨在利用英特尔硬件,包括最先进的英特尔CPU,以及带有集成显卡、FPGA和英特尔专用计算机视觉处理单元(VPU)的CPU的更快加速项目。(想获取更多信息,可以参阅我通过Google的Vision Kit利用一枚Movidius芯片进行的项目)。

文章地址:https://webrtchacks.com/accelerated-computer-vision-inside-a-webrtc-media-server-with-intel-owt/

原文作者:chad hart

 

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营