计算机系统应用  2022, Vol. 31 Issue (6): 109-116   PDF    
基于鲲鹏云的复杂道路场景行人监测系统
靳静玺, 孙士杰, 宋焕生     
长安大学 信息工程学院, 西安 710064
摘要:随着交通智能化的发展, 高速公路监控视频加密上云逐渐成为交通发展的主要趋势之一. 交通数据深度挖掘, 尤其是行人检测问题, 则是该趋势中亟待解决问题之一. 本文针对多种道路环境的行人检测问题, 提出了一种基于鲲鹏云的全天候行人监测解决方案. 首先, 将监控相机中的视频流通过流媒体服务转发至鲲鹏云; 然后鲲鹏云进行视频流解码与行人检测, 同时保存行人历史信息; 最后进行行人事件分析和上报. 本系统采用嵌入式神经网络处理器(NPU)代替传统图形处理器(GPU)平台加速YOLOv4行人检测模块的推理, 一方面取得了较快的检测速度并可实时处理22路视频流, 另一方面, 该解决方案针对不同道路场景下高速道路上的行人也可取得较好的监测效果.
关键词: 行人检测    NPU    深度学习    YOLOv4    多目标检测    
Pedestrian Monitoring System in Complex Road Scene Based on Kunpeng Cloud
JIN Jing-Xi, SUN Shi-Jie, SONG Huan-Sheng     
School of Information Engineering, Chang’an University, Xi’an 710064, China
Abstract: With the development of transportation intellectualization, forwarding encrypted highway surveillance videos to the cloud has become a major trend in transportation development. Deep transportation data mining, especially pedestrian detection, is one of the crucial problems to be solved in this trend. In this study, to address the problem of pedestrian detection in various road environments, we propose an all-weather pedestrian monitoring solution based on the Kunpeng Cloud. The video streams in the surveillance camera are forwarded to the Kunpeng Cloud through a streaming service. Then, the Kunpeng Cloud decodes the video streams, detects pedestrians, and saves pedestrian history information. Finally, it analyzes and reports the pedestrian events. This system uses an embedded neural-network processing unit (NPU) instead of a traditional graphics processing unit (GPU) platform to accelerate the reasoning of the YOLOv4 pedestrian detection module. The solution not only achieves a fast detection speed and can process 22 video streams in real time but also delivers better results in detecting pedestrians on highways in different road scenes.
Key words: pedestrian detection     neural-networkprocessing unit (NPU)     deep learning     YOLOv4     multiple object detection    

随着计算机视觉领域的快速发展, 各行各业都已经利用计算机视觉领域的学术研究成果进行工业界的相关应用. 考虑到高速道路异常事件监测[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 \times 13 $ $ 26 \times 26 $ $ 52 \times 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 \times 832 $ , IOU为0.1, thresh为0.4取得97.15%的AP值.

在交通异常事件检测中, 行人检测也是长期以来较难解决的问题, 存在问题如图3. 实际道路上, 监控相机一般架设在8–15 m的高度, 行人目标较小, 而 YOLOv4[6]的head模块输出 $ 52 \times 52 $ 多维特征矩阵, 该部分针对小目标预测效果较好. 鉴于YOLOv4[6]针对小目标也具备较好的检测精度同时其算法具有鲁棒性较强的优点, 因此, 本文采用该方法进行道路上的行人监测.

图 3 行人检测的难点

随着视频云加密联网成为高速公路视频监控领域发展的主流趋势和不断增加的云端的监控视频处理的需求, 本文提出基于纯国产处理单元的鲲鹏云的行人监测系统具有非常重要的应用价值.

系统部署在云端可以快速地将位于各地监测点的云上多路视频数流实时接入云端处理, 云端将处理好的监测结果通过TCP协议实时传输到本地监控中心; 同时部署到云服务上, 可节省大量建设本地机房的成本, 以及不考虑机房噪音、散热和维护的问题.

该系统首先利用鲲鹏920 CPU 处理单元和OpenCV库, 解析实时的RTSP视频码流, 进而将视频序列传输到目标检测模块, 该模块基于YOLOv4[6], 利用Atlas 300这个NPU推理加速, 可进行多个场景的高速道路上的行人检测; 最后, 将检测到的不同场景下行人进行汇总分析, 进行事件上报和行人闯入的图像保存记录.

1 行人监测系统的设计

本系统针对高速道路上的行人闯入事件可以进行全天候的监测. 从监控相机中获得视频流通过EasyDarwin流媒体服务器转发至鲲鹏云服务器, 云端对源源不断的视频流进行分析, 能够监测多个发生有行人进入道路发生的异常情况, 并可以将行人闯入高速的事件图像和发生时间的进行保存, 图4为系统流程图.

图 4 鲲鹏行人监测系统整体图

行人监测系统是针对从相机获取的多路RTSP视频流, EasyDarwin流媒体转发至云端, 云端接入后, 调用OpenCV和ffmpeg实时解码, 将解码后图像传入到运用YOLOv4的检测模块, 同时在NPU下进行推理加速, 从传输来的一帧帧图像中判断是否存在行人闯入高速道路的情况, 将存在的行人闯入事件的位置信息进行记录, 同时进行对比判断是否是新的行人闯入事件, 将监测到新的行人事件进行上报, 具体算法流程如图5所示.

从NPU模块获取到当前视频帧的行人检测结果, 分别为类别、行人的边界框坐标X, Y, W, H和置信度, 将视频序列 $ {B_i},\; i = \left\{ {1, 2, 3, \cdots , n} \right\} $ 的检测结果进行非极大值抑制, 用来过滤冗余的bounding box, 从而获取更精确的位置信息. 非极大值抑制采用DIoU-NMS算法, 算法公式如式(1)所示:

$ {{{s}}_i} = \left\{ {\begin{array}{*{20}{c}} {0, } \\ {{s_i}, } \end{array}} \right.\begin{array}{*{20}{c}} {IoU - {R_{\rm{DIoU}}}(M, {B_i}) < {N_{th}}} \\ {IoU - {R_{\rm{DIoU}}}(M, {B_i}) \geqslant {N_{th}}} \end{array} $ (1)

其中, $ {s_i} $ 表示分类得分, $ M $ 是得分最高的预测框, $ {B_i} $ 表示当前帧检测到的第i个bounding box, $ {N_{th}} $ 为设定的阈值. 其中 ${R_{\rm{DIoU}}}$ 的计算过程如下:

$ {R_{\rm{DIoU}}} = \frac{{\rho (b, {b^{{\rm{gt}}}})}}{{{c^2}}} $ (2)

其中, $ b $ ${b^{{\rm{gt}}}}$ 表示两边界框中心点位置, $\; \rho (\cdot) $ 表示计算其欧式距离, $ c $ 表示两个bounding box对角线的欧式距离.

图 5 行人监测系统流程图

另外, DIoU-NMS还采用了IoU方法, IoU表示图像的交并比. 其计算过程如下:

$ IoU = (A \cap B)/(A \cup B) $ (3)

其中, $ A $ $ B $ 分别表示两个bounding box, 求其交集与补集的比例.

通过DIoU-NMS获得行人目标的最精确的位置信息, 进行判断当前视频帧是否存在行人, 将有行人信息的每帧中多个bounding box中心位置信息进行存储, 后续将当前帧检测到的行人中心位置 $ ({x_t}, {y_t}) $ 与历史保存的行人中心位置 $ ({x_{t - 2}}, {y_{t - 2}}) $ $ ({x_{t - 1}}, {y_{t - 1}}) $ 进行计算其欧氏距离, 计算过程如式(4)所示:

$ dis = \sqrt {{{({x_i}, {y_i})}^2} - {{({x_k}, {y_k})}^2}} $ (4)

其中, $ ({x_i}, {y_i}) $ 为当前帧行人的bounding box中心点, $ ({x_k}, {y_k}) $ 为历史的 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)中存在大量行人, 监测到该事件但是对于具体的行人未全部检测到.

图14为不同高速道路及不同时间段夜间场景下的行人监测结果, 图14(a)中可以看出在夜间2–3点行人监测结果存在误检测现象, 主要是因为光照影响下阴影轮廓和行人较为相似; 图14(b)中4–5点货车强光背对监控相机下, 行人可以准确监测到; 但是在图14(c)中路桩受光线的影响, 可以发现其轮廓与行人接近, 造成误检测. 图14(d)道路下准确监测行人进入事件.

图 13 高速白天场景下的行人监测结果

图15是多条隧道场景的不同时间段的行人监测结果. 图15 (a)中可以看出早上9–10点隧道口有行人进入; 图15 (b)中14–15点的隧道中存在大量车辆车尾灯和隧道上灯光的影响, 此时能够准确监测到行人; 图15 (d)中均匀的灯光场景下可以正常监测到行人进入, 同时针对该场景远处行人也能监测到.

图 14 高速夜间场景下的行人监测结果

在行人监测过程中, 由于网络和服务器负载过高的原因, 导致图16中视频流存在不同程度花屏的现象, 图16(a)中的图像无法辨识道路上多种物体和道路标线, 在该场景下仍旧能够监测到行人进入, 对于花屏模糊部分区域也存在行人无法检测出的现象, 人眼辨识也需要一段时间的比对才可以发现道路上的其他行人. 图16(b)中也存在局部花屏现象此时也可以监测到行人事件.

图 15 隧道场景的行人监测结果

针对选取的上述场景, 本监测系统在行人与监控相机位置距离较近的情况下精度较高, 远距离精度还有待提升. 在出现一定程度的视频流花屏情况下引起行人目标产生不同程度的模糊现象, 此时也可以正确上报监测到的行人事件, 但是由于视频流花屏对检测的干扰是随机的, 因此需要通过对视频流的传输速度和CPU资源占用进行优化, 可以采用NPU进行视频解码降低CPU利用率, 避免此异常情况的发生.

针对该监测系统的进行性能测试, 考虑到主要利用到NPU模块进行推理加速, 因此主要进行NPU和CPU利用率及内存使用进行对比. 测试中每个进程同时跑3路视频流分辨率分别为 $ 576 \times 720 $ $ 576 \times 720 $ $ 482 \times 856 $ . 表1中所有YOLOv4[6]模块用到了NPU下的视频解码, 因此其NPU资源占用率较高. 另外NPU下可以同时跑两个不同的推理网络, 对YOLOv3[7]和YOLOv4[6]模块进行了性能方面的对比. 最后进行极限测试, 在多进程下本系统可以同时处理多路视频流. 在实际生产环境下, 本系统能够进行22路监控相机码流的实时处理, 并稳定运行57天.

图 16 视频流异常情况的监测结果

5 结论与展望

该监测系统能够针对复杂场景下的交通视频中行人事件, 利用YOLOv4[6]进行行人检测与事件上报, 针对不同时段和路段的实际道路场景, 能够取得较好的监测效果并可实时处理22路监控视频流, 同时有较高的稳定性. 另外监测系统的处理单元均为纯国产化设备相较于传统国外处理单元(如Intel CPU和Nvdia GPU等), 可以保证程序运行过程中的数据运算的低功耗. 同时采用NPU也可以代替GPU来进行深度学习算法的研究和工业部署也有着借鉴的意义.

系统的不足之处是还没有针对特定场景进行大批量数据集的采集和训练, 为了提高对道路上行人异常事件的监测精度, 需要后续进行针对该平台的网络训练、模型转化和算法优化工作.

表 1 行人监测系统性能测试

参考文献
[1]
郭爽. 基于流数据的交通异常事件检测方法研究[硕士学位论文]. 北京: 中国石油大学(北京), 2018.
[2]
陈武阳, 赵于前, 阳春华, 等. 基于可见光与红外热图像的行车环境复杂场景分割. 自动化学报, 2021, 1-10.
[3]
王向军, 郭志翼. 算力限制平台下的长时目标跟踪. 红外与激光工程, 2020, 49(1): 0126003.
[4]
李梦静, 吉根林. 视频行人重识别研究进展. 南京师大学报(自然科学版), 2020, 43(2): 120–130.
[5]
耿艺宁, 刘帅师, 刘泰廷, 等. 基于计算机视觉的行人检测技术综述. 计算机应用, 2021, 41(S1): 43-50.
[6]
Bochkovskiy A, Wang CY, Liao HYM. YOLOv4: Optimal speed and accuracy of object detection. arXiv: 2004.10934, 2020.
[7]
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv: 1804.02767, 2018.
[8]
He KM, Zhang XY, Ren SQ, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(9): 1904-1916. DOI:10.1109/TPAMI.2015.2389824
[9]
Liu S, Qi L, Qin HF, et al. Path aggregation network for instance segmentation. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 8759–8768.
[10]
Lin TY, Dollár P, Girshick R, et al. Feature pyramid networks for object detection. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017. 936–944.
[11]
高宗, 李少波, 陈济楠, 等. 基于YOLO网络的行人检测方法. 计算机工程, 2017, 44(5): 936-944.
Lin TY, Dollár P, Girshick R, et al. Feature pyramid networks for object detection. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Honolulu:IEEE, 2017, 44(5): 936-944.
[12]
Dalal N, Triggs B. Histograms of oriented gradients for human detection. 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR’05). San Diego: IEEE, 2005. 886–893.
[13]
陈光喜, 王佳鑫, 黄勇, 等. 基于级联网络的行人检测方法. 计算机应用, 2019, 39(1): 186-191. DOI:10.11772/j.issn.1001-9081.2018061351
[14]
王丹峰, 陈超波, 马天力, 等. 基于深度可分离卷积的YOLOv3行人检测算法. 计算机应用与软件, 2020, 37(6): 218-223. DOI:10.3969/j.issn.1000-386x.2020.06.038
[15]
邓杰, 万旺根. 基于改进YOLOv3的密集行人检测. 电子测量技术, 2021, 44(11): 90-95.
[16]
李慕锴, 张涛, 崔文楠. 基于YOLOv3的红外行人小目标检测技术研究. 红外技术, 2020, 42(2): 176-181.
[17]
康帅, 章坚武, 朱尊杰, 等. 改进YOLOv4算法的复杂视觉场景行人检测方法. 电信科学, 2021, 37(8): 46-56.
[18]
Sambolek S, Ivasic-Kos M. Automatic person detection in search and rescue operations using deep CNN detectors. IEEE Access, 2021, 9: 37905-37922. DOI:10.1109/ACCESS.2021.3063681