雷振軒
(西安建筑科技大學 信息與控制工程學院,西安 710055)
行為檢測作為計算機領域中的研究熱點之一,在智能監控[1]、人機交互[2]等領域有著廣泛的應用前景。行為檢測可用于室外公共場合人員的危險、暴力行為檢測監控與報警,室內場景下可用于老人和兒童的安全監控[3-4]。
現有的行為檢測技術中有部分是通過紅外傳感器來感知人體在空間中的位置信息,并結合場景中的物品位置信息綜合判斷人體當前的行為狀態[5-6]。這種方法可以大致判斷人體處于何種運動狀態,但是由于其傳感器工作原理的限制,只能感知人體空間移動狀態,而對于細致的肢體動作并不能做出精確的檢測。隨著移動設備和可穿戴設備的發展,李鵬歡[7]和黃龍等人[8]采用加速度傳感器獲取人體運動信息,并結合相關的分析算法對獲取的運動信息進行分析得出人體行為;石磊鑫等人[9]設計了基于可穿戴設備的行為識別系統,通過將可穿戴設備上的加速度傳感器、心率傳感器檢測到的人體信息通過藍牙發送到手機等處理設備上綜合判斷人體行為。相比基于紅外傳感器的檢測方法,慣性傳感器的應用能夠更加精細的獲取人體的運動信息,但是通過慣性信號也只能檢測一些行走、跑步等簡單的行為。這種基于慣性傳感器的行為檢測方法并不適用于公共場合的群體行為監控場景。
分析現有行為檢測技術的長處和問題,也觀察到骨骼和關節在人體運動過程中的行為表達直觀性,以及對背景、光線等外部因素干擾的魯棒性,設計了基于人體骨架信息的行為檢測系統。系統以NVIDIA公司推出的Jetson Nano作為硬件平臺的核心,搭建具備行為畫面采集、行為類別檢測、危險行為報警和行為畫面顯示功能的硬件系統平臺;另外在人體關節坐標基礎上構建關節位移矢量和骨骼夾角變化的關節行為模型,借助長短時記憶網絡LSTM提取行為特征,實現行為檢測功能。
系統主要由圖像采集模塊、主控模塊、顯示模塊和報警模塊組成,系統結構如圖1。其中圖像采集負責采集當前行為畫面并輸入主控模塊;主控模塊對行為畫面進行人體關節提取以及行為檢測,然后將檢測結果通過串口發送至顯示模塊和報警模塊;顯示模塊將人體骨架姿態和檢測結果與原畫面疊加實時顯示;報警模塊由Atmega328P單片機、蜂鳴器和發光二極管組成,對接收到的行為類別進行判斷,如果當前行為為危險行為或者有潛在危險,則報警模塊報警。

圖1 行為檢測系統結構圖
作為行為檢測系統工作流程的第一步,需要圖像采集模塊對人體運動畫面進行拍攝采集。傳統的攝像頭大多由數據總線、時鐘總線和同步信號線組成,這一類攝像頭的接口需要的數據線數量較多,內部的邏輯結構也較為復雜,同時對于水平同步信號、垂直同步信號和時鐘信號的同步性要就較高,這使得攝像頭數據的輸出端和畫面信號的接收端均需要具備較好的性能以滿足信號的傳輸。除此之外,在攝像頭數據的傳輸過程中,所傳輸到信號比較容易受到外界的干擾,這就難以保證在持續性傳輸畫面過程中的畫面質量以及傳輸畫面的速率。而CSI攝像頭在對畫面像素信息傳輸的過程中采用數據差分信號,保證了較好的穩定性,而且該攝像頭能夠僅使用一組數據信號線和差分時鐘線完成數據傳輸,降低了接口線的使用數量。
考慮到嵌入式系統在圖像處理性能上的局限性,在對比了CSI攝像頭和傳統攝像頭后,選擇占用計算資源較少的CSI攝像頭來完成圖像采集工作,在滿足相應的傳輸速率的同時,也具有較高的傳輸質量。CSI攝像頭參數如表1所示。該攝像頭除了占用計算資源少的優點外,還具備體積小、分辨率高、感光器件尺寸大、畫面畸變小的優點。

表1 攝像頭參數
主控模塊主要有以下3個功能:(1)接收圖像采集模塊發送的視頻數據。(2)運行人體行為檢測器對接收的畫面提取關節信息并檢測行為類別。(3)通過串口將行為檢測結果發送至顯示模塊和報警模塊。
主控模塊作為整個系統的核心單元,在運行人體行為檢測器對接收的畫面提取關節信息并檢測行為類別時,需要具備較強的數據運算處理能力。Jetson Nano是NIVDIA 公司推出的一款性能強大、體積小巧的人工智能計算設備,采用最高頻率為1.43 Ghz 的64位四核ARM處理器、128核NVIDIA Maxwell GPU、4G運行內存,支持 5 V DC輸入[19]。Jetson Nano能夠運行多種算法和人工智能框架,為各種復雜的深度神經網絡模型提供實時計算和推理,可以實現圖像分類、目標檢測、人臉檢測與識別、語音處理等功能,其較強的運算能力,比較適合處理攝像頭拍攝的圖像數據以及運行人體行為檢測網絡模型。因此,系統中采用Jetson Nano作為主控模塊,除了運行訓練好的人體行為檢測模型以外,還兼顧對其余模塊發送控制指令和檢測結果信息的功能。
報警模塊負責接收主控模塊發送的行為類別信息,并判斷行為是否屬于危險行為,同時發送控制信號控制蜂鳴器、發光二極管進行聲光報警。
聚人心、強群團,共建幸福和諧新企業。努力做到“小事辦好,好事辦快,大事辦成”。抓實“職工小家、建功立業、選樹典型、精準幫扶、金牌班組、青字工程、青年建功立業”等品牌工程,做好“完善班組基本配置,改善食堂、提升澡堂、改造單車棚,發放餐費補貼、解決子女就學、關注棚戶區改造、組織健康體檢、開展員工療養、做好精準困難幫扶、豐富文體活動”等實事,不斷提升群團組織影響力。
報警模塊采用Atmega328P作為控制器,通過串口與主控模塊進行通信,并輸出高低電平信號給蜂鳴器和發光二極管從而實現報警功能。Atmega328P是一個高性能、低功耗的8位微控制器以AVR作為核心處理器,閃存容量為32 KB,時鐘頻率為20 MHz,支持5 V輸入,具備I2C、SPI、USART等接口。以Atmega328P單片機為核心設計報警模塊及其外圍電路,電路原理圖如圖2。將單片機XTAL1和XTAL2外接一個16 MHz晶振和兩個20 pF電容組成外部震蕩電路,為單片機內部提供穩定的時鐘信號流;同時,將兩個發光二極管以共陽極的接法分別連接至單片機的IO接口PD2和PD3,通過IO接口高低電平來控制發光二極管亮滅,IO接口置低電平,發光二極管亮,IO接口置高電平,發光二極管滅。
另外,對比了有源蜂鳴器和無源蜂鳴器的特點,有源蜂鳴器內部含有震蕩源,通電后只能發出一種類型的聲音,無源蜂鳴器內部不含震蕩源,需要通過改變輸入信號即可自由控制聲音頻率;由于無源蜂鳴器的聲音頻率可控,因此采用無源蜂鳴器作為報警器件,將蜂鳴器控制端連接至Atmega328P單片機IO接口的PD4端,通過單片機輸出1.5~2.5 kHz頻率的高低電平信號即可控制聲音頻率變化。

圖2 報警模塊電路原理圖
行為檢測方法作為系統軟件的核心,主要包括人體關節點提取、關節行為模型構建和行為特征提取與分類三大部分。
通過Jetson Nano控制CSI攝像頭并實時讀取攝像頭拍攝到的視頻畫面,在此視頻畫面基礎上首先需要提取目標人體的關節信息。隨著人體姿態估計算法的不斷成熟,現在已有從原始視頻畫面中提取人體關節信息的深度神經網絡模型,例如OpenPose、DensePose、Mask R-CNN等,但考慮到Jetson Nano模塊的計算資源有限,同時為了便于后續在此基礎上擴展其他目標檢測功能,因此選用兼具目標檢測、實例分割和人體姿態估計功能的Mask R-CNN從視頻中獲取關節信息,后續再構建關節行為模型,支持人體行為識別。
在Mask R-CNN網絡中,掩碼分支網絡mask branch是用于預測并生成目標分割掩碼的分支網絡,通過雙線性插值的方法來保證輸入與輸出的像素一一對應。在進行特征提取后,mask branch對每個感興趣區域進行分類預測,并根據其分類結果對預測的目標使用不同顏色的掩膜進行渲染可視化,作為對目標整體輪廓的描述,來實現像素級的實例分割。這種像素級的實例分割方式也可用于檢測并分割人體的關節點,將每一個關節點的位置設為一個二進制單點,每一個mask中若有對應的關節點標為1,反之則為0,即熱圖中僅保留概率值為1的關節點像素。然后利用全卷積網絡作為姿態檢測器對感興趣區域內的人體特征圖進行卷積池化和反卷積,得到高分辨的特征輸出,同時利用ROI Align進行像素到像素的對齊,級聯邊界框回歸與關節點分類。每一個感興趣區域的ROI Align都對應K×m2維度的輸出,其中K代表mask的類別個數,m2代表池化分辨率,在這里僅指m×m的二進制掩碼。對于一個人體實例的18個關節點,輸出18個掩碼特征圖,18個掩碼相互獨立,并對每個像素的誤差值進行交叉熵損失迭代,最終使關節點像素的輸出為1,其余輸出為0,從而實現對于人體關節點的檢測提取。
Mask R-CNN網絡輸出的關節點為COCO格式,包括18個點的坐標位置數據,然而這18個點中的左眼、右眼、左耳、右耳這4個點在人體運動過程中相對位置不會發生變化同時與人體行為的相關性較小,而且這4個點的空間位置相近,在后續的行為檢測中容易對識別產生干擾。因此從中剔除這4個點,僅保留能夠代表肢體運動的14個關節點數據,作為后續關節行為模型的輸入信息。
觀察人體行為中的各關節運動規律,可發現在一個行為中并非所有關節同時運動,每個關節的運動幅度大小不一,這就意味著各關節的運動信息與當前人體行為的相關性存在差異。因此,將各關節的位置坐標序列送入LSTM網絡,即可學習行為中前后幀之間的關節時序特征;但是這種直接采用原始關節點位置坐標的方式不能明顯的表征人體運動過程總各個關節點的運動幅度差異,為了進一步描述各關節點運動幅度的差異性,針對人體的每個關節點構造了當前幀與上一幀之間的關節點位移矢量模型,通過同一關節點在前后兩幀中的位置坐標,計算出該點在前后兩幀之間的位移矢量,以每個關節點的幀間位移矢量大小來表征該關節點的與運動幅度。
除此之外,一些關節點在人體行為過程中并沒有發生明顯的空間位置移動,但是仍對于當前的行為具有較大的影響。例如人體在執行揮手動作時,除了肘部、手部兩個關節點與當前行為動作的相關性較高以外,該側肩部的運動也對當前行為動作具有較大的影響,但是肩部關節點在揮手動作中并沒有產生較大的空間位移而是發生了旋轉。這種情況下,幀間位移矢量模型并不能描述旋轉點與當前行為的相關性大小,然而關節點發生旋轉時該點與其兩側相鄰關節點構成的夾角也會發生明顯變化,因此,考慮以除過肢體末端以外的其余關節點與其兩側相鄰的兩個關節點構成的夾角來表征該點的旋轉情況,具體構成夾角的關節點組合包括:左右手臂的手、肘、肩;左右腿部的足、膝、胯;左側肘、肩和頸;右側肘、肩和頸;左側膝、胯和頸;右側膝、胯和頸;頭、頸、左肩;頭、頸、右肩;頭、頸、左胯;頭、頸、右胯;左肩、頸、左胯;右肩、頸、右胯;共計14個夾角數據。然后,計算每個夾角在前后幀間的夾角變化量,得到一個幀間骨骼夾角變化模型。


(1)
(2)

圖3 行為檢測方法結構圖

為了印證位移矢量和骨骼夾角變化量表征人體行為信息的可行性,以Li等人[20]于2010年建立的MSR Action 3D數據集開展實驗,它記錄了10個被試者、20種類型的人體行為,每個被試者執行每個行為2~3次,總共包含了567個行為的關節運動序列。以揮手、側踢的序列數據為例,計算每個行為的關節位移和骨骼夾角變化,并以關節半徑的大小來直觀表達該點與當前行為的相關程度,關節半徑越大,則說明該點與當前行為的相關程度越高,反之則相關程度越低,結果如圖4。從圖4可以看出人體在揮手和踢腿時,僅有手臂和腿部關節的半徑明顯增大,即手臂和腿部的關節與當前行為具有較高的相關性,其余關節相關性不明顯。說明補充這類信息可進一步明確行為識別應重點學習的關鍵部位。

圖4 各關節的行為相關性表征圖
在通過關節行為模型計算得出位移矢量序列和骨骼夾角變化序列后,與原始關節點序列進行組合,形成一個尺寸為4×14的二維數組,以此作為前幀中人體的行為信息。考慮到人體行為具有連貫性和時間上的持續性,多幀行為信息序列相比于單幀行為信息能夠更加完整表征人體行為,所以,對多幀行為信息進行特征提取的方式更加合理。
由于長短時記憶網絡LSTM在處理序列長時間依賴關系上展現出較好的效果,因此可以借助LSTM進行動作序列依賴特征提取并結合Softmax分類得出行為檢測結果。LSTM結構如圖5所示。

圖5 LSTM結構圖
it=σ(wi·[ht-1,xt]+bi)
(3)
(4)
遺忘門機制能夠將存儲單元中的部分信息剔除,選擇性地遺忘時間窗之前的信息。式(5)為遺忘門計算公式。
ft=σ(wf·[ht-1,xt]+bf)
(5)
單元狀態更新可用式(6)計算,在輸入門和遺忘門的控制下結合上一時刻的單元狀態信息來更新t時刻的單元狀態。
(6)
式(9)、式(10)為t時刻隱藏層輸出信息ht。
ot=σ(wo·[ht-1,xt]+bo)
(7)
ht=ot*tanh(Ct)
(8)
其中:w為權重;b為偏置;σ是sigmoid激活函數;Ct-1是t-1時刻的單元狀態;ht-1是t-1時刻的隱藏層輸出;xt是時間t的輸入。
最終,設計的LSTM網絡結構為兩層,輸入層送入行為序列信息,兩個LSTM層進行時間序列特征提取,然后在第二個LSTM層后連接Softmax層對LSTM隱藏層的輸出向量分類,得出行為分類結果。
另外考慮到檢測系統的實時性要求以及多幀序列讀取的問題,在多幀行為序列輸入檢測分類模塊之前,還需設計一個特定幀長的滑動窗,將長視頻的行為序列通過滑窗截取后再輸入檢測分類網絡,圖6為滑窗示意圖。滑窗從首幀開始沿時間序列向后逐幀滑動,滑動過程中每檢測到最新一幀的行為序列,就將新幀的行為序列加入到滑窗序列尾部,并刪除滑窗序列頭部的一幀行為序列,以此方式實現檢測分類網絡對長視頻序列的固定幀數讀取。

圖6 滑窗結構示意圖
為了得到滑窗幀數長短的參考值,在MSR Action 3D數據集上展開分析、研究,該數據集記錄了10個被試者、20種類型的人體行為,每個被試者執行每個行為2~3次,總共包含了567個行為的關節點運動序列。將每種行為的手、肘、膝、足部的橫縱坐標沿時間序列繪制成關節運動時序曲線,從中統計每種行為的時序變化周期,指導滑窗幀長的確定,最終統計得出20種行為的平均周期幀長為14.95,因此確定滑窗幀數長度取15幀。
系統設計完成后,首先需要在計算機上對行為檢測網絡進行訓練,使其能夠達到理想的檢測效果,然后,將訓練好的行為檢測器部署到主控模塊中運行并驗證系統行為檢測效果。
為了能達到理想的行為識別效果,采用MSR Action 3D數據集對行為檢測網絡模型進行訓練和測試。數據集中的20類動作見表2。從這20類動作中篩選出日常生活中最常見的高揮臂、水平揮臂、雙臂揮動、捶打、前沖、拍手、側拳、彎腰、前踢、側踢、慢跑、接拋等12種行為對行為檢測網絡模型訓練、測試。

表2 MSRAction3D數據集行為類別
實驗訓練平臺基于Windows10操作系統,計算機處理器為英特爾酷睿i5-10600kf,運行內存為16G,顯卡為NVIDIA GTX1060,實驗框架采用TensorFlow深度學習框架。
實驗將MSR Action 3D數據集以8:2的比例劃分為訓練集和測試集,采用梯度下降算法對行為檢測器進行迭代訓練。為了能夠充分訓練從而獲取性能良好的行為檢測器,同時為避免行為檢測器在訓練過程中發生出現過擬合現象,使用早停法控制訓練效果達到最佳時停止訓練。當迭代訓練次數達到1 200次時,識別準確率逐漸趨于穩定,訓練停止。最終得出行為檢測網絡模型的識別準確率為93.7%。
將訓練后得到的行為檢測器部署到主控模塊中,運行該檢測系統,并對該系統的工作情況進行檢驗,包括圖像采集模塊是否正常工作、顯示模塊是否正常顯示畫面和行為檢測結果、報警模塊能否針對危險行為類別發出警報。
經檢驗,該系統各部分均能夠正常工作,攝像頭采集畫面正常、行為檢測結果準確且能夠在顯示屏上正常顯示,當行為檢測結果為危險行為時,報警模塊能夠正常發出警報,當行為檢測結果不是危險行為時,報警模塊不工作,屏幕僅顯示當前行為類別,測試達到預期效果,系統實際工作情況如圖7。圖7(a)中目標人體執行揮手行為,顯示模塊左側顯示真實畫面,右側顯示人體關節姿態,同時屏幕顯示當前行為類別為揮手,報警模塊二極管呈熄滅狀態,蜂鳴器不發出報警;圖7(b)中目標進行出拳擊打,屏幕顯示側拳行為,該行為被報警模塊判斷為危險行為,則二極管閃爍提示,蜂鳴器發出報警。

圖7 行為檢測系統工作情況
針對現有行為檢測系統中依賴慣性傳感器、檢測結果不夠準確的問題,設計了一種基于人體骨架信息的行為檢測系統。以Jetson nano人工智能計算設備、圖像采集模塊和報警模塊搭建硬件平臺,并以關節坐標為基礎,結合肢體間的運動差異,建立了關節位移矢量和骨骼夾角變化的行為表征模型。在主控模塊部署訓練好的行為檢測器,提取行為表征模型中的人體行為特征并分類,將分類結果輸入報警模塊進行危險行為判斷并決策是否報警。實驗結果表明系統能夠有效檢測常見的人體行為。但對于復雜度較高和相似度較小的行為識別問題上仍存在不足,今后將針對此類問題繼續研究。