整合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个面部标志。(示例如下)
要将它们用于我的摸脸监视器应用的话,我可以使用gstreamer generic metadata publisher,把MQTT流添加到管道中,以捕捉和处理标志点。比如说我可以查看眼睛,鼻子和嘴巴周围的标志点是否被遮盖,甚至可以把标志点与人体姿势估计模型结合起来。
情绪识别
这是另一个有趣之处。emotions-recognition-retail-0003采用卷积网络来识别平淡、快乐、悲伤、惊奇、愤怒的情绪。(示例如下)
这个应用判断我很伤心,而不是平淡。也许是自己待在家里让我开始感到难过。
加速优化
要利用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