周文杰,伍文豪,丁德紅,郭國強,帥勇
(1.國網(wǎng)湖南省電力有限公司常德供電分公司,常德 415000;2.湖南文理學院,常德 415000;3.湖南應用技術學院,常德 415099)
人體行為識別是利用計算機技術,通過特定的識別算法,分析視頻設備采集到的數(shù)據(jù),對視頻中的人進行行為識別的技術[1]。隨著我國在視頻監(jiān)控領域的市場不斷擴大,傳統(tǒng)的視頻監(jiān)控系統(tǒng)已經(jīng)不能滿足人們的需求,更期望能有一套完整的監(jiān)控系統(tǒng),對視頻中我們感興趣的事件能夠自動地檢測出來,不需要人工干預即可完成我們所需要的視頻片段或者圖片,當前有很多學者研究人員在這方面進行不斷發(fā)掘,在傳統(tǒng)的人體行為分析算法進行改進或者開發(fā)出新的算法。
文獻[2]在復雜場景下的單人行為監(jiān)測、實時連續(xù)行為監(jiān)測、多人交互行為分類問題上給出了不同的解決方案,在復雜場景單人行為監(jiān)測中使用了遮罩的模板匹配方法使用CMU數(shù)據(jù)庫進行了算法測試,實驗結果表明通過遮罩進行特征識別結果比沒有遮罩識別結果效果好,文獻[3]中提出了一種慢特征分析(SFA)方法進行視頻中的人體行為分析,與改進型慢特征分析算法(D-SFA)進行實驗對比,驗證了慢特征分析方法和改進型的特征分析算法在人體行為分析提取慢特征的有效性,同時實驗證明在一定程度上D-SFA比SFA的效果更好。文獻[4]中作者將人臉識別、人體解析和行為解析應用到公安的交通治安、視頻巡邏、調(diào)查取證、治安案件調(diào)查等多個重要業(yè)務應用,就不需要大量人力對視頻內(nèi)容進行手動篩選,減少工作量,并且提到監(jiān)控領域?qū)χ悄芊治鱿到y(tǒng)的需求日益增多。
目前我國市面上有很多平臺都推出了用戶可以根據(jù)自己的需求自定義事件模型,通過在公共的模型數(shù)據(jù)基礎上,用戶在不斷地添加素材對模型進行二次訓練,可以達到比較高識別準確率,但是這樣本地部署會有很多的條件限制,例如:需要昂貴的GPU服務器及復雜的授權,等等。因此可以選擇自帶處理芯片的攝像頭,可以節(jié)省成本加快研究發(fā)速度。
整個系統(tǒng)主要分為AI行為分析、MQTT服務器和后臺三部分,也就是正好對應物聯(lián)網(wǎng)的感知層、傳輸層和應用層,整體架構如圖1所示。
AI行為分析主要是把我們在線上訓練好的數(shù)據(jù)集部署到??禂z像頭中,由它完成視頻流采集和圖像分析,對圖像進行采集并且通過機器學習訓練各種模型,如睡覺模型、玩手機、不著工裝、看報、吃零食模型,等等,后期使用中可以不斷提高模型的識別準確率;通過處理視頻流分析出人體的異常行為動作,攝像頭連接MQTT服務器,實時地推送消息到MQTT服務器,最后得出結果,主要的實現(xiàn)步驟如下:
(1)對各種異常行為進行樣本視頻采集,對視頻進行結構化、行為化處理,打上相應的標簽,從而訓練出對應的行為模型。
(2)對多個行為模型進行混合,整理成混合行為模型。
(3)模型訓練采用??档腁I框架進行線上訓練。
(4)訓練完成后下載離線的模型包以及標簽文件,對局域網(wǎng)內(nèi)的攝像頭進行離線部署。
圖1 AI行為分析整體架構圖
MQTT是機器對機器(M2M)/物聯(lián)網(wǎng)(IoT)連接協(xié)議。它被設計為一個極其輕量級的發(fā)布/訂閱消息傳輸協(xié)議。對于需要較小代碼占用空間和/或網(wǎng)絡帶寬非常寶貴的遠程連接非常有用,是專為受限設備和低帶寬、高延遲或不可靠的網(wǎng)絡而設計。這些原則也使該協(xié)議成為新興的“機器到機器”(M2M)或物聯(lián)網(wǎng)(IoT)世界的連接設備,以及帶寬和電池功率非常高的移動應用的理想選擇[5]。我們通過加入MQTT中間件的加入,降低整個系統(tǒng)的耦合度,同時可以在不可靠的網(wǎng)絡環(huán)境中,為遠程連接的設備提供可靠的消息服務。MQTT服務器我們是借助第三方平臺以降低整個系統(tǒng)的成本,把??禂z像頭接入到該平臺中,只要檢測到有事件發(fā)生就會實時推送消息到該MQTT相應的Topic中,后臺通過MQTT客戶端訂閱Topic就可以獲取到發(fā)生的事件。
MQTT服務器主要是借助華為云提供的物聯(lián)網(wǎng)服務通過網(wǎng)絡經(jīng)過MQTT協(xié)議把對應的消息傳輸?shù)饺A為云的MQTT服務器中,傳輸過程如圖2所示。
MQTT作為整個系統(tǒng)的中間產(chǎn)品,起到連接作用,也是傳輸消息重要通道,對整個系統(tǒng)的重要性不言而喻。MQTT是基于訂閱/推送方式的消息傳輸協(xié)議,所以我們把海康攝像頭接入華為云的物聯(lián)網(wǎng)平臺時,通過代碼設置監(jiān)測到有事件觸發(fā)時推送到指定的Topic。
圖2消息傳輸過程
MQTT進行二進制數(shù)據(jù)傳輸時,主要是以JSON格式的數(shù)據(jù)作為載體傳輸消息,JSON格式數(shù)據(jù)中主要包含了設備基本信息、監(jiān)測到的事件類型、事件發(fā)生的時間以及對應事件圖片的URL,如下JSON數(shù)據(jù)格式說明。
整個后臺使用主流編程語言Java進行開發(fā),利用Spring全家桶進行開發(fā)構建,同時也利用thymeleaf模板引擎開發(fā)前端界面,為了節(jié)省資源使用了Websocket進行消息的實時展示,并且把消息持久化到MySQL數(shù)據(jù)庫中。
為了保證系統(tǒng)每次啟動時,可以自動訂閱??禂z像頭推送檢測事件的Topic,因此把這些訂閱信息存儲在數(shù)據(jù)庫中,并且在接收消息后實時顯示消息并且持久化數(shù)據(jù)庫表中,我們也可以查看所有的歷史消息。部分數(shù)據(jù)庫表如表1。
表1 數(shù)據(jù)表mqtt_client
表2 數(shù)據(jù)表mqtt_topic
表3 數(shù)據(jù)表mqtt_data
每次系統(tǒng)啟動初始化時都會從數(shù)據(jù)庫中查詢訂閱信息,訂閱Topic以接收MQTT服務器接收的消息。
本系統(tǒng)中為了避免使用AJAX輪詢消耗較多的資源,該系統(tǒng)實時數(shù)據(jù)展示中使用Websocket技術,使用Websocket的點對點通信推送,在MQTT客戶端的接收消息回調(diào)方法中發(fā)送消息給前端頁面展示同時把相應的數(shù)據(jù)存儲在數(shù)據(jù)庫中。
本次AI行為分析算法利用的是海康威視AI開放平臺,建立一個行為分析模型需要先讓機器進行學習,機器學習主要包括以下四個步驟:
(1)數(shù)據(jù)采集
AI行為分析是通過一個機器去識別不同狀態(tài),機器就需要一個不斷學習的過程,所以就需要大量的數(shù)據(jù)去發(fā)掘規(guī)律,一些定義的問題就需要這些數(shù)據(jù)作代表,這些大量的數(shù)據(jù)能讓機器學習算法在從中學習到規(guī)律,最終得到預測模型。我們把已經(jīng)知道結果的歷史數(shù)據(jù)稱為標記數(shù)據(jù),每一條獨立的標記數(shù)據(jù)叫做樣本。一條樣本包含兩個部分:
目標值label:即結果,就是需要預測的答案。
特征值:即特征,特征值是指和目標值有關聯(lián)關系的屬性或者描述性的數(shù)據(jù),變量值越豐富越好。
(2)特征工程
特征工程是把樣本數(shù)據(jù)中的各變量數(shù)據(jù)處理得更具有表征意義,是將特征的選擇、變換、組合等過程。目的是希望能夠最大限度地從原始數(shù)據(jù)中提取特征以供算法和模型使用。提取特征值的過程包括以下幾個方面:
特征選擇:選取重要有用的特征用于建立模型。
特征組合:可以把已有的特征經(jīng)過組合去形成一個新的有意的特征。
連續(xù)特征離散化:在算法應用中,某些算法很少直接將連續(xù)特征輸入而是將連續(xù)特征離散化為一系列0、1特征交給邏輯回歸處理,離散化之后的特征更加具有魯棒性。如果特征沒有離散化,會給模型造成很大的干擾。
(3)模型訓練與優(yōu)化
有了足夠多的樣本數(shù)據(jù),通過選擇合適的算法并配置合適的算法參數(shù),就能進行模型訓練。模型算法能學習到訓練樣本數(shù)據(jù)中變量和目標值之間的函數(shù)關系,我們把學習到的這個函數(shù)關系叫做模型。
實際訓練過程中,我們訓練出的模型通常需要通過嘗試多次評估以及多次的參數(shù)設定,訓練來產(chǎn)生一個較優(yōu)的模型以供實際業(yè)務使用,這個過程也叫做模型優(yōu)化。
(4)預測應用
通過上述模型訓練,得到一個可用模型后,通過給模型輸入新的待預測的數(shù)據(jù),可以測得到預計結果。根據(jù)識別應用場景不同,應用方式可分為以下2種:
批量預測:通過一段時間的堆積,有很多要被預測結果的數(shù)據(jù),需要通過模型一次性的產(chǎn)生這些數(shù)據(jù)的預測結果,這種批量預測的方式也稱之為線下預測。
實時檢測:通過模型對線上實時產(chǎn)生的一條或多條數(shù)據(jù)進行預測,實時地給出預測結果,這種預測方式也稱之為線上檢測。
有了對機器學習過程的了解,就可以利用??档腁I訓練平臺去訓練和發(fā)布模型。主要步驟如下:
(1)對需要檢測行為進行樣本視頻采集,對視頻進行結構化、行為化。
(2)對采集到的每個單獨數(shù)據(jù)打上相應的標簽,指定要提取特征值的范圍,構成一個待訓練的數(shù)據(jù)集。
(3)將數(shù)據(jù)集進行訓練成模型,可以選擇合適的算法并配置合適的算法參數(shù),就能進行模型訓練,再進行多次評估和參數(shù)設定就可以訓練成模型。
(4)模型訓練完成之后就可以使用測試樣本對其模型進行預測,也稱之為線下測試。預測試可以檢測出該模型分析行為的準確度,當測試的準確度沒有達到一定預期值就能重新對該模型進行訓練,為實際部署減低成本。
線下測試通過便將模式實際部署進機器,該模型可通過線上實時產(chǎn)生的一條或多條數(shù)據(jù)進行預測,實時地給出預測結果,稱之為線上測試。
(5)預測試結果達標即可實際使用并實時檢測行為,對其分析出結果。
人體行為識別的主要過程,第一通過??禂z像頭采集視頻流檢測是否有我們所需要的模型事件發(fā)生,我們在模型訓練時,采集了大量的不同動作類型的素材,對每種素材標上標簽后進行統(tǒng)一的線上訓練,在測試時發(fā)現(xiàn)只有攝像頭只有正對著每個崗位,采集角度偏差不大時識別準確率會很高,并且后面在測試過程中不斷地人工糾正識別錯誤的動作類型圖片,使模型識別準確率基本可以達到95%以上,第二將海康攝像頭將檢測到的模型事件通過網(wǎng)絡推送到MQTT服務器上,第三后臺解析MQTT接收的消息并且展示出來。
圖3實時識別效果
圖4視頻結構化(MQTT推送的識別結果)
本文詳細地描述了如何使用??禂z像頭和物聯(lián)網(wǎng)技術融合開發(fā)出AI行為分析的整套系統(tǒng),本系統(tǒng)開發(fā)中我們嘗試過使用其他的幾家大公司的AI平臺上訓練模型然后部署在本地GPU服務器進行高性能處理計算監(jiān)測事件,這種方式的成本比較高,而且有很多授權條件限制,對于需要進行二次開發(fā)且成本受控追求高性價比的項目來說并不合適,浪費了很多的資源和精力。因此,采用了海康攝像頭自帶的芯片進行監(jiān)測處理是不錯的選擇,雖然剛開始的時候識別準確率不是很高,但是隨著素材的增加,模型識別準確率不斷提高。本系統(tǒng)中主要利用AI和IoT的技術結合開發(fā),具有識別準確率高、性價比高、可靠性高等特點。以上經(jīng)驗與教訓,為同類項目的研究者提供參考。