王小強,趙乾佑,戚 進
(上海交通大學 機械與動力工程學院,上海 200240)
隨著社會的發展,高層建筑逐漸增多,電梯作為高層建筑必不可少的一種運輸工具,已然成為社會發展和進步的標志之一,在人們的生活中起到了不可或缺的作用。然而,作為一種高精密的特種設備,電梯由許多機械電氣設備組成,存在發生故障進而引發安全問題的可能性。國家及相應行業也出具了相關標準,對由設備本身引發的安全問題做最大可能的控制。但是乘梯中還有另外一類由乘客引發的安全問題是這些標準無法控制的,即乘客在乘坐電梯時做出的異常行為動作,如乘客在轎廂內的扒門、暴力、暈倒等異常行為活動[1]。此類行為通常是造成現代電梯安全事故的主要因素之一。對于此類問題,傳統的解決方式通常是配備專門的人員對電梯進行實時監控。然而,相關人員一般無法長時間專注監控視頻,繼而無法及時地對異常行為做出反應,無法很好地控制相關行為。基于此,本文針對梯內乘客異常行為,基于深度學習模型建立一套遠程的識別-監控-報警系統,以減輕相關人員的負擔,同時也能及時發出通知,從而避免安全事故的發生。
本系統采用瀏覽器/服務器(Browser/Server,B/S)架構設計,不用使用專門的客戶端,方便相關人員以各種移動設備進入系統查看實時的監控畫面以及收到相應通知。
本系統主要實現兩個核心功能:實時查看監控視頻,方便專門人員進行監控核查;自動識別監控視頻中乘客的行為并判斷是否觸發報警行為。核心的架構分層如圖1 所示。

圖1 系統架構圖
用戶端使用可訪問網絡的設備進行遠程訪問,顯示前端用戶接口(User Interface,UI)界面。前端UI 界面由基本的Html 以及Css 語言組成,搭配動態的Js 語言,即可對業務邏輯層進行數據訪問。
UI 頁面有兩種與后臺的交互方式:一種是前后端耦合的模式,通過后端對頁面進行數據渲染再返回界面顯示;一種是直接通過動態Js 語言和Ajax協議動態進行數據訪問。本系統采用第二種方式進行頁面顯示。
前端發起請求后進入業務邏輯層。業務邏輯層對數據進行控制,包括解析視頻、人員權限管理等功能,以及與數據庫MySQL以及Redis交互的功能。業務邏輯層會將指定攝像頭視頻幀返回給前端UI 界面進行顯示,同時會將指定的需要檢測的視頻幀序列保存到Redis 緩存數據庫當中,方便后續識別。
視頻識別子系統與主體演示系統相對比較獨立。識別子系統通過與緩存數據庫交互,得到需要識別的視頻幀序列,通過深度學習模型進行推理,得出識別結果。
整體系統的核心流程依據數據系統的功能進行設計。系統的主體功能由監控視頻實時播放和乘客行為識別及報警系統兩部分組成。視頻處理流程如圖2 所示。

圖2 視頻處理流程
如圖2 所示,核心流程有兩個輸入源,分別是用戶端請求輸入和監控視頻源輸入。
用戶端輸入是用戶使用設備訪問對應的鏈接請求UI 界面。UI 界面通過Ajax 協議對視頻處理函數發起請求,視頻處理函數返回正在截取的視頻幀以及Redis 數據庫中當前保存的識別結果,UI 界面通過動態js 實現當前請求監控視頻播放以及電梯乘客識別結果。
監控視頻源是不間斷地進行輸入。視頻處理函數會對輸入的監控視頻源進行持續處理,在有用戶請求訪問實時視頻時,會返回當前已經完成編碼的視頻幀。同時,視頻處理函數負責將需要進行識別的視頻幀序列存入緩存數據庫Redis 中。此處采取的方式是抽幀檢測,由于電梯內并非一直有乘客乘坐,無須每時每刻進行狀態檢測,因此本系統每隔150 幀取用16 幀連續視頻序列,存入緩存數據庫以待識別。
緩存數據庫是一種基于緩存的非關系型數據庫[2]。常見的緩存數據庫有Redis,Memechache 等。相較于傳統的關系型數據庫,緩存數據庫具有輕量化、讀取速度快等優勢,常用于數據交互中間件的功能。緩存數據庫本身是基于內存而設計的,讀取和寫入速度較快,適用于本系統中作為主系統與子系統數據交互的中介,從而保障系統的運行速度,保障安全監控系統的實時性。
識別推理系統中,推理函數從緩存數據庫中讀取16 幀圖片序列,將圖片序列加載進入推理模型,最后進行行為識別并返回緩存數據庫。
監測子系統的功能是識別視頻中的乘客行為,是整體系統的核心模塊。監測子系統的核心邏輯如圖3 所示。

圖3 監測子系統流程圖
如圖3 所示,子系統通過緩存數據庫讀取視頻幀序列,進行判斷。若讀出的圖片序列為空,則線程等待1 s 后重新執行數據庫圖片讀取操作;若讀出圖片序列不為空,則將圖片序列傳入識別推理函數進行模型推理。得出推理結果后,通過數據庫寫入函數將推理結果寫入Redis 數據庫并刪除已識別完成的圖片序列,便于后續前端訪問。值得注意的是,若此時識別出乘客行為屬于異常行為,則將識別信息傳入報警系統并發出警告,便于相關人員及時處理異常。上述運行流程會在程序啟動后不斷循環執行,保障對監控視頻的實時監測。
上述提到的圖片序列存儲的方式是利用Redis本身自帶的數據結構List(列表)結構,在緩存數據庫中的存儲形式可以表現為key:[picture1,picture2,picture3,…]。上述key 是存入圖片序列時的標志,便于后續流程從數據庫中讀取數據。圖片本身在緩存數據庫中存在的格式為經過視頻處理函數規范大小后的base64 編碼格式。識別返回的結果在緩存數據庫中保存的形式利用的Redis 中簡單的數據格式String 類型。保存的形式為key:action,便于后續流程識別和讀取。
由于系統預計目標為對電梯轎廂乘客在一段時間內的行為進行識別,所以識別的對象需要加入時序特征,即系統緩存數據庫中存儲的視頻幀序列。
在圖片識別和分類領域,卷積神經網絡(Convolutional Neural Networks,CNN)是非常經典的算法,在圖片識別領域有非常不錯的表現。但是本系統需要對具有時序特征的一系列圖片進行識別,CNN 網絡只能對圖片的空間特征進行識別。3D 卷積網絡模型[3]訓練和識別中包含時序特征,因此本系統采用3D 神經網絡進行整合和設計。本文基于TRAN D[4]等人提出的C3D(3D Convolutional Networks)模型進行訓練和修改,滿足系統功能的要求。
C3D 相較傳統的CNN 網絡,關鍵區別在于C3D 網絡輸入的信息包含時序特征,從而能捕獲視頻的流動信息。這也是其進行行為識別的基礎。C3D 網絡的基本模型[4]如圖4 所示。

圖4 C3D 網絡示意圖
C3D 模型一共有8 個卷積層、5 個池化層、兩個全連接層以及一個softmax 輸出層。8 個卷積層所使用的卷積核均為3×3×3(長度×高度×時間),此時效果最佳,步長為1×1×1。在網絡進入初期,設置池化層pool1 核大小為2×2×1,步長為2×2×1,因為時間深度為1,那么池化層1 在每幀圖片均進行池化,保留每一幀的信息。其他池化層的核大小設置為2×2×2,步長設置為2×2×2。每個全連接層有4 096 個單元。
綜合上述C3D 模型特點,本系統考慮模型易實現且推斷速度快,準確率優秀等特征,選取C3D 作為本系統的監測子系統。本文采取的模型具體參數如下。
3.1.1 輸入數據
本系統將視頻數據隨機切分為16 幀序列的圖片列表。每一幀圖片通過規范變為112×112 大小的圖片,便于后續模型的識別和訓練。每16 幀圖片序列互不重合,均為獨立的圖片序列。
3.1.2 卷積層
如前述,卷積層的卷積核大小已經確定,但是激活函數的選取尚未確定。常見的激活函數如下。
(1)sigmod 函數。
式中:σ為激活函數的輸出,x為當前節點的輸出值。
此類激活函數的閾值為[0,1],滿足圖像像素均大于0 的特點。但是在離原點較遠處梯度下降很慢,出現梯度飽和現象。而且,sigmod 函數需要指數運算,計算機負荷較大。
(2)Tanh 函數。
式中:σ為激活函數的輸出,x為當前節點的輸出值。
此類激活函數與sigmod 函數有相似的缺點,在遠離原點處出現梯度飽和現象,需要指數運算。
(3)Relu 函數。
式中:σ為激活函數的輸出,x為當前節點的輸出值。
此類激活函數在小于0 的區間時為0,在大于0 的區間梯度為1。類比前述激活函數,Relu 函數無須進行指數運算,計算速度較快。同時,Relu 函數在遠離原點處梯度也不會減小消失,能夠保證梯度收斂的快速性。另外,Relu 函數小于0 區間設0 的特點也符合卷積神經網絡處理圖片的特點。
綜上所述,本系統模型卷積層激活函數選用Relu 函數。
3.1.3 輸出層
由于本系統需要把類型分類為不同的類別,模型輸出層采用softmax 函數作為輸出層的函數進行多分類概率輸出。softmax 函數式如下:
式中:K為輸出節點的個數即分類的類別,zi為當前節點的輸出,zk為第k個節點的輸出,softmax為當前節點的概率。
經過softmax 函數的處理,每個節點的輸出變為[0,1]區間的概率值,從而完成分類的功能。
3.1.4 損失函數
本模型訓練過程中需要進行反向傳播,此時需要用到損失函數的概念。由前述可知,輸出層使用softmax函數進行歸一化處理,輸出每個節點的概率。而對于概率問題的損失函數,一般采用交叉熵損失函數作為模型的損失函數:
式中:Loss代表模型輸出結果與真實結果的損失,i代表第i個樣本,N表示此輪訓練的總樣本數,K代表類別總數;yik代表若此時i樣本為k類別時則值為1,否則為0;pik代表i樣本由softmax 層輸出的第k個類別的概率。
交叉熵損失函數為凸函數,可達到全局最優,且交叉熵損失函數[5]在模型效果差時學習速度快,在模型效果好時學習速度減慢,能使模型以較快的速度達到一個較好的訓練結果。因此,本文模型采用交叉熵損失函數作為反向傳播的目標函數。
本文系統使用的數據源為電梯特殊視角下獲取的視頻。相較于常見的UCF101 等公共數據集,電梯攝像頭采集的視頻有其獨特的特點,因此電梯異常行為的視頻數據樣本比較稀少。對此,本文使用模擬轎廂采集了一批模擬視頻源,作為模型訓練的源數據。
為模擬乘客在電梯轎廂內的異常行為,本文采用人為模擬異常行為進行電梯視頻數據收集,分別在模擬電梯環境以及真實電梯環境采集相關數據。經過調研,電梯內異常行為一般有乘客跌倒、乘客相互間的暴力行為、扒門以及跳躍等行為。由于需要在電梯轎廂中模擬行為,為了保障安全性,在模擬電梯環境中進行全部異常行為的模擬錄制,在實際電梯環境中僅進行暴力行為以及扒門行為的模擬錄制。同時,本文也從網絡資源以及兩種實驗電梯環境中收集正常乘梯的視頻用于模型訓練。
如圖5 所示,本研究在實際的電梯轎廂中通過支架模擬傳統攝像頭視角,布置電梯視頻收集攝像頭。數據收集裝置靠近正常攝像頭,最大限度地還原電梯環境。

圖5 數據收集攝像頭布置
本系統訓練主要調節的參數為學習率。輸入圖片經過處理函數會變為112×112 大小的三通道標準圖片。經過200 輪的訓練過后,模型精度達到91%以上。將此訓練完成的模型作為系統中加載的推理模型使用。
本系統部署在本地,初版系統布置在PC 端,通過訪問對應鏈接,可以進入系統,查看視頻源數據及識別效果。系統的運行配置要求為:CPU,Intel(R) Core(TM) i7-11700;GPU,NVIDIA GeForce GT 1030。在上述環境下,電梯視頻能穩定流暢運行,具體運行演示效果如圖6 所示。

圖6 系統演示圖
圖6 為電梯乘客識別系統主界面的初版展示圖。主體部分展示電梯轎廂內乘客的乘坐狀態,后臺子系統會識別乘客的乘坐狀態并保存,前端界面會通過Ajax 訪問后臺數據交互函數以讀取緩存數據庫中保存的識別內容。
圖6 中共有8 張系統演示圖片,分別表現了當電梯內乘客表現為站立、跌倒以及乘客暴力行為時電梯系統界面顯示情況。當乘客為正常站立狀態時,電梯狀態會顯示為正常,乘客狀態顯示為乘客站立;當乘客行為表現異常時,系統會顯示乘客異常行為.如圖6 中出現暴力行為以及乘客跌倒,此時電梯狀態顯示為異常,系統會同步對相關人員進行預警。
本系統目前完成初版的功能設計和實驗,能實現正常流暢運行每秒30 幀的視頻流輸入顯示及識別,基本實現對電梯轎廂內乘客的行為識別以及實時演示,實現系統設計的基本目標和要求。
本文在前述架構以及推理模型的基礎上完成了基于B/S 架構的遠程監控系統,對于梯內乘客行為,基于C3D 深度學習網絡實現了高準確性以及高實時性的識別。整體系統的流暢性和功能性完成度較高,能基本實現對小批量電梯監控視頻源進行實時的監控。但是在大批量監控源的情況下,現有的視頻架構可能無法滿足要求。后續可以從提高視頻分析并發能力以及推理模型更多分類識別能力等方面進行優化和改進。