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

整合OpenCV模型

Analytics Agent整合了OpenCV GStreamer Analytics(GVA)插件架构。GVA包括各种支持不同推理方案的模块,例如检测、分类和标识,以及用于向用户发送视频(这种情况指返回OWT)的输入和输出模块,提供图像覆盖或通过mqtt传输数据。

流水线操作

实际上,这些管道是通过修改某些C ++代码来实现的。比如若我们检查

/home/owt/analytics_agent/plugins/samples/cpu_pipeline/mypipeline.cc,我们可以看到各种管道元素:

source = gst_element_factory_make("appsrc", "appsource");
 h264parse = gst_element_factory_make("h264parse","parse");
 decodebin = gst_element_factory_make("avdec_h264","decode");
 postproc = gst_element_factory_make("videoconvert","postproc");
 detect = gst_element_factory_make("gvadetect","detect");
 classify = gst_element_factory_make("gvaclassify","classify");
 watermark = gst_element_factory_make("gvawatermark","rate");
 converter = gst_element_factory_make("videoconvert","convert");
 encoder = gst_element_factory_make("x264enc","encoder");
 outsink = gst_element_factory_make("appsink","appsink");x

这些管道都按顺序放置:

gst_bin_add_many(GST_BIN (pipeline), source,decodebin,watermark,postproc,h264parse,detect,classify,converter, encoder,outsink, NULL);

如果你想更改其中任一元素,就需要重新编译管道:

./home/owt/analytics_agent/plugins/samples/build_samples.sh

然后,只需将已编译的库复制到/ home / pet / analytics agent / lib /中使用的当前库即可。

获取其他模型

GitHub上的OpenCV Open Model Zoo中有大量模型。除了有流行的全部公共CV模型,如mobilenet、resnet、squeezenet、vgg之外,英特尔还有一套包括多种模型的工具,可用于物体检测,自动驾驶车辆和处理人为行为:

详细信息可点击此处

将模型添加到OWT Analytics Agent

添加这些内容需要先克隆存储库,然后使用Open Model Zoo Downloader工具获取适当的模型。之后你需要确保自己的管道中含有适当的内容(分类、检测、识别等),并使用适当的参数调整/home/owt/analytics_agent/plugin.cfg文件。

插件测试

我试用了面部标志和情绪检测模型。

面部标志

由于我一直在进行摸脸测试,所以我决定检查一下facial-landmarks-35-adas-0002模型。 该模型能检测35个面部标志。(示例如下)

https://ltwus2ix28x10gixx34jeigv-wpengine.netdna-ssl.com/wp-content/uploads/2020/04/facial-landmarks-testing.mp4?_=1

要将它们用于我的摸脸监视器应用的话,我可以使用gstreamer generic metadata publisher,把MQTT流添加到管道中,以捕捉和处理标志点。比如说我可以查看眼睛,鼻子和嘴巴周围的标志点是否被遮盖,甚至可以把标志点与人体姿势估计模型结合起来。

情绪识别

这是另一个有趣之处。emotions-recognition-retail-0003采用卷积网络来识别平淡、快乐、悲伤、惊奇、愤怒的情绪。(示例如下)

https://ltwus2ix28x10gixx34jeigv-wpengine.netdna-ssl.com/wp-content/uploads/2020/04/emotion-detection-testing.mp4?_=2

这个应用判断我很伤心,而不是平淡。也许是自己待在家里让我开始感到难过。

加速优化

要利用OWT的硬件加速功能的话,请您确保在

/home/owt/analytics_agent/plugin.cfg中的设备设置得当。即:

device = "MULTI:HDDL,GPU,CPU"

糟糕的是我没有时间来测试此功能。但是除了CPU和GPU加速之外,你还可以利用英特尔的各种视觉处理单元(VPU)硬件。这些硬件是有效运行神经网络的专用芯片。几年前,我买了一个英特尔Neural Compute Stick (NCS),用于在Raspberry Pi 3上运行高端CV模型。

当然,你也可以始终权衡帧速率和分辨率,也可以提高处理能力。

推荐

OpenCV由来已久,其拥有庞大的开发社区。2018年中,当我进行流行度分析时,它在所有机器学习开源项目中排名第四。同样,gstreamer是另一个永不过时的项目。英特尔OWT Analytics Agent非常适合帮助这些社区完善项目,特别是通过WebRTC在其项目中添加实时流分析。他们应该有能力采用现有的GST模型,通过OWT在实时流上运行它们。

如果你刚开始运行计算机视觉,并想在OWT服务器上运行它们,那么我建议你从一些其他更基本的OpenCV教程开始。然后按自己的方式进入GVA插件。如果您是OpenCV的初学者,这些前期教程会花费你很多时间,但是根据教程,修改Analytics Agent来运行它们对你来说应该很容易。你也可以优化堆栈,使其与目标平台一起运行。你也可以利用英特尔的各种硬件加速选项来提高性能。

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

原文作者:chad hart

 

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

WebRTC 中文社区由

运营