孫夏恩,顏王亮
摘? 要: 根據(jù)疫情期間各場(chǎng)所的防疫信息化、智能化需求,設(shè)計(jì)了一種基于視頻分析與深度學(xué)習(xí)的疫情防控系統(tǒng)。從口罩檢測(cè)和人群計(jì)數(shù)角度,在多場(chǎng)景下通過實(shí)時(shí)聚合監(jiān)控和風(fēng)險(xiǎn)預(yù)警,配合現(xiàn)場(chǎng)語音反饋和后臺(tái)數(shù)據(jù)記錄,提升疫情防控管理效能。系統(tǒng)運(yùn)用了RTMP、HTTP、WebSocket三種應(yīng)用層協(xié)議,結(jié)合緩沖區(qū)、雙進(jìn)程、多線程設(shè)計(jì),利用深度學(xué)習(xí)網(wǎng)絡(luò)完成了對(duì)最新緩沖幀的實(shí)時(shí)檢測(cè),最終基于Flask框架實(shí)現(xiàn)客戶端交互。
關(guān)鍵詞: 疫情防控; 深度學(xué)習(xí); 人群計(jì)數(shù); 口罩檢測(cè); 視頻分析; RTMP
中圖分類號(hào):TP391.4;TP183;R184.1? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? 文章編號(hào):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 引言
科學(xué)技術(shù)是人類同疾病較量的銳利武器,人類戰(zhàn)勝大災(zāi)大疫離不開科學(xué)發(fā)展和技術(shù)創(chuàng)新[1]。疫情大數(shù)據(jù)地圖、出入校人臉識(shí)別系統(tǒng)、健康碼等疫情背景下誕生的應(yīng)用,都很好地體現(xiàn)了科學(xué)技術(shù)在現(xiàn)代社會(huì)疫病預(yù)防和控制中發(fā)揮的重要作用。與此同時(shí),深化計(jì)算機(jī)視覺、生物特征識(shí)別、監(jiān)控圖像目標(biāo)提取等技術(shù)的應(yīng)用也是推進(jìn)社會(huì)治理模式創(chuàng)新與智慧城市建設(shè)的重要舉措[2],在疫情防控常態(tài)化背景下,智能化與信息化的方法具有低風(fēng)險(xiǎn)、低人力消耗、結(jié)果精確等眾多優(yōu)勢(shì),有效維護(hù)了疫情期間的社會(huì)秩序。
本文構(gòu)建一種基于視頻分析與深度學(xué)習(xí)的疫情防控系統(tǒng),依托多場(chǎng)景監(jiān)控資源,利用深度學(xué)習(xí)技術(shù),部署人群計(jì)數(shù)、口罩檢測(cè)模型,并配合直播視頻傳輸技術(shù),構(gòu)建高效的緩沖策略和異步檢測(cè)流程,實(shí)現(xiàn)了多場(chǎng)景的聚合監(jiān)控和檢測(cè)能力,為管理人員和普通流動(dòng)人員提供雙端反饋,充分發(fā)揮監(jiān)控視頻的價(jià)值,提升場(chǎng)所疫情防控能力。
1 疫情防控系統(tǒng)設(shè)計(jì)
1.1 功能模塊設(shè)計(jì)
基于視頻分析與深度學(xué)習(xí)的疫情防控系統(tǒng),按功能劃分為三個(gè)模塊(如圖1),分別是口罩檢測(cè)模塊、人群計(jì)數(shù)模塊和管理模塊。其中,口罩檢測(cè)模塊和人群計(jì)數(shù)模塊輸入均為某場(chǎng)景RGB圖像。口罩檢測(cè)模塊利用Yolov4網(wǎng)絡(luò)[3],輸出為畫面中人員口罩佩戴情況的JSON標(biāo)注文件,并傳遞語音提醒信息至客戶端;人群計(jì)數(shù)模塊利用LSC-CNN網(wǎng)絡(luò)[4],輸出為畫面人群計(jì)數(shù)結(jié)果數(shù)據(jù),快速發(fā)現(xiàn)人群聚集性情況;管理人員模塊的輸入為多場(chǎng)景RTMP監(jiān)控視頻流[5],實(shí)時(shí)聚合展示口罩檢測(cè)模塊和人群計(jì)數(shù)模塊輸出結(jié)果,實(shí)現(xiàn)多場(chǎng)景聚合監(jiān)控功能,同時(shí)該模塊也具備監(jiān)控?cái)?shù)據(jù)記錄查看和參數(shù)配置功能。
1.2 技術(shù)架構(gòu)設(shè)計(jì)
軟件整體架構(gòu)為C/S模式(如圖2),包含服務(wù)器節(jié)點(diǎn)和客戶端節(jié)點(diǎn)(包含監(jiān)控輸入客戶端和管理人員客戶端)。系統(tǒng)作為結(jié)合視頻分析和深度學(xué)習(xí)技術(shù)的落地應(yīng)用,需要處理來自多監(jiān)控場(chǎng)景輸入的視頻流,并進(jìn)行檢測(cè)分析和反饋。在計(jì)算資源部署方面,系統(tǒng)采取分別架設(shè)視頻直播服務(wù)器、GPU服務(wù)器的方式,降低RTMP視頻直播流與深度學(xué)習(xí)人群計(jì)數(shù)和口罩檢測(cè)業(yè)務(wù)的耦合。在深度學(xué)習(xí)模型部署方面,系統(tǒng)將口罩檢測(cè)模塊和人群計(jì)數(shù)模塊封裝,以檢測(cè)API的方式,部署于GPU服務(wù)器中,并配置CUDA驅(qū)動(dòng)。在應(yīng)用層協(xié)議方面,每一個(gè)監(jiān)控輸入客戶端均基于RTMP協(xié)議推流至直播服務(wù)器,GPU服務(wù)器以及管理人員客戶端接收的視頻流基于RTMP協(xié)議從直播服務(wù)器進(jìn)行拉取,其余涉及業(yè)務(wù)邏輯的網(wǎng)絡(luò)數(shù)據(jù)傳輸基于HTTP協(xié)議和WebSocket協(xié)議。
2 疫情防控系統(tǒng)實(shí)現(xiàn)
2.1 視頻傳輸過程
直播Nginx服務(wù)器配置RTMP應(yīng)用之后,將針對(duì)場(chǎng)所內(nèi)不同場(chǎng)景的視頻流進(jìn)行編號(hào),作為RTMP協(xié)議中的流標(biāo)識(shí)。每一處場(chǎng)景的監(jiān)控視頻流將對(duì)應(yīng)惟一確定的URL,可以表示為“rtmp://IP/應(yīng)用名/場(chǎng)景編號(hào)”。直播服務(wù)器在運(yùn)行過程中維護(hù)著系統(tǒng)中的多場(chǎng)景直播流數(shù)據(jù)。
2.2 構(gòu)建輸入緩沖區(qū)
GPU服務(wù)器中人群計(jì)數(shù)算法和口罩檢測(cè)算法所需要的輸入是圖像數(shù)據(jù),通過循環(huán)拉取各RTMP視頻流的方式可以持續(xù)得到最新幀。在多場(chǎng)景的疫情防控系統(tǒng)中,多條直播通道的實(shí)時(shí)畫面均需要經(jīng)過深度學(xué)習(xí)模型進(jìn)行檢測(cè)才能獲得結(jié)果。因此,為了去除視頻流拉取與深度學(xué)習(xí)模型檢測(cè)之間的耦合并提升檢測(cè)效率,GPU服務(wù)器設(shè)計(jì)了輸入緩沖區(qū)(如圖3),實(shí)現(xiàn)循環(huán)緩沖刷新機(jī)制。
輸入緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)為數(shù)組,在內(nèi)存中為順序存儲(chǔ)結(jié)構(gòu)。緩沖區(qū)每一個(gè)數(shù)據(jù)元素對(duì)應(yīng)一個(gè)類對(duì)象,包含最新緩沖幀、時(shí)間戳(Timestamp)、啟用狀態(tài)(Status)、過期狀態(tài)(Outdated)、待檢測(cè)任務(wù)類型等數(shù)據(jù)項(xiàng)。管理人員可根據(jù)實(shí)際監(jiān)控需要配置啟用狀態(tài),對(duì)不同場(chǎng)景的啟用狀態(tài)信息進(jìn)行更新,經(jīng)啟用后的緩沖區(qū)數(shù)據(jù)元素才會(huì)被實(shí)時(shí)刷新。
刷新線程的工作依賴OpenCV庫,并構(gòu)建等待隊(duì)列,所有啟用的視頻流獲取對(duì)象(Video Capture)均會(huì)進(jìn)入隊(duì)列中。刷新線程每次取出隊(duì)首的Video Capture,匹配緩沖區(qū)中對(duì)應(yīng)數(shù)據(jù)元素進(jìn)行刷新,更新最新幀和Timestamp,并標(biāo)記Outdated為0,表示狀態(tài)未過期,刷新完畢后插入隊(duì)尾,如此循環(huán)。若出現(xiàn)匹配的數(shù)據(jù)元素并未啟用的情況,該Video Capture將被銷毀,不再插入隊(duì)尾。
2.3 口罩檢測(cè)模型
口罩檢測(cè)任務(wù)為多目標(biāo)檢測(cè)任務(wù),目標(biāo)類別為兩類,分別是佩戴口罩的人臉目標(biāo)和未佩戴口罩的人臉目標(biāo)。本文通過網(wǎng)絡(luò)爬蟲獲取相關(guān)圖像、校園內(nèi)蹲點(diǎn)拍攝的方法,制作口罩檢測(cè)數(shù)據(jù)集,對(duì)兩類目標(biāo)進(jìn)行標(biāo)注。在目標(biāo)檢測(cè)網(wǎng)絡(luò)選取上,疫情防控系統(tǒng)使用Yolov4網(wǎng)絡(luò)作為口罩檢測(cè)的端到端模型。該網(wǎng)絡(luò)運(yùn)用了眾多免費(fèi)包和特價(jià)包的優(yōu)化技巧[6],并基于交叉階段部分連接優(yōu)化的CSPDarknet53進(jìn)行特征提取,使用改進(jìn)的SPP[7]和PANet[8]分別增加感受域和保留淺層特征,提高了特征融合的效率。模型最終在自定義口罩檢測(cè)數(shù)據(jù)集的測(cè)試集上mAP@0.5達(dá)到0.83,且在不同明暗環(huán)境下都有較好的檢測(cè)效果。
2.4 人群計(jì)數(shù)模型
系統(tǒng)采用訓(xùn)練于UCF-QNRF數(shù)據(jù)集[9]上的LSC-CNN網(wǎng)絡(luò)作為系統(tǒng)的人群計(jì)數(shù)模型。該模型從檢測(cè)和定位角度完成計(jì)數(shù)任務(wù),針對(duì)不同語義深度特征的張量進(jìn)行信息融合、在不同分辨率層的像素上開展人頭大小估計(jì)并分區(qū)預(yù)測(cè)、多層獨(dú)立訓(xùn)練最終融合輸出檢測(cè)結(jié)果。有效地解決了人頭定位、大小估計(jì)、檢測(cè)框生成等關(guān)鍵點(diǎn)。因此,LSC-CNN網(wǎng)絡(luò)比基于密度圖預(yù)測(cè)[10]的其他人群計(jì)數(shù)網(wǎng)絡(luò)更適用于疫情防控系統(tǒng)所面對(duì)的多種類疏密場(chǎng)景,擁有較好的平均性能。同時(shí),其相較于單階段目標(biāo)檢測(cè)網(wǎng)絡(luò)或者RCNN系列為代表的雙階段目標(biāo)檢測(cè)網(wǎng)絡(luò)[11]在遠(yuǎn)景人群、中小目標(biāo)計(jì)數(shù)上有更好的表現(xiàn)。
2.5 構(gòu)建檢測(cè)API與輸出緩沖區(qū)
系統(tǒng)中的口罩檢測(cè)、人群計(jì)數(shù)模型被封裝成為檢測(cè)API形式,對(duì)外提供口罩檢測(cè)能力和人群計(jì)數(shù)能力,通過函數(shù)調(diào)用即可實(shí)現(xiàn)模型在實(shí)時(shí)輸入下的檢測(cè)。輸入緩沖區(qū)中的數(shù)據(jù)經(jīng)過檢測(cè)API實(shí)現(xiàn)層中的模型運(yùn)算后,得到的結(jié)果存儲(chǔ)在新構(gòu)建的輸出緩沖區(qū)中,該輸出緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)與輸入緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)相同。檢測(cè)API在接口實(shí)現(xiàn)部分具有以下三個(gè)特點(diǎn)。
⑴ 子進(jìn)程運(yùn)行。模型運(yùn)行于系統(tǒng)子進(jìn)程中,需要通過共享內(nèi)存的方式獲得父進(jìn)程中的輸入緩沖區(qū)資源作為輸入對(duì)象以及父進(jìn)程中的輸出緩沖區(qū)資源作為輸出對(duì)象。在資源共享過程中,輸入緩沖區(qū)內(nèi)部數(shù)據(jù)按照元素索引實(shí)現(xiàn)分布式鎖,提升了并發(fā)效率。檢測(cè)流程將采取輪轉(zhuǎn)分析的形式,由父進(jìn)程中開啟的檢測(cè)線程負(fù)責(zé)循環(huán)調(diào)度各場(chǎng)景最新緩沖幀,依次輸入子進(jìn)程進(jìn)行檢測(cè)。深度學(xué)習(xí)模型的運(yùn)算屬于系統(tǒng)的耗時(shí)任務(wù),通過創(chuàng)建子進(jìn)程運(yùn)行的方式可以使得任務(wù)并行以提高系統(tǒng)效率。
⑵ 單例模式。每一個(gè)深度學(xué)習(xí)模型在系統(tǒng)初始化時(shí)間段被創(chuàng)建并一直存在于顯存存中,保持單實(shí)例運(yùn)行。可以避免在運(yùn)行過程中因多次創(chuàng)建模型造成的顯存溢出問題。
⑶ 校驗(yàn)機(jī)制。檢測(cè)前需要對(duì)輸入的緩沖幀進(jìn)行Timestamp校驗(yàn),保證待檢測(cè)的最新緩沖幀距今時(shí)差并未超出設(shè)定閾值。否則,該圖像所在數(shù)據(jù)元素的Outdated字段將被標(biāo)記為1,系統(tǒng)將拋出自定義異常并進(jìn)入異常處理程序,重啟輸入緩沖區(qū)的緩沖刷新線程。
2.6 數(shù)據(jù)持久化
在子進(jìn)程循環(huán)更新輸出緩沖區(qū)數(shù)據(jù)的過程中,父進(jìn)程會(huì)同步數(shù)據(jù)到位于外存的MySQL數(shù)據(jù)庫,以實(shí)現(xiàn)數(shù)據(jù)持久化記錄(如圖4)。在數(shù)據(jù)庫中,圖像和JSON標(biāo)注文件均采取路徑存儲(chǔ)的方式。
管理人員可以按照記錄時(shí)間、場(chǎng)景編號(hào)、檢測(cè)任務(wù)類型、檢測(cè)結(jié)果等眾多條件進(jìn)行結(jié)構(gòu)化查詢,發(fā)揮關(guān)系型數(shù)據(jù)庫的優(yōu)勢(shì),保證疫情防控系統(tǒng)后期復(fù)盤的能力。
2.7 客戶端交互實(shí)現(xiàn)
疫情防控系統(tǒng)在客戶端與服務(wù)端之間存在兩類交互邏輯,第一類是基于RTMP協(xié)議的直播視頻流交互,與Nginx直播服務(wù)器建立連接;第二類是基于HTTP協(xié)議以及WebSocket協(xié)議的業(yè)務(wù)數(shù)據(jù)流交互,與GPU服務(wù)器建立連接,由基于Flask框架部署的業(yè)務(wù)前臺(tái)與客戶端實(shí)現(xiàn)雙向通信。
2.7.1 服務(wù)端Flask框架
系統(tǒng)調(diào)用Flask-SocketIO模塊使得Flask Web應(yīng)用具有封裝WebSocket協(xié)議的能力,實(shí)現(xiàn)GPU服務(wù)器和客戶端的全雙工通信,以及服務(wù)端推送信息的功能。通過部署參數(shù)配置和記錄查詢等HTTP接口,客戶端能夠?qū)崟r(shí)調(diào)整監(jiān)控場(chǎng)景啟用狀態(tài)、預(yù)警閾值、分析頻率等參數(shù),進(jìn)行記錄分析等。
2.7.2 輸入客戶端
輸入客戶端負(fù)責(zé)視頻的推流,將監(jiān)控?cái)z像頭等外部設(shè)備采集到的視頻流推送到Nginx直播服務(wù)器。同時(shí),輸入客戶端承擔(dān)著面向流動(dòng)人員的反饋功能。輸入客戶端在保持長連接過程中,對(duì)于接收到的服務(wù)端推送的文字信息進(jìn)行語音轉(zhuǎn)換與播報(bào),實(shí)現(xiàn)口罩佩戴提醒(如圖5)以及場(chǎng)景內(nèi)人群聚集性預(yù)警。
2.7.3 管理人員客戶端
管理人員客戶端與GPU服務(wù)器也實(shí)現(xiàn)了長連接機(jī)制且傳輸內(nèi)容涉及圖像資源,為管理人員客戶端頁面的多場(chǎng)景聚合監(jiān)控功能提供數(shù)據(jù)側(cè)支持。管理人員客戶端采用了MVVM設(shè)計(jì)模式,結(jié)合觀察者模式實(shí)現(xiàn)數(shù)據(jù)的雙向綁定,完成客戶端多媒體內(nèi)容呈現(xiàn)(如圖6)、數(shù)據(jù)動(dòng)態(tài)化更新等關(guān)鍵需求,提升了客戶端代碼的可維護(hù)性。
3 結(jié)束語
本文論述了基于視頻分析與深度學(xué)習(xí)的疫情防控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)過程,提出了一種面向多場(chǎng)景實(shí)時(shí)視頻分析的技術(shù)架構(gòu)。介紹了視頻傳輸、緩沖設(shè)計(jì)、檢測(cè)流程實(shí)現(xiàn)、數(shù)據(jù)持久化、客戶端交互實(shí)現(xiàn)等內(nèi)容。該系統(tǒng)利用深度學(xué)習(xí)技術(shù)進(jìn)行場(chǎng)景圖像檢測(cè)并結(jié)合多種應(yīng)用層協(xié)議實(shí)現(xiàn)實(shí)時(shí)監(jiān)控、反饋、預(yù)警等功能,有效提升了疫情防控工作的智能化和信息化水平,達(dá)到了預(yù)期目標(biāo)。面對(duì)日益增多的監(jiān)控場(chǎng)景數(shù)量,系統(tǒng)在迭代過程中還需更多的關(guān)注計(jì)算資源的分布式部署或客戶端計(jì)算資源的利用,以減輕中心化服務(wù)器節(jié)點(diǎn)的壓力。
參考文獻(xiàn)(References):
[1] 中華人民共和國國務(wù)院新聞辦公室. 抗擊新冠肺炎疫情的中國行動(dòng)[N].人民日?qǐng)?bào),2020-06-08(010)
[2] 趙楊,曹文航.人工智能技術(shù)在新冠病毒疫情防控中的應(yīng)用與思考[J].信息資源管理學(xué)報(bào),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協(xié)議的實(shí)時(shí)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].浙江工業(yè)大學(xué),2017
[6] 楊國東.安防巡邏機(jī)器人的行人檢測(cè)與跟蹤方法研究[D].昆明理工大學(xué),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] 劉旭.視頻監(jiān)控中的目標(biāo)計(jì)數(shù)方法研究[D].中國科學(xué)技術(shù)大學(xué),2018
[11] 南曉虎,丁雷.深度學(xué)習(xí)的典型目標(biāo)檢測(cè)算法綜述[J].計(jì)算機(jī)應(yīng)用研究,2020,37(S2):15-21