基于鲲鹏云的复杂道路场景行人监测系统①
2022-06-29靳静玺孙士杰宋焕生
靳静玺, 孙士杰, 宋焕生
(长安大学 信息工程学院, 西安 710064)
随着计算机视觉领域的快速发展, 各行各业都已经利用计算机视觉领域的学术研究成果进行工业界的相关应用. 考虑到高速道路异常事件监测[1]是交通安全监管和路况控制的重要组成部分, 并且当前基于交通视频分析的交通参数和交通异常事件检测、交通行为分析等已成为智能交通领域研究的重点.
当前主流的交通视频异常事件检测均基于深度学习中目标检测的方法, 该类方法作为计算机视觉的基本方案之一, 可作为其他视觉任务的基础, 如: 图像分割[2]、标注和目标跟踪[3]、目标重识别[4]等.
目标检测任务[5]是找出图像或视频中人们感兴趣的物体, 并同时检测出它们的位置和大小. 与图像分类任务不同, 目标检测不仅要解决分类问题, 还要解决定位问题, 图1 为目标检测的6 大应用领域.
图1 目标检测的应用领域
基于深度学习的目标检测方法可分为两类: 两阶段目标检测方法和单阶段目标检测方法. 两阶段目标检测算法精度高但是速度较慢, 不适合在生产环境中应用, 而当前单阶段目标检测算法发展迅速, 精度和速度均有很大的提升, 能够在实际生产环境中得到大规模应用.
当前单阶段目标检测算法性能较高的YOLOv4[6]算法是一个可以应用在生产环境快速运行的目标检测器,它比上一个版本YOLOv3[7]提升了10%的平均精度以及12%的帧率, 在普通的GPU 上就可以达到很好的速度和精度. YOLOv3[7]采用Darknet53 进行特征提取, 对象分类采用Logistic 代替Softmax. 相比YOLOv3[7],该算法在输入端引入Mosaic 数据增强、cmBN 及SAT 自对抗训练; 该网络结构的Backbone 部分是由主干特征提取网络CSPDarknet53 组成, 其中用到了Mish 激活函数和Dropblock 正则化方法; Neck 部分是由SPPNet[8]和PANet[9]组成, 其中SPPNet[8]对于一幅图像分成若干尺度的图像块, 然后对每一块提取的特征融合在一起, 从而兼顾多个尺度的特征. SPPNet[8]使得网络在全连接层之前能生成固定尺度的特征表示,而不管输入图片尺寸如何; PANet[9]引入了自底向上的路径, 使得底层图像特征信息更容易传递到高层和顶部. YOLOv4[6]的head 部分采用原先YOLOv3[7]head部分, YOLOv3[7]head 是借鉴了FPN 网络[10]采用3 个不同感受野的特征图去检测不同尺寸的对象. 该部分输出3 类不同大小的多维特征图, 其大小分别是13×13、26×26、52×52, 每类特征图对应3 个锚框, 每个网络预测的位置信息(X, Y, W, H)、置信度和类别信息,YOLOv4[6]网络结构如图2.
图2 YOLOv4 网络结构
YOLOv4[6]在YOLOv3[7]基础上, 将近年来深度学习领域最新的研究成果融入其中, 算法的性能表现较为出色. 其在MS COCO 数据集上利用Tesla V10 以65 fps 的实时速度获得了43.5 的平均精度(65.7%AP50).
随着YOLO 网络的广泛应用, 很多学者提出了很多基于YOLO 网络的行人检测方法. 高宗等人[11]提出了YOLO-P 的行人检测网络, 在YOLOv2 的网络结构基础上根据INRIA 数据集[12]上行人目标宽高比的规律, 将原先的全连接层用卷积层代替并预测目标的偏移, 调整X 轴和Y 轴的分布密度并融合网络不同位置的多级特征图, 降低了行人的漏检率和误检率并提高了行人的定位精度. 陈光喜等人[13]为了提升召回率和检测效率, 设计YOLOv2+Person 网络来检测行人, 结合深层、浅层CNN 的特征, 得到更准确的行人分类结果. 王丹峰等人[14]提出了基于YOLOv3[7]的改进网络检测用来检测行人, 其采用深度可分离卷积代替Darknet网络, 降低了网络的参数和计算量, 在VOC2007 数据集下行人的检测精度达到90.3%. 在针对拥挤场景下,行人的严重遮挡、分布密集的问题, 邓杰等人[15]提出了Crowd-YOLO 网络, 在YOLOv3[7]的基础上, 提出了时频域融合注意力的模块, 能够得到具有丰富信息的深层特征图, 在CrowdHuman 数据集下精度得到提升. 在红外图像中行人的小目标检测方向, 李慕锴等人[16]将SENet 中SE block 引入YOLOv3[7]中, 降低红外图像中行人误检率并提升了检测精度.
当前性能表现较好的网络都是在YOLOv4[6]基础上加以改进. 针对复杂的光照条件、恶劣的天气、严重遮挡、行人尺寸大以及图像模糊等问题, 康帅等人[17]在YOLOv4[6]的基础上提出了在骨干网中加入混合空洞卷积, 并用空间锯齿空洞卷积结构代替空间金字塔池化结构, 从而提升了平均精度并降低了平均误检率.Sambolek 等人[18]将YOLOv4[6]算法应用在山区行人搜救方面, 制作了SARD 数据集并结合VisDrone 数据集进行重新训练, 增加Ropti 的额外度量方法并调整YOLOv4 (SARD)[6]的输入分辨率为832×832,IOU为0.1, thresh 为0.4 取得97.15%的AP 值.
在交通异常事件检测中, 行人检测也是长期以来较难解决的问题, 存在问题如图3. 实际道路上, 监控相机一般架设在8–15 m 的高度, 行人目标较小, 而 YOLOv4[6]的head 模块输出52×52多维特征矩阵, 该部分针对小目标预测效果较好. 鉴于YOLOv4[6]针对小目标也具备较好的检测精度同时其算法具有鲁棒性较强的优点,因此, 本文采用该方法进行道路上的行人监测.
图3 行人检测的难点
随着视频云加密联网成为高速公路视频监控领域发展的主流趋势和不断增加的云端的监控视频处理的需求, 本文提出基于纯国产处理单元的鲲鹏云的行人监测系统具有非常重要的应用价值.
系统部署在云端可以快速地将位于各地监测点的云上多路视频数流实时接入云端处理, 云端将处理好的监测结果通过TCP 协议实时传输到本地监控中心;同时部署到云服务上, 可节省大量建设本地机房的成本, 以及不考虑机房噪音、散热和维护的问题.
该系统首先利用鲲鹏920 CPU 处理单元和Open-CV 库, 解析实时的RTSP 视频码流, 进而将视频序列传输到目标检测模块, 该模块基于YOLOv4[6], 利用Atlas 300 这个NPU 推理加速, 可进行多个场景的高速道路上的行人检测; 最后, 将检测到的不同场景下行人进行汇总分析, 进行事件上报和行人闯入的图像保存记录.
1 行人监测系统的设计
本系统针对高速道路上的行人闯入事件可以进行全天候的监测. 从监控相机中获得视频流通过EasyDarwin流媒体服务器转发至鲲鹏云服务器, 云端对源源不断的视频流进行分析, 能够监测多个发生有行人进入道路发生的异常情况, 并可以将行人闯入高速的事件图像和发生时间的进行保存, 图4 为系统流程图.
图4 鲲鹏行人监测系统整体图
行人监测系统是针对从相机获取的多路RTSP 视频流, EasyDarwin 流媒体转发至云端, 云端接入后, 调用OpenCV 和ffmpeg 实时解码, 将解码后图像传入到运用YOLOv4 的检测模块, 同时在NPU 下进行推理加速, 从传输来的一帧帧图像中判断是否存在行人闯入高速道路的情况, 将存在的行人闯入事件的位置信息进行记录, 同时进行对比判断是否是新的行人闯入事件, 将监测到新的行人事件进行上报, 具体算法流程如图5 所示.
图5 行人监测系统流程图
从NPU 模块获取到当前视频帧的行人检测结果,分别为类别、行人的边界框坐标X, Y, W, H 和置信度, 将视频序列Bi,i={1,2,3,···,n}的检测结果进行非极大值抑制, 用来过滤冗余的bounding box, 从而获取更精确的位置信息. 非极大值抑制采用DIoU-NMS 算法, 算法公式如式(1)所示:
其中,si表示分类得分,M是得分最高的预测框,Bi表示当前帧检测到的第i个bounding box,Nth为设定的阈值. 其中RDIoU的计算过程如下:
其中,b和bgt表示两边界框中心点位置, ρ(·)表示计算其欧式距离,c表示两个bounding box 对角线的欧式距离.
另外, DIoU-NMS 还采用了IoU方法,IoU表示图像的交并比. 其计算过程如下:
其中,A和B分别表示两个bounding box, 求其交集与补集的比例.
通过DIoU-NMS 获得行人目标的最精确的位置信息, 进行判断当前视频帧是否存在行人, 将有行人信息的每帧中多个bounding box 中心位置信息进行存储,后续将当前帧检测到的行人中心位置(xt,yt)与历史保存的行人中心位置(xt−2,yt−2) 、(xt−1,yt−1)进行计算其欧氏距离, 计算过程如式(4)所示:
其中, (xi,yi)为当前帧行人的bounding box 中心点,(xk,yk)为历史的 bounding box 中心坐标. 最后根据求得的dis值进行新事件上报的确定, 发生新的行人事件进行 上报和记录.
2 鲲鹏云硬件平台
在华为云官网申请了一台配置是CPU 为arm64架构的鲲鹏920, RAM 为32 GB, NPU 为达芬奇架构的Alas 300 的弹性云服务器, 详细配置参数如图6.
图6 华为云服务器配置
通过图7, 可以通过网页端看到实时的CPU 利用率、磁盘的读写速度等详细的网页监控数据, 方便后续对系统的优化和测试. 通过FinalShell 可以利用本地的代码编辑器将程序快速上传到云端, 进行远程编译和调试, 在FinalShell 使用SSH 协议连接后界面显示如图8 所示.
图7 系统资源监测网页
图8 FinalShell 连接华为云显示
3 模拟相机推流模块
本实验采用常用的开源流媒体服务器EasyDarwin进行RTSP 码流的推送, 在云端可以接入RTSP 码流,采用ffmpeg 进行RTSP 码流的解析和处理.
本系统可以针对中视频中出现的行人和进行全天候监测, 本地视频通过流媒体服务器转成RTSP 码流,并将RTSP 码流转发到云服务器端, 云端针对多路RTSP流进行实时处理. 图9 和图10 为流媒体服务器转发多路视频流的过程和资源利用率动态显示.
图9 EasyDarwin 多路视频推流
图10 推流主机资源占用监测图
同时使用VLC 流媒体播放器进行查看视频流, 为了确保视频流稳定推送, 避免花屏现象, 采用3 台主机进行这样的推流服务, 在显示器可以检查视频流的运行情况, 防止视频出现卡顿和花屏现象, 从而影响监测效果, 图11 同时推送12 路不同视频流的效果.
图11 VLC 实时查看RTSP 流画面
4 实验结果及分析
通过接入实际的多条RTSP 码流进行鲲鹏云下行人监测任务. 该系统能够在多种不同场景下取得较好的监测效果, 如不同天气下如晴天、阴天和雨天; 不同时间如白天、傍晚和夜晚; 不同道路场景如高速公路和隧道, 图12 展示了本系统应用场景.
图12 测试覆盖到的复杂场景
在上述复杂道路场景下, 其中隧道场景一般没有白天和夜晚的区分, 但是由于隧道灯光和车辆前后灯的混叠影响, 导致其光线条件非常复杂. 实验主要选取实际高速道路不同时间段的白天、夜晚场景和隧道不同光线条件和不同时段的场景进行行人监测, 另外也针对视频流异常情况下进行监测结果的分析.
图13 为不同高速道路及不同时间段白天场景下的行人监测结果. 从图13(a)中可以看出在白天9–10 点之间存在被路边的树木阴影遮挡的行人驾驶电动车上高速, 此时可以正确监测到行人进入事件, 图13(b)中远处的交通标志牌附近的行人也可以监测到, 但是在图13(c)中可以监测到离相机近的行人, 远处两个行人未能监测到. 图13(d)中存在大量行人, 监测到该事件但是对于具体的行人未全部检测到.
图13 高速白天场景下的行人监测结果
图14 为不同高速道路及不同时间段夜间场景下的行人监测结果, 图14(a)中可以看出在夜间2–3 点行人监测结果存在误检测现象, 主要是因为光照影响下阴影轮廓和行人较为相似; 图14(b)中4–5 点货车强光背对监控相机下, 行人可以准确监测到; 但是在图14(c)中路桩受光线的影响, 可以发现其轮廓与行人接近, 造成误检测. 图14(d)道路下准确监测行人进入事件.
图14 高速夜间场景下的行人监测结果
图15 是多条隧道场景的不同时间段的行人监测结果. 图15 (a)中可以看出早上9–10 点隧道口有行人进入; 图15 (b)中14–15 点的隧道中存在大量车辆车尾灯和隧道上灯光的影响, 此时能够准确监测到行人;图15 (d)中均匀的灯光场景下可以正常监测到行人进入, 同时针对该场景远处行人也能监测到.
图15 隧道场景的行人监测结果
在行人监测过程中, 由于网络和服务器负载过高的原因, 导致图16 中视频流存在不同程度花屏的现象,图16(a)中的图像无法辨识道路上多种物体和道路标线, 在该场景下仍旧能够监测到行人进入, 对于花屏模糊部分区域也存在行人无法检测出的现象, 人眼辨识也需要一段时间的比对才可以发现道路上的其他行人.图16(b)中也存在局部花屏现象此时也可以监测到行人事件.
图16 视频流异常情况的监测结果
针对选取的上述场景, 本监测系统在行人与监控相机位置距离较近的情况下精度较高, 远距离精度还有待提升. 在出现一定程度的视频流花屏情况下引起行人目标产生不同程度的模糊现象, 此时也可以正确上报监测到的行人事件, 但是由于视频流花屏对检测的干扰是随机的, 因此需要通过对视频流的传输速度和CPU 资源占用进行优化, 可以采用NPU 进行视频解码降低CPU 利用率, 避免此异常情况的发生.
针对该监测系统的进行性能测试, 考虑到主要利用到NPU 模块进行推理加速, 因此主要进行NPU 和CPU 利用率及内存使用进行对比. 测试中每个进程同时跑3 路视频流分辨率分别为576×720、576×720和482×856. 表1 中所有YOLOv4[6]模块用到了NPU 下的视频解码, 因此其NPU 资源占用率较高. 另外NPU下可以同时跑两个不同的推理网络, 对YOLOv3[7]和YOLOv4[6]模块进行了性能方面的对比. 最后进行极限测试, 在多进程下本系统可以同时处理多路视频流. 在实际生产环境下, 本系统能够进行22 路监控相机码流的实时处理, 并稳定运行57 天.
表1 行人监测系统性能测试
5 结论与展望
该监测系统能够针对复杂场景下的交通视频中行人事件, 利用YOLOv4[6]进行行人检测与事件上报, 针对不同时段和路段的实际道路场景, 能够取得较好的监测效果并可实时处理22 路监控视频流, 同时有较高的稳定性. 另外监测系统的处理单元均为纯国产化设备相较于传统国外处理单元(如Intel CPU 和Nvdia GPU 等), 可以保证程序运行过程中的数据运算的低功耗. 同时采用NPU 也可以代替GPU 来进行深度学习算法的研究和工业部署也有着借鉴的意义.
系统的不足之处是还没有针对特定场景进行大批量数据集的采集和训练, 为了提高对道路上行人异常事件的监测精度, 需要后续进行针对该平台的网络训练、模型转化和算法优化工作.