王小強(qiáng),趙乾佑,戚 進(jìn)
(上海交通大學(xué) 機(jī)械與動力工程學(xué)院,上海 200240)
隨著社會的發(fā)展,高層建筑逐漸增多,電梯作為高層建筑必不可少的一種運輸工具,已然成為社會發(fā)展和進(jìn)步的標(biāo)志之一,在人們的生活中起到了不可或缺的作用。然而,作為一種高精密的特種設(shè)備,電梯由許多機(jī)械電氣設(shè)備組成,存在發(fā)生故障進(jìn)而引發(fā)安全問題的可能性。國家及相應(yīng)行業(yè)也出具了相關(guān)標(biāo)準(zhǔn),對由設(shè)備本身引發(fā)的安全問題做最大可能的控制。但是乘梯中還有另外一類由乘客引發(fā)的安全問題是這些標(biāo)準(zhǔn)無法控制的,即乘客在乘坐電梯時做出的異常行為動作,如乘客在轎廂內(nèi)的扒門、暴力、暈倒等異常行為活動[1]。此類行為通常是造成現(xiàn)代電梯安全事故的主要因素之一。對于此類問題,傳統(tǒng)的解決方式通常是配備專門的人員對電梯進(jìn)行實時監(jiān)控。然而,相關(guān)人員一般無法長時間專注監(jiān)控視頻,繼而無法及時地對異常行為做出反應(yīng),無法很好地控制相關(guān)行為?;诖?,本文針對梯內(nèi)乘客異常行為,基于深度學(xué)習(xí)模型建立一套遠(yuǎn)程的識別-監(jiān)控-報警系統(tǒng),以減輕相關(guān)人員的負(fù)擔(dān),同時也能及時發(fā)出通知,從而避免安全事故的發(fā)生。
本系統(tǒng)采用瀏覽器/服務(wù)器(Browser/Server,B/S)架構(gòu)設(shè)計,不用使用專門的客戶端,方便相關(guān)人員以各種移動設(shè)備進(jìn)入系統(tǒng)查看實時的監(jiān)控畫面以及收到相應(yīng)通知。
本系統(tǒng)主要實現(xiàn)兩個核心功能:實時查看監(jiān)控視頻,方便專門人員進(jìn)行監(jiān)控核查;自動識別監(jiān)控視頻中乘客的行為并判斷是否觸發(fā)報警行為。核心的架構(gòu)分層如圖1 所示。
圖1 系統(tǒng)架構(gòu)圖
用戶端使用可訪問網(wǎng)絡(luò)的設(shè)備進(jìn)行遠(yuǎn)程訪問,顯示前端用戶接口(User Interface,UI)界面。前端UI 界面由基本的Html 以及Css 語言組成,搭配動態(tài)的Js 語言,即可對業(yè)務(wù)邏輯層進(jìn)行數(shù)據(jù)訪問。
UI 頁面有兩種與后臺的交互方式:一種是前后端耦合的模式,通過后端對頁面進(jìn)行數(shù)據(jù)渲染再返回界面顯示;一種是直接通過動態(tài)Js 語言和Ajax協(xié)議動態(tài)進(jìn)行數(shù)據(jù)訪問。本系統(tǒng)采用第二種方式進(jìn)行頁面顯示。
前端發(fā)起請求后進(jìn)入業(yè)務(wù)邏輯層。業(yè)務(wù)邏輯層對數(shù)據(jù)進(jìn)行控制,包括解析視頻、人員權(quán)限管理等功能,以及與數(shù)據(jù)庫MySQL以及Redis交互的功能。業(yè)務(wù)邏輯層會將指定攝像頭視頻幀返回給前端UI 界面進(jìn)行顯示,同時會將指定的需要檢測的視頻幀序列保存到Redis 緩存數(shù)據(jù)庫當(dāng)中,方便后續(xù)識別。
視頻識別子系統(tǒng)與主體演示系統(tǒng)相對比較獨立。識別子系統(tǒng)通過與緩存數(shù)據(jù)庫交互,得到需要識別的視頻幀序列,通過深度學(xué)習(xí)模型進(jìn)行推理,得出識別結(jié)果。
整體系統(tǒng)的核心流程依據(jù)數(shù)據(jù)系統(tǒng)的功能進(jìn)行設(shè)計。系統(tǒng)的主體功能由監(jiān)控視頻實時播放和乘客行為識別及報警系統(tǒng)兩部分組成。視頻處理流程如圖2 所示。
圖2 視頻處理流程
如圖2 所示,核心流程有兩個輸入源,分別是用戶端請求輸入和監(jiān)控視頻源輸入。
用戶端輸入是用戶使用設(shè)備訪問對應(yīng)的鏈接請求UI 界面。UI 界面通過Ajax 協(xié)議對視頻處理函數(shù)發(fā)起請求,視頻處理函數(shù)返回正在截取的視頻幀以及Redis 數(shù)據(jù)庫中當(dāng)前保存的識別結(jié)果,UI 界面通過動態(tài)js 實現(xiàn)當(dāng)前請求監(jiān)控視頻播放以及電梯乘客識別結(jié)果。
監(jiān)控視頻源是不間斷地進(jìn)行輸入。視頻處理函數(shù)會對輸入的監(jiān)控視頻源進(jìn)行持續(xù)處理,在有用戶請求訪問實時視頻時,會返回當(dāng)前已經(jīng)完成編碼的視頻幀。同時,視頻處理函數(shù)負(fù)責(zé)將需要進(jìn)行識別的視頻幀序列存入緩存數(shù)據(jù)庫Redis 中。此處采取的方式是抽幀檢測,由于電梯內(nèi)并非一直有乘客乘坐,無須每時每刻進(jìn)行狀態(tài)檢測,因此本系統(tǒng)每隔150 幀取用16 幀連續(xù)視頻序列,存入緩存數(shù)據(jù)庫以待識別。
緩存數(shù)據(jù)庫是一種基于緩存的非關(guān)系型數(shù)據(jù)庫[2]。常見的緩存數(shù)據(jù)庫有Redis,Memechache 等。相較于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,緩存數(shù)據(jù)庫具有輕量化、讀取速度快等優(yōu)勢,常用于數(shù)據(jù)交互中間件的功能。緩存數(shù)據(jù)庫本身是基于內(nèi)存而設(shè)計的,讀取和寫入速度較快,適用于本系統(tǒng)中作為主系統(tǒng)與子系統(tǒng)數(shù)據(jù)交互的中介,從而保障系統(tǒng)的運行速度,保障安全監(jiān)控系統(tǒng)的實時性。
識別推理系統(tǒng)中,推理函數(shù)從緩存數(shù)據(jù)庫中讀取16 幀圖片序列,將圖片序列加載進(jìn)入推理模型,最后進(jìn)行行為識別并返回緩存數(shù)據(jù)庫。
監(jiān)測子系統(tǒng)的功能是識別視頻中的乘客行為,是整體系統(tǒng)的核心模塊。監(jiān)測子系統(tǒng)的核心邏輯如圖3 所示。
圖3 監(jiān)測子系統(tǒng)流程圖
如圖3 所示,子系統(tǒng)通過緩存數(shù)據(jù)庫讀取視頻幀序列,進(jìn)行判斷。若讀出的圖片序列為空,則線程等待1 s 后重新執(zhí)行數(shù)據(jù)庫圖片讀取操作;若讀出圖片序列不為空,則將圖片序列傳入識別推理函數(shù)進(jìn)行模型推理。得出推理結(jié)果后,通過數(shù)據(jù)庫寫入函數(shù)將推理結(jié)果寫入Redis 數(shù)據(jù)庫并刪除已識別完成的圖片序列,便于后續(xù)前端訪問。值得注意的是,若此時識別出乘客行為屬于異常行為,則將識別信息傳入報警系統(tǒng)并發(fā)出警告,便于相關(guān)人員及時處理異常。上述運行流程會在程序啟動后不斷循環(huán)執(zhí)行,保障對監(jiān)控視頻的實時監(jiān)測。
上述提到的圖片序列存儲的方式是利用Redis本身自帶的數(shù)據(jù)結(jié)構(gòu)List(列表)結(jié)構(gòu),在緩存數(shù)據(jù)庫中的存儲形式可以表現(xiàn)為key:[picture1,picture2,picture3,…]。上述key 是存入圖片序列時的標(biāo)志,便于后續(xù)流程從數(shù)據(jù)庫中讀取數(shù)據(jù)。圖片本身在緩存數(shù)據(jù)庫中存在的格式為經(jīng)過視頻處理函數(shù)規(guī)范大小后的base64 編碼格式。識別返回的結(jié)果在緩存數(shù)據(jù)庫中保存的形式利用的Redis 中簡單的數(shù)據(jù)格式String 類型。保存的形式為key:action,便于后續(xù)流程識別和讀取。
由于系統(tǒng)預(yù)計目標(biāo)為對電梯轎廂乘客在一段時間內(nèi)的行為進(jìn)行識別,所以識別的對象需要加入時序特征,即系統(tǒng)緩存數(shù)據(jù)庫中存儲的視頻幀序列。
在圖片識別和分類領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)是非常經(jīng)典的算法,在圖片識別領(lǐng)域有非常不錯的表現(xiàn)。但是本系統(tǒng)需要對具有時序特征的一系列圖片進(jìn)行識別,CNN 網(wǎng)絡(luò)只能對圖片的空間特征進(jìn)行識別。3D 卷積網(wǎng)絡(luò)模型[3]訓(xùn)練和識別中包含時序特征,因此本系統(tǒng)采用3D 神經(jīng)網(wǎng)絡(luò)進(jìn)行整合和設(shè)計。本文基于TRAN D[4]等人提出的C3D(3D Convolutional Networks)模型進(jìn)行訓(xùn)練和修改,滿足系統(tǒng)功能的要求。
C3D 相較傳統(tǒng)的CNN 網(wǎng)絡(luò),關(guān)鍵區(qū)別在于C3D 網(wǎng)絡(luò)輸入的信息包含時序特征,從而能捕獲視頻的流動信息。這也是其進(jìn)行行為識別的基礎(chǔ)。C3D 網(wǎng)絡(luò)的基本模型[4]如圖4 所示。
圖4 C3D 網(wǎng)絡(luò)示意圖
C3D 模型一共有8 個卷積層、5 個池化層、兩個全連接層以及一個softmax 輸出層。8 個卷積層所使用的卷積核均為3×3×3(長度×高度×?xí)r間),此時效果最佳,步長為1×1×1。在網(wǎng)絡(luò)進(jìn)入初期,設(shè)置池化層pool1 核大小為2×2×1,步長為2×2×1,因為時間深度為1,那么池化層1 在每幀圖片均進(jìn)行池化,保留每一幀的信息。其他池化層的核大小設(shè)置為2×2×2,步長設(shè)置為2×2×2。每個全連接層有4 096 個單元。
綜合上述C3D 模型特點,本系統(tǒng)考慮模型易實現(xiàn)且推斷速度快,準(zhǔn)確率優(yōu)秀等特征,選取C3D 作為本系統(tǒng)的監(jiān)測子系統(tǒng)。本文采取的模型具體參數(shù)如下。
3.1.1 輸入數(shù)據(jù)
本系統(tǒng)將視頻數(shù)據(jù)隨機(jī)切分為16 幀序列的圖片列表。每一幀圖片通過規(guī)范變?yōu)?12×112 大小的圖片,便于后續(xù)模型的識別和訓(xùn)練。每16 幀圖片序列互不重合,均為獨立的圖片序列。
3.1.2 卷積層
如前述,卷積層的卷積核大小已經(jīng)確定,但是激活函數(shù)的選取尚未確定。常見的激活函數(shù)如下。
(1)sigmod 函數(shù)。
式中:σ為激活函數(shù)的輸出,x為當(dāng)前節(jié)點的輸出值。
此類激活函數(shù)的閾值為[0,1],滿足圖像像素均大于0 的特點。但是在離原點較遠(yuǎn)處梯度下降很慢,出現(xiàn)梯度飽和現(xiàn)象。而且,sigmod 函數(shù)需要指數(shù)運算,計算機(jī)負(fù)荷較大。
(2)Tanh 函數(shù)。
式中:σ為激活函數(shù)的輸出,x為當(dāng)前節(jié)點的輸出值。
此類激活函數(shù)與sigmod 函數(shù)有相似的缺點,在遠(yuǎn)離原點處出現(xiàn)梯度飽和現(xiàn)象,需要指數(shù)運算。
(3)Relu 函數(shù)。
式中:σ為激活函數(shù)的輸出,x為當(dāng)前節(jié)點的輸出值。
此類激活函數(shù)在小于0 的區(qū)間時為0,在大于0 的區(qū)間梯度為1。類比前述激活函數(shù),Relu 函數(shù)無須進(jìn)行指數(shù)運算,計算速度較快。同時,Relu 函數(shù)在遠(yuǎn)離原點處梯度也不會減小消失,能夠保證梯度收斂的快速性。另外,Relu 函數(shù)小于0 區(qū)間設(shè)0 的特點也符合卷積神經(jīng)網(wǎng)絡(luò)處理圖片的特點。
綜上所述,本系統(tǒng)模型卷積層激活函數(shù)選用Relu 函數(shù)。
3.1.3 輸出層
由于本系統(tǒng)需要把類型分類為不同的類別,模型輸出層采用softmax 函數(shù)作為輸出層的函數(shù)進(jìn)行多分類概率輸出。softmax 函數(shù)式如下:
式中:K為輸出節(jié)點的個數(shù)即分類的類別,zi為當(dāng)前節(jié)點的輸出,zk為第k個節(jié)點的輸出,softmax為當(dāng)前節(jié)點的概率。
經(jīng)過softmax 函數(shù)的處理,每個節(jié)點的輸出變?yōu)閇0,1]區(qū)間的概率值,從而完成分類的功能。
3.1.4 損失函數(shù)
本模型訓(xùn)練過程中需要進(jìn)行反向傳播,此時需要用到損失函數(shù)的概念。由前述可知,輸出層使用softmax函數(shù)進(jìn)行歸一化處理,輸出每個節(jié)點的概率。而對于概率問題的損失函數(shù),一般采用交叉熵?fù)p失函數(shù)作為模型的損失函數(shù):
式中:Loss代表模型輸出結(jié)果與真實結(jié)果的損失,i代表第i個樣本,N表示此輪訓(xùn)練的總樣本數(shù),K代表類別總數(shù);yik代表若此時i樣本為k類別時則值為1,否則為0;pik代表i樣本由softmax 層輸出的第k個類別的概率。
交叉熵?fù)p失函數(shù)為凸函數(shù),可達(dá)到全局最優(yōu),且交叉熵?fù)p失函數(shù)[5]在模型效果差時學(xué)習(xí)速度快,在模型效果好時學(xué)習(xí)速度減慢,能使模型以較快的速度達(dá)到一個較好的訓(xùn)練結(jié)果。因此,本文模型采用交叉熵?fù)p失函數(shù)作為反向傳播的目標(biāo)函數(shù)。
本文系統(tǒng)使用的數(shù)據(jù)源為電梯特殊視角下獲取的視頻。相較于常見的UCF101 等公共數(shù)據(jù)集,電梯攝像頭采集的視頻有其獨特的特點,因此電梯異常行為的視頻數(shù)據(jù)樣本比較稀少。對此,本文使用模擬轎廂采集了一批模擬視頻源,作為模型訓(xùn)練的源數(shù)據(jù)。
為模擬乘客在電梯轎廂內(nèi)的異常行為,本文采用人為模擬異常行為進(jìn)行電梯視頻數(shù)據(jù)收集,分別在模擬電梯環(huán)境以及真實電梯環(huán)境采集相關(guān)數(shù)據(jù)。經(jīng)過調(diào)研,電梯內(nèi)異常行為一般有乘客跌倒、乘客相互間的暴力行為、扒門以及跳躍等行為。由于需要在電梯轎廂中模擬行為,為了保障安全性,在模擬電梯環(huán)境中進(jìn)行全部異常行為的模擬錄制,在實際電梯環(huán)境中僅進(jìn)行暴力行為以及扒門行為的模擬錄制。同時,本文也從網(wǎng)絡(luò)資源以及兩種實驗電梯環(huán)境中收集正常乘梯的視頻用于模型訓(xùn)練。
如圖5 所示,本研究在實際的電梯轎廂中通過支架模擬傳統(tǒng)攝像頭視角,布置電梯視頻收集攝像頭。數(shù)據(jù)收集裝置靠近正常攝像頭,最大限度地還原電梯環(huán)境。
圖5 數(shù)據(jù)收集攝像頭布置
本系統(tǒng)訓(xùn)練主要調(diào)節(jié)的參數(shù)為學(xué)習(xí)率。輸入圖片經(jīng)過處理函數(shù)會變?yōu)?12×112 大小的三通道標(biāo)準(zhǔn)圖片。經(jīng)過200 輪的訓(xùn)練過后,模型精度達(dá)到91%以上。將此訓(xùn)練完成的模型作為系統(tǒng)中加載的推理模型使用。
本系統(tǒng)部署在本地,初版系統(tǒng)布置在PC 端,通過訪問對應(yīng)鏈接,可以進(jìn)入系統(tǒng),查看視頻源數(shù)據(jù)及識別效果。系統(tǒng)的運行配置要求為:CPU,Intel(R) Core(TM) i7-11700;GPU,NVIDIA GeForce GT 1030。在上述環(huán)境下,電梯視頻能穩(wěn)定流暢運行,具體運行演示效果如圖6 所示。
圖6 系統(tǒng)演示圖
圖6 為電梯乘客識別系統(tǒng)主界面的初版展示圖。主體部分展示電梯轎廂內(nèi)乘客的乘坐狀態(tài),后臺子系統(tǒng)會識別乘客的乘坐狀態(tài)并保存,前端界面會通過Ajax 訪問后臺數(shù)據(jù)交互函數(shù)以讀取緩存數(shù)據(jù)庫中保存的識別內(nèi)容。
圖6 中共有8 張系統(tǒng)演示圖片,分別表現(xiàn)了當(dāng)電梯內(nèi)乘客表現(xiàn)為站立、跌倒以及乘客暴力行為時電梯系統(tǒng)界面顯示情況。當(dāng)乘客為正常站立狀態(tài)時,電梯狀態(tài)會顯示為正常,乘客狀態(tài)顯示為乘客站立;當(dāng)乘客行為表現(xiàn)異常時,系統(tǒng)會顯示乘客異常行為.如圖6 中出現(xiàn)暴力行為以及乘客跌倒,此時電梯狀態(tài)顯示為異常,系統(tǒng)會同步對相關(guān)人員進(jìn)行預(yù)警。
本系統(tǒng)目前完成初版的功能設(shè)計和實驗,能實現(xiàn)正常流暢運行每秒30 幀的視頻流輸入顯示及識別,基本實現(xiàn)對電梯轎廂內(nèi)乘客的行為識別以及實時演示,實現(xiàn)系統(tǒng)設(shè)計的基本目標(biāo)和要求。
本文在前述架構(gòu)以及推理模型的基礎(chǔ)上完成了基于B/S 架構(gòu)的遠(yuǎn)程監(jiān)控系統(tǒng),對于梯內(nèi)乘客行為,基于C3D 深度學(xué)習(xí)網(wǎng)絡(luò)實現(xiàn)了高準(zhǔn)確性以及高實時性的識別。整體系統(tǒng)的流暢性和功能性完成度較高,能基本實現(xiàn)對小批量電梯監(jiān)控視頻源進(jìn)行實時的監(jiān)控。但是在大批量監(jiān)控源的情況下,現(xiàn)有的視頻架構(gòu)可能無法滿足要求。后續(xù)可以從提高視頻分析并發(fā)能力以及推理模型更多分類識別能力等方面進(jìn)行優(yōu)化和改進(jìn)。