殳雪城 童曉斌 劉天宏 劉媛
摘要:隨著人們對安防意識的不斷增強,視頻監(jiān)控報警變得越來越重要,但傳統(tǒng)的設(shè)計方法暴露出時延高的缺點。本文結(jié)合邊緣計算的熱點,將視頻監(jiān)控與邊緣計算技術(shù)結(jié)合起來,設(shè)計了一種基于邊緣計算的視頻監(jiān)控報警系統(tǒng)。系統(tǒng)包括邊緣計算網(wǎng)關(guān),以EAI610為核心,采用幀間差分法處理視頻圖像數(shù)據(jù),運用Docker虛擬化容器技術(shù),分布式部署邊緣計算框架。通過實驗對比的方法,選定幀間差分法的關(guān)鍵參數(shù),二值化閾值為10,在此基礎(chǔ)上,測試分析了整個系統(tǒng)的最大報警平均時延為187.7 ms,最小報警平均時延為135.5 ms,實驗結(jié)果表明,基于邊緣計算的視頻監(jiān)控報警系統(tǒng)符合要求,且大大地降低了時延,為視頻監(jiān)控報警系統(tǒng)提供了新的思路,具有很高的應(yīng)用價值。
關(guān)鍵詞: 邊緣計算; 網(wǎng)關(guān); 視頻監(jiān)控系統(tǒng); 幀間差分法
【Abstract】 With the increasing awareness of security, video monitor and alarm become more and more important, but the traditional design method exposes the shortcomings of high delay. In this paper, the video monitor and alarm system based on edge computing is designed, which combines video monitor and alarm with edge computing. The system includes an edge computing gateway, which takes EAI610 as the core, uses temporal difference to process video image data, and uses Docker virtualization container technology to deploy a distributed edge computing framework. By comparing the experimental methods, the key parameters of temporal difference method are selected and the threshold value of binarization is 10. On this basis, the maximum average alarm delay of the whole system is 187.7 ms and the minimum average alarm delay is 135.5 ms. The experimental results show that the video monitor and alarm system based on edge computing meets the requirements. It reduces the time delay, which provides a new idea for video monitor and alarm system, and has high application value.
【Key words】 ?edge computing; gateway; video monitor and alarm; temporal difference
0 引 言
隨著生活水平的不斷提高,人們對安全的防范意識在不斷增強。作為安防系統(tǒng)的一個重要組成部分,視頻監(jiān)控報警系統(tǒng)在安防系統(tǒng)中扮演的角色越來越重要,同時也吸引了越來越多的關(guān)注[1-2]。視頻監(jiān)控系統(tǒng)最初的應(yīng)用場景包括交通安全、超市監(jiān)控和大型會場的安保等公共場所,近年來,則從公共場所逐漸轉(zhuǎn)向了家庭安防,從而推動了視頻監(jiān)控系統(tǒng)的快速發(fā)展。傳統(tǒng)的模擬監(jiān)控系統(tǒng)受限于距離的限制。遠程視頻監(jiān)控系統(tǒng)采用數(shù)字監(jiān)控系統(tǒng),傳輸距離不收限制。且將采集到的數(shù)據(jù)上傳至云平臺,在云平臺上處理,控制,暴露出時延比較高的缺點。
邊緣計算[3-4]是在靠近數(shù)據(jù)源頭的網(wǎng)絡(luò)邊緣側(cè), 融合網(wǎng)絡(luò)、計算、存儲及應(yīng)用等核心能力的開放平臺,近提供邊緣智能數(shù)據(jù)處理服務(wù),以滿足網(wǎng)絡(luò)敏捷連接、實時業(yè)務(wù)、數(shù)據(jù)優(yōu)化等應(yīng)用需求??梢跃徑庠破脚_的數(shù)據(jù)處理的負擔(dān),提高了數(shù)據(jù)處理的效率。同時由于傳感器與邊緣端更貼近,極大地降低了時延。
本文提出了一種基于邊緣計算的視頻監(jiān)控報警系統(tǒng),系統(tǒng)主要包括感知傳感器的節(jié)點的部署,邊緣計算網(wǎng)關(guān)和軟件平臺。研究的目的為搭建視頻監(jiān)控報警平臺,部署感知傳感器,添加邊緣計算的規(guī)則,實現(xiàn)視頻監(jiān)控異常報警功能,降低報警時延。
1 系統(tǒng)組成
本文采用EdgeX Foundry作為視頻監(jiān)控報警系統(tǒng)的核心框架,系統(tǒng)組成如圖1所示,包含羅技攝像頭270、EdgeX Foundry邊緣計算平臺和物聯(lián)網(wǎng)應(yīng)用平臺。具體流程如圖2所示。
首先通過羅技攝像頭對監(jiān)控區(qū)域進行數(shù)據(jù)圖像的采集,然后將獲得數(shù)據(jù)圖像通過幀差法進行處理判定,將判定后的結(jié)果通過MQTT通訊協(xié)議發(fā)送給EdgeX Foundry邊緣計算平臺,邊緣計算網(wǎng)關(guān)根據(jù)制定的規(guī)則邏輯,通過規(guī)則引擎和通知模塊完成事件的通知和報警。規(guī)則引擎模塊根據(jù)制定的規(guī)則,對報警傳感器進行聯(lián)動,執(zhí)行報警操作,通知模塊在滿足規(guī)則邏輯的情況下,通過郵件發(fā)送的方式,向指定的用戶發(fā)送報警通知郵件,最終實現(xiàn)視頻監(jiān)控報警功能。
2 移動目標檢測算法
移動目標檢測的目的是為了有效地提取到視頻中變化的部分,這是智能圖像處理的基本部分,是人工智能和機器視覺發(fā)展的基礎(chǔ)。在視頻監(jiān)控報警系統(tǒng)中進行移動目標檢測是安防系統(tǒng)的一個重要特征。移動目標檢測算法主要有光流法、背景差分法和幀差法。本文通過對比分析,選擇幀差法作為本文所采用的移動目標檢測算法。
3 邊緣計算平臺
3.1 EdgeX Foundry框架
邊緣計算要具備時效性、安全性、計算能力,并且部署在邊緣側(cè),對工程大小、內(nèi)存占用、CPU消耗等都有嚴格的要求,目前全球各大公司都加入了邊緣計算平臺系統(tǒng)的開發(fā)中,例如:Apache Edgent、OpenStack、EdgeX Foundry、微軟的 Azure IoT Edge、Google Cloud IoT 和亞馬遜的 AWS Greengrass 等[6]。
本文選取的邊緣計算平臺EdgeX Foundry[7]作為邊緣計算網(wǎng)關(guān),EdgeX Foundry是由Linux基金會運營的廠商中立的開放源碼項目,框架由2017年開始被人們所熟知,旨在為“物聯(lián)網(wǎng)邊緣計算”創(chuàng)建公共開放的框架。EdgeX Foundry 的邊緣計算系統(tǒng)框架如圖3所示。
由圖3可看出EdgeX Foundry框架從南到北依次為:設(shè)備服務(wù)層、核心服務(wù)層、支持服務(wù)層、導(dǎo)出服務(wù)層。框架分為南北兩側(cè)。南側(cè)包括:在物理領(lǐng)域內(nèi)的所有物聯(lián)網(wǎng)對象,以及與這些設(shè)備、傳感器、執(zhí)行器和其他物聯(lián)網(wǎng)對象直接通信并從中收集數(shù)據(jù)的網(wǎng)絡(luò)邊緣,統(tǒng)稱為“南側(cè)”。北側(cè)包括:將數(shù)據(jù)收集、存儲、聚合、分析并轉(zhuǎn)換為信息的云(或企業(yè)系統(tǒng)),以及與云通信的網(wǎng)絡(luò)部分,稱為網(wǎng)絡(luò)的“北側(cè)”。
4個服務(wù)層從南側(cè)到北側(cè)分別為:設(shè)備服務(wù)層、核心服務(wù)層、支持服務(wù)層、導(dǎo)出服務(wù)層。對此可做闡釋分述如下。
(1)設(shè)備服務(wù)層(DS):設(shè)備服務(wù)層負責(zé)與南向設(shè)備交互。
(2)核心服務(wù)層(CS):核心服務(wù)層分隔了邊緣的北側(cè)和南側(cè)層。核心服務(wù)包括以下組件:核心數(shù)據(jù),命令,元數(shù)據(jù),注冊和配置。
(3)支持服務(wù)層(SS):支持服務(wù)層包含廣泛的微服務(wù),該層微服務(wù)主要提供邊緣分析服務(wù)和智能分析服務(wù)。
(4)導(dǎo)出服務(wù)層(ES):北向應(yīng)用可以在網(wǎng)關(guān)注冊,并獲取其想獲得的南向設(shè)備的數(shù)據(jù);設(shè)置數(shù)據(jù)發(fā)送的方向;設(shè)置數(shù)據(jù)傳輸?shù)母袷健?/p>
在此基礎(chǔ)上,研究得到2個增強的基礎(chǔ)系統(tǒng)服務(wù)分別為:系統(tǒng)管理,安全基礎(chǔ)設(shè)施。這里給出概述如下。
(1)設(shè)備與系統(tǒng)管理:提供EdgeX Foundry微服務(wù)的安裝、升級、啟動、停止和監(jiān)視, 以及BIOS固件、操作系統(tǒng)和其他與網(wǎng)關(guān)相關(guān)的軟件。
(2)安全:EdgeX Foundry內(nèi)外的安全元件保護由EdgeX Foundry管理的設(shè)備、傳感器和其他物聯(lián)網(wǎng)對象的數(shù)據(jù)和命令。
3.2 規(guī)則引擎
3.2.1 規(guī)則引擎作為導(dǎo)出微服務(wù)客戶端
規(guī)則引擎微服務(wù)提供了一種邊緣事件觸發(fā)機制。規(guī)則引擎服務(wù)接受傳感器傳入的數(shù)據(jù),并觸發(fā)設(shè)備,執(zhí)行聯(lián)動。因此,規(guī)則引擎在網(wǎng)絡(luò)邊緣處或附近提供“智能”,以加快響應(yīng)時間。
該實現(xiàn)在其核心使用一個Drools規(guī)則引擎。Drools是一個開源規(guī)則引擎。這種微服務(wù)能夠被第三方提供的許多其他邊緣分析功能所取代或增強。
規(guī)則引擎是一個自動注冊為導(dǎo)出微服務(wù)的客戶端。當規(guī)則引擎微服務(wù)啟動時,將會自動調(diào)用導(dǎo)出客戶端注冊微服務(wù),將自己注冊為從核心數(shù)據(jù)中輸出的所有設(shè)備和傳感器讀數(shù)的客戶端。作為導(dǎo)出微服務(wù)的客戶端,通過導(dǎo)出微服務(wù)分發(fā)數(shù)據(jù),規(guī)則引擎接收所有事件和讀數(shù)?;诮邮艿降臄?shù)據(jù),執(zhí)行制定的規(guī)則,并且規(guī)則引擎通過核心命令微服務(wù),觸發(fā)對設(shè)備的任何驅(qū)動,實現(xiàn)設(shè)備間的聯(lián)動,其流程圖如4所示。
3.2.2 規(guī)則引擎直接連接核心數(shù)據(jù)
在對時間敏感的生產(chǎn)環(huán)境中,大量數(shù)據(jù)是由連接的傳感器生成的,將規(guī)則引擎微服務(wù)直接連接到核心數(shù)據(jù),從核心數(shù)據(jù)微服務(wù)接受數(shù)據(jù)。其流程圖如圖5所示。
3.2.3 規(guī)則引擎客戶端高級交互
規(guī)則引擎微服務(wù)附帶了一個RESTful服務(wù),可以添加和刪除新的規(guī)則。RESTfulAPI允許在JSON中定義新規(guī)則,通過REST POST動態(tài)添加到規(guī)則引擎中。微服務(wù)將提供的JSON數(shù)據(jù)轉(zhuǎn)換為Drools規(guī)則文件(.drl文件)。每個規(guī)則必須與一個唯一的名稱相關(guān)聯(lián),該名稱用于標識規(guī)則和保存規(guī)則的Drool文件。還可以按名稱請求刪除規(guī)則。其交互圖如圖6所示。
3.3 通知引擎
3.3.1通知引擎模塊
通知具有信息性,而警報通常具有更重要、關(guān)鍵或緊急的性質(zhì),可能需要立即采取行動。其系統(tǒng)圖如圖7所示。
圖7顯示了警報和通知的高級體系結(jié)構(gòu)。在左側(cè),API是為其他微服務(wù)、盒內(nèi)應(yīng)用提供的,這些API可以是REST、AMQP、MQTT或任何標準應(yīng)用程序協(xié)議。在右側(cè),通知接收器可以是云端或個人服務(wù)器或應(yīng)用程序系統(tǒng)。通過調(diào)用訂閱RESTful接口,訂閱特定類型的通知,當事件發(fā)生時,接收者通過定義的接收通道獲取適當?shù)耐ㄖ?。接收通道包括短消息、電子郵件、REST回調(diào)、AMQP、MQTT等。
當警報和通知從任何接口接收通知時,通知將在內(nèi)部傳遞給通知處理器。通知處理器首先保持接收通知,如果通知是關(guān)鍵的(severity=“critical”),則立即將其傳遞給分發(fā)協(xié)調(diào)器。對于普通通知(severity=“normal”),即等待消息調(diào)度程序批量處理。
當分發(fā)協(xié)調(diào)器收到通知時,首先查詢訂閱,以獲取需要獲取此通知及其接收通道信息的接收者。根據(jù)通道信息,分發(fā)協(xié)調(diào)器將此通知傳遞給相應(yīng)的通道發(fā)送者。然后,通道發(fā)送者向訂閱的接收者發(fā)送通知。
3.3.2 通知引擎交互
當接收到一個關(guān)鍵通知時,通知首先需要持續(xù),并立即觸發(fā)分發(fā)過程,更新通知狀態(tài)后,通知將響應(yīng)客戶端以指示已接受通知,其高級交互圖如圖8所示。
4 實驗實施與結(jié)果分析
本文采用的是羅技270攝像頭傳感器,嵌入式開發(fā)板采用的是openailab公司的EAI610-PO[8],具體參數(shù)見表1,安裝64位的Ubuntu16.04操作系統(tǒng),配置Python+OpenCV環(huán)境。EdgeX Foundry是微服務(wù)架構(gòu),采用的是golang高并發(fā)語言設(shè)計,本文在開發(fā)板上配置golang環(huán)境,安裝Docker,docker-compose,運用Docker[9]虛擬化容器技術(shù)部署EdgeX Foundry各微服務(wù)。
4.1 視頻采集處理模塊
視頻處理模塊的核心是對運動物體的檢測和跟蹤[10]。視頻處理流程如圖9所示,進行運動物體檢測和跟蹤的算法的主要步驟包括:
(1)幀差計算:將相鄰的兩幀進行幀差計算,這是圖像處理的基礎(chǔ),后續(xù)的步驟在此基礎(chǔ)上進行。
(2)灰度圖像轉(zhuǎn)換:采集的視頻圖像是彩色圖像,彩色圖像包含紅綠藍(RGB)三個通道,圖像的彩色對運動物體的檢測與跟蹤沒有任何影響,但是卻會增加圖像處理系統(tǒng)的復(fù)雜度,所以將彩色圖像轉(zhuǎn)換為灰度圖像,減小系統(tǒng)冗余。
(3)高斯模糊:指定高斯核的寬和高(必須是奇數(shù)),以及高斯函數(shù)沿X,Y方向的標準差。本文指定2個標準差都為默認值0,函數(shù)會根據(jù)核函數(shù)的大小自行計算。高斯模糊的目的是為了將運動檢測的目標的高斯濾波過濾掉,避免出現(xiàn)干擾。
(4)二值化圖像:在圖像轉(zhuǎn)換成灰階后,為了使圖像更加簡潔,經(jīng)過二值化后的圖像只剩黑白兩色。
(5)腐蝕膨脹:腐蝕運算, 即局部最小值運算, 用于消除圖像中不相關(guān)的細節(jié)。腐蝕即是將圖像與核進行卷積,求出局部最小值,減小圖像中的高亮區(qū);膨脹與腐蝕是相反操作,膨脹運算,即局部最大值運算,用于橋接細節(jié)裂縫,其目的是為了前后兩幀對比更加明顯,有利于找到前景的輪廓。
(6)輪廓的尋找:使用OpenCV中的cv2.findCountours函數(shù)尋找輪廓,此函數(shù)可以將輪廓上的冗余去掉,節(jié)省了系統(tǒng)內(nèi)存的開支。
(7)運動物體標記:計算輪廓的尺寸,并繪出外框?qū)⑦\動的物體標記,并保存圖片,輸出信息。
4.2 報警模塊
報警模塊是基于EdgeX Foundry框架,將此框架編譯成ARM架構(gòu),運用Docker虛擬化容器技術(shù)部署在EAI610開發(fā)板上,啟動各個模塊微服務(wù),通過軟件平臺,進行設(shè)備的注冊,本文選用MQTT[11]通訊協(xié)議,視頻處理模塊輸出的信息通過MQTT傳送至EdgeX Foundry邊緣計算網(wǎng)關(guān),信息存儲至核心數(shù)據(jù)庫,核心數(shù)據(jù)庫通過ZeroMQ[12]發(fā)布數(shù)據(jù),規(guī)則引擎微服務(wù)訂閱數(shù)據(jù),判斷規(guī)則,通過核心命令微服務(wù),向Modbus微服務(wù)發(fā)送命令,來控制繼電器開關(guān)的閉合,與此同時向通知微服務(wù)發(fā)送命令,通知微服務(wù)將報警信息以郵件的方式發(fā)送給用戶。
搭建好視頻監(jiān)控報警系統(tǒng)后,編寫繼電器電源開關(guān)的設(shè)備文件,在軟件平臺上添加設(shè)備,本文通過Postman的post命令上傳規(guī)則,設(shè)定當視頻處理模塊返回的信息為2時,則觸發(fā)邊緣計算,繼電器電源開關(guān)設(shè)定為打開(即設(shè)置值為1),并向用戶郵件發(fā)送報警信息;當視頻處理模塊返回的信息為0時,繼電器電源開關(guān)設(shè)定為關(guān)閉(即設(shè)置值為0)。在通知微服務(wù)里面注冊通知的郵箱。生成了2個規(guī)則文件,如圖10所示。
4.3 實驗結(jié)果
實驗場景設(shè)置為:EAI610開發(fā)板距離實驗室的大門大概5 m的距離,人從門口走向設(shè)備,在此過程中,對人這個運動物體進行實時的檢測與跟蹤。
4.3.1 閾值對系統(tǒng)的影響
如圖11~圖14所示,最小運動檢測區(qū)域都取5 000,有燈光照射下,閾值分別為2,10,15,20,對比實驗結(jié)果和對應(yīng)的閾值處理的結(jié)果。
5 結(jié)束語
本文將視頻監(jiān)控報警技術(shù)與邊緣計算框架結(jié)合起來,采用微服務(wù)架構(gòu),虛擬化容器部署,設(shè)計了基于邊緣計算的視頻監(jiān)控報警系統(tǒng)。針對不同的參數(shù),進行對比實驗,分析出最適合的參數(shù)。相對于其他的視頻監(jiān)控報警系統(tǒng),本系統(tǒng)沒有采用GPRS短信模塊,運用邊緣計算框架中的規(guī)則引擎與通知微服務(wù),實現(xiàn)了邊緣端的規(guī)則處理,減輕了云端的壓力,同時降低了時延,微服務(wù)架構(gòu)更加靈活,部署起來更加方便。實驗結(jié)果充分證明了系統(tǒng)的穩(wěn)定性與可靠性,為視頻監(jiān)控報警系統(tǒng)的設(shè)計提供了一個新的思路,與此同時為邊緣計算的實施提供了參考,具有一定的參考價值。
參考文獻
[1] 劉楠. 基于Android平臺的遠程視頻監(jiān)控報警系統(tǒng)研究[D]. 長春:吉林大學(xué),2016.
[2]孟慶博. 基于Android平臺視頻實時監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[D]. 長春:吉林大學(xué),2016.
[3]SATYANARAYANAN M. The emergence of edge computing[J]. Computer, 2017, 50(1):30.
[4]SHI W, CAO J, ZHANG Q, et al. Edge computing: Vision and challenges[J]. IEEE Internet of Things Journal, 2016, 3(5):637.
[5]吳雙. 基于MFC+OpenCV的視頻監(jiān)控區(qū)域入侵檢測系統(tǒng)設(shè)計與實現(xiàn)[D]. 濟南:山東師范大學(xué),2017.
[6]施巍松,孫輝,曹杰,等. 邊緣計算:萬物互聯(lián)時代新型計算模型[J]. 計算機研究與發(fā)展,2017,54(5):907.
[7]NA W, LEE Y, DAO N N, et al. Directional link scheduling for real-time data processing in smart manufacturing system[J]. IEEE Internet of Things Journal, 2018,5(5):3661.
[8]佚名. 瑞芯微首發(fā)ARM架構(gòu)人工智能開發(fā)平臺[J]. 智能城市,2018,4(17):9.
[9]李東光,劉智平,姜雨菲. 蟻群優(yōu)化算法的Docker集群調(diào)度策略[J]. 西安工業(yè)大學(xué)學(xué)報,2019,39(3):330.
[10]韓宇,張磊,吳澤民,等. 基于嵌入式樹莓派和OpenCV的運動檢測與跟蹤系統(tǒng)[J]. 電視技術(shù),2017,41(2):6.
[11]胡存,駱德漢,童懷. 基于Modbus與MQTT融合工業(yè)能耗網(wǎng)關(guān)系統(tǒng)設(shè)計[J]. 物聯(lián)網(wǎng)技術(shù),2019,9(4):49.
[12]崔曉佳,張云,劉錦鋒. 基于ZeroMQ的教學(xué)資源存儲系統(tǒng)的設(shè)計[J]. 現(xiàn)代計算機(專業(yè)版),2018(28):96.