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

分析与计算机视觉(CV)

任何从事计算机视觉领域的人一定都用过OpenCV。OpenCV是英特尔项目。英特尔有一个叫做OpenVINO(开放式视觉推理和神经网络优化)的工具包,用来在他们自己的硬件上优化深度学习模型。该工具包是OpenCV存储库的一部分。OpenCV包括数十种预训练过的模型,适用于多种项目,比如基本文本识别、自动驾驶汽车应用等。

OWT Analytics Agent是在OpenVINO模型上实时运行推理的模块。运行之后,Analytics Agent可以将推理元数据发送到云目的地。或者你也可以把该数据路由回媒体服务器,进行实时视频注释(这一点我稍后会说明)。GStreamer库应用广泛,可用于控制媒体频道。

结构

上图来自《Analytics Server Guide readme》,它看起来很复杂。但实际上,Analytics Agent就像参会的一员,可以订阅该会议中的视频推送。一旦Analytics Agent获得该视频流,你就可以使用GStreamer频道,指导该视频流各个阶段的处理。多数情况下,你需要先进行推理和分类,然后再将视频推送发回到MCU。你也可以把视频流和(或)推理数据发送到其他地方。

使用Docker设置

安装设置需要一些时间。因为你需要安装OWT服务器和Analytics Agent。好在他们有Docker build instructions来简化安装。如果你喜欢分布式环境,也可以将OWT + Analytics Agent作为4个独立容器运行。我选择将所有本地的数据挖掘都放在一个容器中,是为了简化评估。

实际上,英特尔最初给了我gst-owt-all:run映像加以改进。因为在我撰写本文时,他们正处于更新其Analytics Agent安装文档的过程中。新的设置更加清楚明了。我仍然建议你先熟悉下标准OWT安装,以便了解组件和选项。

另外,gcc编译版本很多。请确保你有最新版本——brew install gcc

一开始,我的安装过程在编译这一步就卡住了。但在我完成上述操作后,一切就正常了。

最终我自己完成了所有工作。如果你想使用Analytics构建单个OWT服务器,请运行以下指令:

git clone https://github.com/open-webrtc-toolkit/owt-server.git
 
cd owt-server
git branch gst-analytics
cd /owt-server/docker/gst
curl -o l_openvino_toolkit_p_2019.3.334.tgz http://registrationcenter-download.intel.com/akdlm/irc_nas/15944/l_openvino_toolkit_p_2019.3.334.tgz
http://registrationcenter-download.intel.com/akdlm/irc_nas/15944/l_openvino_toolkit_p_2019.3.334.tgz
docker build --target owt-run-all -t gst-owt-all:run \
  --build-arg http_proxy=${HTTP_PROXY} \
  --build-arg https_proxy=${HTTPS_PROXY} \
  .

在设置核心OWT服务器和Google Analytics服务后,你需要从OpenCV Open Model Zoo中下载所需的模型,构建分析频道以使用它们。所包含的样本仅涉及在bash中运行构建器命令,复制一些文件。

验证是否可在macOS上运行

配置Docker端口

docker的–net = host选项不能在macOS上运行。要想在本地运行,你要确保打开相应的端口:

启动docker

我用以下方法设置容器:

docker run -p 8080:8080 -p 3004:3004  -p 30000-30050:30000-30050/udp --name owtwebrtchacks --privileged -tid gst-owt-all:run bash

编辑默认OWT配置以在macOS上本地运行

之后,你需要编辑webrtc_agent / agent.toml文件以识别这些端口。

docker start owtwebrtchacks
docker exec -it owtwebrtchacks bash
vi /home/owt/webrtc_agent/agent.toml

将0acf7c0560d8替换为容器名称或ID。然后更改以下内容:

然后,你需要通知门户网站显示浏览器“ localhost”,而不是内部Docker IP桥(即172.17.0.2):

vi /home/owt/portal/portal.toml

同样,如果你在其他平台上使用–net = host启动容器,就应该能够使用默认配置。

运行服务器

现在你可以启动服务器

./home/start.sh

你可能会看到一些错误,例如:

2020-03-31T01:47:20.814+0000 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:251:13
@(connect):1:21
exception: connect failed

只要最终你可以连接,这些错误就无关紧要。如果你看到以下内容,就能知道它正在运行:

starting app, stdout -> /home/owt/logs/app.stdout
0 rooms in this service.
Created room: 5e82a13b402df00313685e3a
sampleRoom Id: 5e82a13b402df00313685e3a

在浏览器中测试

之后,你可以在电脑本地的浏览器中加载https:// localhost:3004 /。你的浏览器可能会拦截该证书,你需要允许该操作。

另外,你还需要允许在localhost:8080上使用websocket服务器。可以通过单击“Click this for testing certificate and refresh”链接来执行此操作。您也可以在chrome://flags中设置#allow-insecure-localhost,以避免Chrome上的标志问题。

完成此操作后,返回https://localhost:3004/,接受摄像头许可。在此处,从“视频来源”下拉列表中选择您的视频推送ID,然后单击“ startAnalytics”。

最后,转到“订阅视频”下拉列表,选择较长的管道+视频ID字符串,然后单击“订阅”:

这时,你就可以从服务器看到渲染过的面部检测了。

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

原文作者:chad hart

 

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

WebRTC 中文社区由

运营