基于视频分析与深度学习的疫情防控系统设计

孙夏恩,颜王亮

摘  要:
根据疫情期间各场所的防疫信息化、智能化需求,设计了一种基于视频分析与深度学习的疫情防控系统。从口罩检测和人群计数角度,在多场景下通过实时聚合监控和风险预警,配合现场语音反馈和后台数据记录,提升疫情防控管理效能。系统运用了RTMP、HTTP、WebSocket三种应用层协议,结合缓冲区、双进程、多线程设计,利用深度学习网络完成了对最新缓冲帧的实时检测,最终基于Flask框架实现客户端交互。

关键词:
疫情防控; 深度学习; 人群计数; 口罩检测; 视频分析; RTMP

中图分类号:TP391.4;TP183;R184.1          文献标识码:A    文章编号:1006-8228(2022)06-54-04

Design of epidemic prevention and control system based on

video analysis and deep learning

Sun Xiaen, Yan Wangliang

(College of Computer Science and Technology, Hangzhou Dianzi University, Hangzhou, Zhejiang 310018, China)

Abstract:
According to the information and intelligent requirements of epidemic prevention in various places during the epidemic period, an epidemic prevention and control system based on video analysis and deep learning is designed. From the perspective of mask detection and crowd counting, real-time aggregate monitoring and risk warning are realized in multiple scenarios. With on-site voice feedback and background data recording, the management efficiency of epidemic prevention and control has been improved. Three application-layer protocols including RTMP, HTTP and WebSocket are used. Combined with designs of buffer, concurrent process and multithreading, the real-time detection of the latest buffer frame is completed by using the deep learning network. Client interaction is implemented based on the Flask framework.

Key words:
epidemic prevention and control; deep learning; crowd counting; mask detection; video analysis; RTMP

0 引言

科學技术是人类同疾病较量的锐利武器,人类战胜大灾大疫离不开科学发展和技术创新[1]。疫情大数据地图、出入校人脸识别系统、健康码等疫情背景下诞生的应用,都很好地体现了科学技术在现代社会疫病预防和控制中发挥的重要作用。与此同时,深化计算机视觉、生物特征识别、监控图像目标提取等技术的应用也是推进社会治理模式创新与智慧城市建设的重要举措[2],在疫情防控常态化背景下,智能化与信息化的方法具有低风险、低人力消耗、结果精确等众多优势,有效维护了疫情期间的社会秩序。

本文构建一种基于视频分析与深度学习的疫情防控系统,依托多场景监控资源,利用深度学习技术,部署人群计数、口罩检测模型,并配合直播视频传输技术,构建高效的缓冲策略和异步检测流程,实现了多场景的聚合监控和检测能力,为管理人员和普通流动人员提供双端反馈,充分发挥监控视频的价值,提升场所疫情防控能力。

1 疫情防控系统设计

1.1 功能模块设计

基于视频分析与深度学习的疫情防控系统,按功能划分为三个模块(如图1),分别是口罩检测模块、人群计数模块和管理模块。其中,口罩检测模块和人群计数模块输入均为某场景RGB图像。口罩检测模块利用Yolov4网络[3],输出为画面中人员口罩佩戴情况的JSON标注文件,并传递语音提醒信息至客户端;人群计数模块利用LSC-CNN网络[4],输出为画面人群计数结果数据,快速发现人群聚集性情况;管理人员模块的输入为多场景RTMP监控视频流[5],实时聚合展示口罩检测模块和人群计数模块输出结果,实现多场景聚合监控功能,同时该模块也具备监控数据记录查看和参数配置功能。

1.2 技术架构设计

软件整体架构为C/S模式(如图2),包含服务器节点和客户端节点(包含监控输入客户端和管理人员客户端)。系统作为结合视频分析和深度学习技术的落地应用,需要处理来自多监控场景输入的视频流,并进行检测分析和反馈。在计算资源部署方面,系统采取分别架设视频直播服务器、GPU服务器的方式,降低RTMP视频直播流与深度学习人群计数和口罩检测业务的耦合。在深度学习模型部署方面,系统将口罩检测模块和人群计数模块封装,以检测API的方式,部署于GPU服务器中,并配置CUDA驱动。在应用层协议方面,每一个监控输入客户端均基于RTMP协议推流至直播服务器,GPU服务器以及管理人员客户端接收的视频流基于RTMP协议从直播服务器进行拉取,其余涉及业务逻辑的网络数据传输基于HTTP协议和WebSocket协议。

2 疫情防控系统实现

2.1 视频传输过程

直播Nginx服务器配置RTMP应用之后,将针对场所内不同场景的视频流进行编号,作为RTMP协议中的流标识。每一处场景的监控视频流将对应惟一确定的URL,可以表示为“rtmp://IP/应用名/场景编号”。直播服务器在运行过程中维护着系统中的多场景直播流数据。

2.2 构建输入缓冲区

GPU服务器中人群计数算法和口罩检测算法所需要的输入是图像数据,通过循环拉取各RTMP视频流的方式可以持续得到最新帧。在多场景的疫情防控系统中,多條直播通道的实时画面均需要经过深度学习模型进行检测才能获得结果。因此,为了去除视频流拉取与深度学习模型检测之间的耦合并提升检测效率,GPU服务器设计了输入缓冲区(如图3),实现循环缓冲刷新机制。

输入缓冲区数据结构为数组,在内存中为顺序存储结构。缓冲区每一个数据元素对应一个类对象,包含最新缓冲帧、时间戳(Timestamp)、启用状态(Status)、过期状态(Outdated)、待检测任务类型等数据项。管理人员可根据实际监控需要配置启用状态,对不同场景的启用状态信息进行更新,经启用后的缓冲区数据元素才会被实时刷新。

刷新线程的工作依赖OpenCV库,并构建等待队列,所有启用的视频流获取对象(Video Capture)均会进入队列中。刷新线程每次取出队首的Video Capture,匹配缓冲区中对应数据元素进行刷新,更新最新帧和Timestamp,并标记Outdated为0,表示状态未过期,刷新完毕后插入队尾,如此循环。若出现匹配的数据元素并未启用的情况,该Video Capture将被销毁,不再插入队尾。

2.3 口罩检测模型

口罩检测任务为多目标检测任务,目标类别为两类,分别是佩戴口罩的人脸目标和未佩戴口罩的人脸目标。本文通过网络爬虫获取相关图像、校园内蹲点拍摄的方法,制作口罩检测数据集,对两类目标进行标注。在目标检测网络选取上,疫情防控系统使用Yolov4网络作为口罩检测的端到端模型。该网络运用了众多免费包和特价包的优化技巧[6],并基于交叉阶段部分连接优化的CSPDarknet53进行特征提取,使用改进的SPP[7]和PANet[8]分别增加感受域和保留浅层特征,提高了特征融合的效率。模型最终在自定义口罩检测数据集的测试集上mAP@0.5达到0.83,且在不同明暗环境下都有较好的检测效果。

2.4 人群计数模型

系统采用训练于UCF-QNRF数据集[9]上的LSC-CNN网络作为系统的人群计数模型。该模型从检测和定位角度完成计数任务,针对不同语义深度特征的张量进行信息融合、在不同分辨率层的像素上开展人头大小估计并分区预测、多层独立训练最终融合输出检测结果。有效地解决了人头定位、大小估计、检测框生成等关键点。因此,LSC-CNN网络比基于密度图预测[10]的其他人群计数网络更适用于疫情防控系统所面对的多种类疏密场景,拥有较好的平均性能。同时,其相较于单阶段目标检测网络或者RCNN系列为代表的双阶段目标检测网络[11]在远景人群、中小目标计数上有更好的表现。

2.5 构建检测API与输出缓冲区

系统中的口罩检测、人群计数模型被封装成为检测API形式,对外提供口罩检测能力和人群计数能力,通过函数调用即可实现模型在实时输入下的检测。输入缓冲区中的数据经过检测API实现层中的模型运算后,得到的结果存储在新构建的输出缓冲区中,该输出缓冲区数据结构与输入缓冲区数据结构相同。检测API在接口实现部分具有以下三个特点。

⑴ 子进程运行。模型运行于系统子进程中,需要通过共享内存的方式获得父进程中的输入缓冲区资源作为输入对象以及父进程中的输出缓冲区资源作为输出对象。在资源共享过程中,输入缓冲区内部数据按照元素索引实现分布式锁,提升了并发效率。检测流程将采取轮转分析的形式,由父进程中开启的检测线程负责循环调度各场景最新缓冲帧,依次输入子进程进行检测。深度学习模型的运算属于系统的耗时任务,通过创建子进程运行的方式可以使得任务并行以提高系统效率。

⑵ 单例模式。每一个深度学习模型在系统初始化时间段被创建并一直存在于显存存中,保持单实例运行。可以避免在运行过程中因多次创建模型造成的显存溢出问题。

⑶ 校验机制。检测前需要对输入的缓冲帧进行Timestamp校验,保证待检测的最新缓冲帧距今时差并未超出设定阈值。否则,该图像所在数据元素的Outdated字段将被标记为1,系统将抛出自定义异常并进入异常处理程序,重启输入缓冲区的缓冲刷新线程。

2.6 数据持久化

在子进程循环更新输出缓冲区数据的过程中,父进程会同步数据到位于外存的MySQL数据库,以实现数据持久化记录(如图4)。在数据库中,图像和JSON标注文件均采取路径存储的方式。

管理人员可以按照记录时间、场景编号、检测任务类型、检测结果等众多条件进行结构化查询,发挥关系型数据库的优势,保证疫情防控系统后期复盘的能力。

2.7 客户端交互实现

疫情防控系统在客户端与服务端之间存在两类交互逻辑,第一类是基于RTMP协议的直播视频流交互,与Nginx直播服务器建立连接;第二类是基于HTTP协议以及WebSocket协议的业务数据流交互,与GPU服务器建立连接,由基于Flask框架部署的业务前台与客户端实现双向通信。

2.7.1 服务端Flask框架

系统调用Flask-SocketIO模块使得Flask Web应用具有封装WebSocket协议的能力,实现GPU服务器和客户端的全双工通信,以及服务端推送信息的功能。通过部署参数配置和记录查询等HTTP接口,客户端能够实时调整监控场景启用状态、预警阈值、分析频率等参数,进行记录分析等。

2.7.2 输入客户端

输入客户端负责视频的推流,将监控摄像头等外部设备采集到的视频流推送到Nginx直播服务器。同时,输入客户端承担着面向流动人员的反馈功能。输入客户端在保持长连接过程中,对于接收到的服务端推送的文字信息进行语音转换与播报,实现口罩佩戴提醒(如图5)以及场景内人群聚集性预警。

2.7.3 管理人员客户端

管理人员客户端与GPU服务器也实现了长连接機制且传输内容涉及图像资源,为管理人员客户端页面的多场景聚合监控功能提供数据侧支持。管理人员客户端采用了MVVM设计模式,结合观察者模式实现数据的双向绑定,完成客户端多媒体内容呈现(如图6)、数据动态化更新等关键需求,提升了客户端代码的可维护性。

3 结束语

本文论述了基于视频分析与深度学习的疫情防控系统的设计与实现过程,提出了一种面向多场景实时视频分析的技术架构。介绍了视频传输、缓冲设计、检测流程实现、数据持久化、客户端交互实现等内容。该系统利用深度学习技术进行场景图像检测并结合多种应用层协议实现实时监控、反馈、预警等功能,有效提升了疫情防控工作的智能化和信息化水平,达到了预期目标。面对日益增多的监控场景数量,系统在迭代过程中还需更多的关注计算资源的分布式部署或客户端计算资源的利用,以减轻中心化服务器节点的压力。

参考文献(References):

[1] 中华人民共和国国务院新闻办公室. 抗击新冠肺炎疫情的中国行动[N].人民日报,2020-06-08(010)

[2] 赵杨,曹文航.人工智能技术在新冠病毒疫情防控中的应用与思考[J].信息资源管理学报,2020,10(6):20-27,37

[3] Bochkovskiy A, Wang C Y, Liao H Y M. Yolov4:
Optimal  speed and accuracy of object detection[J].arXiv preprint arXiv:2004.10934,2020

[4] Sam D B, Peri S V, Sundararaman M N, et al. Locate, size and count:Accurately resolving people in dense crowds via detection[J]. IEEE transactions on pattern analysis and machine intelligence, 2020.

[5] 吴杨.基于RTMP协议的实时视频监控系统的设计与实现[D].浙江工业大学,2017

[6] 杨国东.安防巡逻机器人的行人检测与跟踪方法研究[D].昆明理工大学,2021

[7] He K, Zhang X, Ren S, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[J].IEEE transactions on pattern analysis and machine intelligence,2015,37(9):1904-1916

[8] Liu S, Qi L, Qin H, et al. Path aggregation network for instance segmentation[C] //Proceedings of the IEEE conference on computer vision and pattern recognition,2018:8759-8768

[9] Idrees H, Tayyab M, Athrey K, et al. Composition loss for counting, density map estimation and localization in dense crowds[C] //Proceedings of the European Conference on Computer Vision (ECCV),2018:532-546

[10] 刘旭.视频监控中的目标计数方法研究[D].中国科学技术大学,2018

[11] 南晓虎,丁雷.深度学习的典型目标检测算法综述[J].计算机应用研究,2020,37(S2):15-21

猜你喜欢 疫情防控深度学习 打赢疫情防控战的制胜机理前线(2020年3期)2020-03-132013~2018年乌鲁木齐市猩红热流行病学特征分析医学信息(2019年20期)2019-12-02安徽省人畜共患病细菌性传染病综述现代农业科技(2019年10期)2019-07-032013~2017年东莞市大岭山医院急诊科接种狂犬疫苗情况分析中国医药科学(2019年2期)2019-06-10关于梁山县一起输入性登革热疫情的调查处置分析中国卫生产业(2018年30期)2018-05-14有体验的学习才是有意义的学习江苏教育·中学教学版(2016年11期)2016-12-21电子商务中基于深度学习的虚假交易识别研究现代情报(2016年10期)2016-12-15MOOC与翻转课堂融合的深度学习场域建构新教育时代·教师版(2016年23期)2016-12-06大数据技术在反恐怖主义中的应用展望法制与社会(2016年32期)2016-12-01深度学习算法应用于岩石图像处理的可行性研究软件导刊(2016年9期)2016-11-07 相关热词搜索: 疫情 防控 深度