ESH系列01丨智能交通管理用例

一、注册ESH开发者账户

1.登录网址:Edge Software Hub

2.点击右上角的登录按钮,在弹出界面中点击’在此注册’

20210103161122

3.填写个人信息并提交,收到邮件后点击激活,到这一步账号注册就成功了。

20210103162435

二、下载Use Cases列表中的智能交通管理

1.登录界面,点击蓝色按钮

20210103164833

2.跳转到下载页面,我们可以看到智能交通管理需要安装的组件有三个,分别是Docker CE、Docker Compose和OpenVINO Container。右侧我们可以选择软件版本,这是用最新的2020.4来演示,点击下载。

20210103165843

3.下载过程中会出现一串key,记得保存一下,一会要用。

20210103170523

三、用例介绍

智能交通管理不仅可以通过IP摄像机监控路口,检测车辆和行人,记录车辆类型和数量,计算速度和加速度,还可以检测碰撞和侥幸避免的碰撞事故,实时可视化的仪表盘能够从交通路口提取情报以及带注释的视频流,收集到的情报可用于调整交通信号灯,从而优化交通流,提高路口的安全性。

四、支持的软硬件平台

操作系统:Ubuntu 18.04 LTS

硬件类型:

  • 支持具有Iris Pro图形或Intel HD图形的第六到第十代Intel core处理器

  • 支持VPU、FPGA以及NCS2计算棒

五、工作原理及功能

智能交通管理使用OpenVINO发行版工具包中的DLStreamer。最初,使用提供的输入视频源和模型来执行管道。DLStreamer预处理输入,并根据管道设置执行推理。推断结果使用回调函数进行解析。这些结果被反馈给跟踪,碰撞和感兴趣区域等功能。

20210103195508

检测功能:

通过使用DLStreamer管道中的gvadetect插件元素来执行检测。管道包括检测模型,模型proc文件,目标设备和输入流。从DLStreamer调用函数获得对象感兴趣区域(ROI),并将其更新为结果向量。该结果向量用于进一步处理。

跟踪功能:

一旦获得检测,就将关注区域(ROI)结果添加到跟踪器系统,该系统开始在连续帧上跟踪对象。每帧的结果都会更新,以使用新信息将信息反馈给跟踪器。

碰撞检测功能:

启用对象跟踪后,可以检索每个对象的实际和过去位置。当检测到突然的加速度峰值时,车辆就处于危险状态。如果标记为处于危险状况的对象的ROI与任何其他对象的ROI重叠,则将其视为侥幸避免了碰撞。如果另一个对象也被标记为处于危险状况,则将其视为碰撞。

兴趣范围功能:

感兴趣区域允许确定目标检测将发生的空间边界,以便所有通过或停留在该区域内的目标将被正确识别和跟踪。用户可以在视频的第一帧上选择感兴趣的特定矩形区域。涉及的区域包括街道、人行道和人行横道。考虑到用于定义感兴趣区域的标准,定义了检测危险场景的规则。例如,从街道到人行道的汽车,人行横道中速度为零的汽车或有行人在人行横道中的汽车。

数据存储和可视化功能:

从上述功能获得的数据存储在InfluxDB中进行分析,并在Grafana仪表板上可视化。

六、安装步骤

安装前必看:

国内网络推荐配置pip和docker镜像的国内加速源,以减少等待时间,本次演示使用了vpn的加速。

1.解压下载的包 unzip intelligent_traffic_management.zip

2.进入解压目录,更改edgesoftware文件的权限 chmod 755 edgesoftware

3.运行命令,安装 ./edgesoftware install

4.会提示输入秘钥,我们输入下载时保存好的key就可以了。

20210103203323

5.等待安装完成

20210103154924

6.进入下图目录,执行sudo docker build --no-cache -t smart_city .构建docker镜像。

20210103205408

7.看到下图就说明构建成功

20210106123456

8.运行sudo docker images命令查看smart_city Docker镜像

20210106123466

七、运行使用

1.这里我们使案例包含的测试视频来演示程序,执行下面代码,给脚本运行权限

chmod +x run.sh

2.执行./run.sh,运行程序。

run.sh文件中默认启用了跟踪和碰撞功能。从图中可以看到行人红色的箭头和蓝色的移动轨迹。并且图片上有rendered、dropped、current、average四个参数,可以实时显示视频相关状态信息。

2021-01-0617-42-12

3.启动跟踪

使用--tracking参数启动跟踪来运行程序。

sudo docker run -it --net=host --env DISPLAY=$DISPLAY --memory 500m --health-cmd='stat /etc/passwd || exit 1' --volume $HOME/.Xauthority:/root/.Xauthority:rw smart_city /bin/bash -c "source /opt/intel/openvino/bin/setupvars.sh && ./smart_city --input ../data/video1_640x320.mp4 --vp_model ../models/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xml --vp_proc ../model_proc/person-vehicle-bike-detection-crossroad-0078.json --tracking"

2021-01-0617-44-27

4.启用碰撞

使用--tracking--collision参数运行命令可以看到下图效果。--threshold是阈值参数,是一个大于0小于1的值。

    sudo docker run -it --net=host --env DISPLAY=$DISPLAY --memory 500m --health-cmd='stat /etc/passwd || exit 1' --volume $HOME/.Xauthority:/root/.Xauthority:rw smart_city /bin/bash -c "source /opt/intel/openvino/bin/setupvars.sh && ./smart_city --input ../data/video82.mp4 --vp_model ../models/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xml --vp_proc ../model_proc/person-vehicle-bike-detection-crossroad-0078.json --tracking --collision --threshold 0.7" 

2021-01-0617-48-26

5.绘制感兴趣的区域,这个功能我在测试的时候遇到了bug,暂时不演示这个功能了。

八、在浏览器上的数据可视化

1.在浏览器上导航到localhost:3000,使用用户admin和密码admin登录。

2021-01-0618-24-21

2.单击“Home”

20210106183031

3.然后选Intelligent_Traffic_Management

20210106183450

4.此时如果我们正在运行程序或者./run.sh,可以看到仪表板中展示了实时变化的数据信息。

2021-01-0618-27-08