分析与计算机视觉(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