雷振軒
(西安建筑科技大學(xué) 信息與控制工程學(xué)院,西安 710055)
行為檢測作為計算機領(lǐng)域中的研究熱點之一,在智能監(jiān)控[1]、人機交互[2]等領(lǐng)域有著廣泛的應(yīng)用前景。行為檢測可用于室外公共場合人員的危險、暴力行為檢測監(jiān)控與報警,室內(nèi)場景下可用于老人和兒童的安全監(jiān)控[3-4]。
現(xiàn)有的行為檢測技術(shù)中有部分是通過紅外傳感器來感知人體在空間中的位置信息,并結(jié)合場景中的物品位置信息綜合判斷人體當前的行為狀態(tài)[5-6]。這種方法可以大致判斷人體處于何種運動狀態(tài),但是由于其傳感器工作原理的限制,只能感知人體空間移動狀態(tài),而對于細致的肢體動作并不能做出精確的檢測。隨著移動設(shè)備和可穿戴設(shè)備的發(fā)展,李鵬歡[7]和黃龍等人[8]采用加速度傳感器獲取人體運動信息,并結(jié)合相關(guān)的分析算法對獲取的運動信息進行分析得出人體行為;石磊鑫等人[9]設(shè)計了基于可穿戴設(shè)備的行為識別系統(tǒng),通過將可穿戴設(shè)備上的加速度傳感器、心率傳感器檢測到的人體信息通過藍牙發(fā)送到手機等處理設(shè)備上綜合判斷人體行為。相比基于紅外傳感器的檢測方法,慣性傳感器的應(yīng)用能夠更加精細的獲取人體的運動信息,但是通過慣性信號也只能檢測一些行走、跑步等簡單的行為。這種基于慣性傳感器的行為檢測方法并不適用于公共場合的群體行為監(jiān)控場景。
分析現(xiàn)有行為檢測技術(shù)的長處和問題,也觀察到骨骼和關(guān)節(jié)在人體運動過程中的行為表達直觀性,以及對背景、光線等外部因素干擾的魯棒性,設(shè)計了基于人體骨架信息的行為檢測系統(tǒng)。系統(tǒng)以NVIDIA公司推出的Jetson Nano作為硬件平臺的核心,搭建具備行為畫面采集、行為類別檢測、危險行為報警和行為畫面顯示功能的硬件系統(tǒng)平臺;另外在人體關(guān)節(jié)坐標基礎(chǔ)上構(gòu)建關(guān)節(jié)位移矢量和骨骼夾角變化的關(guān)節(jié)行為模型,借助長短時記憶網(wǎng)絡(luò)LSTM提取行為特征,實現(xiàn)行為檢測功能。
系統(tǒng)主要由圖像采集模塊、主控模塊、顯示模塊和報警模塊組成,系統(tǒng)結(jié)構(gòu)如圖1。其中圖像采集負責(zé)采集當前行為畫面并輸入主控模塊;主控模塊對行為畫面進行人體關(guān)節(jié)提取以及行為檢測,然后將檢測結(jié)果通過串口發(fā)送至顯示模塊和報警模塊;顯示模塊將人體骨架姿態(tài)和檢測結(jié)果與原畫面疊加實時顯示;報警模塊由Atmega328P單片機、蜂鳴器和發(fā)光二極管組成,對接收到的行為類別進行判斷,如果當前行為為危險行為或者有潛在危險,則報警模塊報警。
圖1 行為檢測系統(tǒng)結(jié)構(gòu)圖
作為行為檢測系統(tǒng)工作流程的第一步,需要圖像采集模塊對人體運動畫面進行拍攝采集。傳統(tǒng)的攝像頭大多由數(shù)據(jù)總線、時鐘總線和同步信號線組成,這一類攝像頭的接口需要的數(shù)據(jù)線數(shù)量較多,內(nèi)部的邏輯結(jié)構(gòu)也較為復(fù)雜,同時對于水平同步信號、垂直同步信號和時鐘信號的同步性要就較高,這使得攝像頭數(shù)據(jù)的輸出端和畫面信號的接收端均需要具備較好的性能以滿足信號的傳輸。除此之外,在攝像頭數(shù)據(jù)的傳輸過程中,所傳輸?shù)叫盘柋容^容易受到外界的干擾,這就難以保證在持續(xù)性傳輸畫面過程中的畫面質(zhì)量以及傳輸畫面的速率。而CSI攝像頭在對畫面像素信息傳輸?shù)倪^程中采用數(shù)據(jù)差分信號,保證了較好的穩(wěn)定性,而且該攝像頭能夠僅使用一組數(shù)據(jù)信號線和差分時鐘線完成數(shù)據(jù)傳輸,降低了接口線的使用數(shù)量。
考慮到嵌入式系統(tǒng)在圖像處理性能上的局限性,在對比了CSI攝像頭和傳統(tǒng)攝像頭后,選擇占用計算資源較少的CSI攝像頭來完成圖像采集工作,在滿足相應(yīng)的傳輸速率的同時,也具有較高的傳輸質(zhì)量。CSI攝像頭參數(shù)如表1所示。該攝像頭除了占用計算資源少的優(yōu)點外,還具備體積小、分辨率高、感光器件尺寸大、畫面畸變小的優(yōu)點。
表1 攝像頭參數(shù)
主控模塊主要有以下3個功能:(1)接收圖像采集模塊發(fā)送的視頻數(shù)據(jù)。(2)運行人體行為檢測器對接收的畫面提取關(guān)節(jié)信息并檢測行為類別。(3)通過串口將行為檢測結(jié)果發(fā)送至顯示模塊和報警模塊。
主控模塊作為整個系統(tǒng)的核心單元,在運行人體行為檢測器對接收的畫面提取關(guān)節(jié)信息并檢測行為類別時,需要具備較強的數(shù)據(jù)運算處理能力。Jetson Nano是NIVDIA 公司推出的一款性能強大、體積小巧的人工智能計算設(shè)備,采用最高頻率為1.43 Ghz 的64位四核ARM處理器、128核NVIDIA Maxwell GPU、4G運行內(nèi)存,支持 5 V DC輸入[19]。Jetson Nano能夠運行多種算法和人工智能框架,為各種復(fù)雜的深度神經(jīng)網(wǎng)絡(luò)模型提供實時計算和推理,可以實現(xiàn)圖像分類、目標檢測、人臉檢測與識別、語音處理等功能,其較強的運算能力,比較適合處理攝像頭拍攝的圖像數(shù)據(jù)以及運行人體行為檢測網(wǎng)絡(luò)模型。因此,系統(tǒng)中采用Jetson Nano作為主控模塊,除了運行訓(xùn)練好的人體行為檢測模型以外,還兼顧對其余模塊發(fā)送控制指令和檢測結(jié)果信息的功能。
報警模塊負責(zé)接收主控模塊發(fā)送的行為類別信息,并判斷行為是否屬于危險行為,同時發(fā)送控制信號控制蜂鳴器、發(fā)光二極管進行聲光報警。
聚人心、強群團,共建幸福和諧新企業(yè)。努力做到“小事辦好,好事辦快,大事辦成”。抓實“職工小家、建功立業(yè)、選樹典型、精準幫扶、金牌班組、青字工程、青年建功立業(yè)”等品牌工程,做好“完善班組基本配置,改善食堂、提升澡堂、改造單車棚,發(fā)放餐費補貼、解決子女就學(xué)、關(guān)注棚戶區(qū)改造、組織健康體檢、開展員工療養(yǎng)、做好精準困難幫扶、豐富文體活動”等實事,不斷提升群團組織影響力。
報警模塊采用Atmega328P作為控制器,通過串口與主控模塊進行通信,并輸出高低電平信號給蜂鳴器和發(fā)光二極管從而實現(xiàn)報警功能。Atmega328P是一個高性能、低功耗的8位微控制器以AVR作為核心處理器,閃存容量為32 KB,時鐘頻率為20 MHz,支持5 V輸入,具備I2C、SPI、USART等接口。以Atmega328P單片機為核心設(shè)計報警模塊及其外圍電路,電路原理圖如圖2。將單片機XTAL1和XTAL2外接一個16 MHz晶振和兩個20 pF電容組成外部震蕩電路,為單片機內(nèi)部提供穩(wěn)定的時鐘信號流;同時,將兩個發(fā)光二極管以共陽極的接法分別連接至單片機的IO接口PD2和PD3,通過IO接口高低電平來控制發(fā)光二極管亮滅,IO接口置低電平,發(fā)光二極管亮,IO接口置高電平,發(fā)光二極管滅。
另外,對比了有源蜂鳴器和無源蜂鳴器的特點,有源蜂鳴器內(nèi)部含有震蕩源,通電后只能發(fā)出一種類型的聲音,無源蜂鳴器內(nèi)部不含震蕩源,需要通過改變輸入信號即可自由控制聲音頻率;由于無源蜂鳴器的聲音頻率可控,因此采用無源蜂鳴器作為報警器件,將蜂鳴器控制端連接至Atmega328P單片機IO接口的PD4端,通過單片機輸出1.5~2.5 kHz頻率的高低電平信號即可控制聲音頻率變化。
圖2 報警模塊電路原理圖
行為檢測方法作為系統(tǒng)軟件的核心,主要包括人體關(guān)節(jié)點提取、關(guān)節(jié)行為模型構(gòu)建和行為特征提取與分類三大部分。
通過Jetson Nano控制CSI攝像頭并實時讀取攝像頭拍攝到的視頻畫面,在此視頻畫面基礎(chǔ)上首先需要提取目標人體的關(guān)節(jié)信息。隨著人體姿態(tài)估計算法的不斷成熟,現(xiàn)在已有從原始視頻畫面中提取人體關(guān)節(jié)信息的深度神經(jīng)網(wǎng)絡(luò)模型,例如OpenPose、DensePose、Mask R-CNN等,但考慮到Jetson Nano模塊的計算資源有限,同時為了便于后續(xù)在此基礎(chǔ)上擴展其他目標檢測功能,因此選用兼具目標檢測、實例分割和人體姿態(tài)估計功能的Mask R-CNN從視頻中獲取關(guān)節(jié)信息,后續(xù)再構(gòu)建關(guān)節(jié)行為模型,支持人體行為識別。
在Mask R-CNN網(wǎng)絡(luò)中,掩碼分支網(wǎng)絡(luò)mask branch是用于預(yù)測并生成目標分割掩碼的分支網(wǎng)絡(luò),通過雙線性插值的方法來保證輸入與輸出的像素一一對應(yīng)。在進行特征提取后,mask branch對每個感興趣區(qū)域進行分類預(yù)測,并根據(jù)其分類結(jié)果對預(yù)測的目標使用不同顏色的掩膜進行渲染可視化,作為對目標整體輪廓的描述,來實現(xiàn)像素級的實例分割。這種像素級的實例分割方式也可用于檢測并分割人體的關(guān)節(jié)點,將每一個關(guān)節(jié)點的位置設(shè)為一個二進制單點,每一個mask中若有對應(yīng)的關(guān)節(jié)點標為1,反之則為0,即熱圖中僅保留概率值為1的關(guān)節(jié)點像素。然后利用全卷積網(wǎng)絡(luò)作為姿態(tài)檢測器對感興趣區(qū)域內(nèi)的人體特征圖進行卷積池化和反卷積,得到高分辨的特征輸出,同時利用ROI Align進行像素到像素的對齊,級聯(lián)邊界框回歸與關(guān)節(jié)點分類。每一個感興趣區(qū)域的ROI Align都對應(yīng)K×m2維度的輸出,其中K代表mask的類別個數(shù),m2代表池化分辨率,在這里僅指m×m的二進制掩碼。對于一個人體實例的18個關(guān)節(jié)點,輸出18個掩碼特征圖,18個掩碼相互獨立,并對每個像素的誤差值進行交叉熵損失迭代,最終使關(guān)節(jié)點像素的輸出為1,其余輸出為0,從而實現(xiàn)對于人體關(guān)節(jié)點的檢測提取。
Mask R-CNN網(wǎng)絡(luò)輸出的關(guān)節(jié)點為COCO格式,包括18個點的坐標位置數(shù)據(jù),然而這18個點中的左眼、右眼、左耳、右耳這4個點在人體運動過程中相對位置不會發(fā)生變化同時與人體行為的相關(guān)性較小,而且這4個點的空間位置相近,在后續(xù)的行為檢測中容易對識別產(chǎn)生干擾。因此從中剔除這4個點,僅保留能夠代表肢體運動的14個關(guān)節(jié)點數(shù)據(jù),作為后續(xù)關(guān)節(jié)行為模型的輸入信息。
觀察人體行為中的各關(guān)節(jié)運動規(guī)律,可發(fā)現(xiàn)在一個行為中并非所有關(guān)節(jié)同時運動,每個關(guān)節(jié)的運動幅度大小不一,這就意味著各關(guān)節(jié)的運動信息與當前人體行為的相關(guān)性存在差異。因此,將各關(guān)節(jié)的位置坐標序列送入LSTM網(wǎng)絡(luò),即可學(xué)習(xí)行為中前后幀之間的關(guān)節(jié)時序特征;但是這種直接采用原始關(guān)節(jié)點位置坐標的方式不能明顯的表征人體運動過程總各個關(guān)節(jié)點的運動幅度差異,為了進一步描述各關(guān)節(jié)點運動幅度的差異性,針對人體的每個關(guān)節(jié)點構(gòu)造了當前幀與上一幀之間的關(guān)節(jié)點位移矢量模型,通過同一關(guān)節(jié)點在前后兩幀中的位置坐標,計算出該點在前后兩幀之間的位移矢量,以每個關(guān)節(jié)點的幀間位移矢量大小來表征該關(guān)節(jié)點的與運動幅度。
除此之外,一些關(guān)節(jié)點在人體行為過程中并沒有發(fā)生明顯的空間位置移動,但是仍對于當前的行為具有較大的影響。例如人體在執(zhí)行揮手動作時,除了肘部、手部兩個關(guān)節(jié)點與當前行為動作的相關(guān)性較高以外,該側(cè)肩部的運動也對當前行為動作具有較大的影響,但是肩部關(guān)節(jié)點在揮手動作中并沒有產(chǎn)生較大的空間位移而是發(fā)生了旋轉(zhuǎn)。這種情況下,幀間位移矢量模型并不能描述旋轉(zhuǎn)點與當前行為的相關(guān)性大小,然而關(guān)節(jié)點發(fā)生旋轉(zhuǎn)時該點與其兩側(cè)相鄰關(guān)節(jié)點構(gòu)成的夾角也會發(fā)生明顯變化,因此,考慮以除過肢體末端以外的其余關(guān)節(jié)點與其兩側(cè)相鄰的兩個關(guān)節(jié)點構(gòu)成的夾角來表征該點的旋轉(zhuǎn)情況,具體構(gòu)成夾角的關(guān)節(jié)點組合包括:左右手臂的手、肘、肩;左右腿部的足、膝、胯;左側(cè)肘、肩和頸;右側(cè)肘、肩和頸;左側(cè)膝、胯和頸;右側(cè)膝、胯和頸;頭、頸、左肩;頭、頸、右肩;頭、頸、左胯;頭、頸、右胯;左肩、頸、左胯;右肩、頸、右胯;共計14個夾角數(shù)據(jù)。然后,計算每個夾角在前后幀間的夾角變化量,得到一個幀間骨骼夾角變化模型。
(1)
(2)
圖3 行為檢測方法結(jié)構(gòu)圖
為了印證位移矢量和骨骼夾角變化量表征人體行為信息的可行性,以Li等人[20]于2010年建立的MSR Action 3D數(shù)據(jù)集開展實驗,它記錄了10個被試者、20種類型的人體行為,每個被試者執(zhí)行每個行為2~3次,總共包含了567個行為的關(guān)節(jié)運動序列。以揮手、側(cè)踢的序列數(shù)據(jù)為例,計算每個行為的關(guān)節(jié)位移和骨骼夾角變化,并以關(guān)節(jié)半徑的大小來直觀表達該點與當前行為的相關(guān)程度,關(guān)節(jié)半徑越大,則說明該點與當前行為的相關(guān)程度越高,反之則相關(guān)程度越低,結(jié)果如圖4。從圖4可以看出人體在揮手和踢腿時,僅有手臂和腿部關(guān)節(jié)的半徑明顯增大,即手臂和腿部的關(guān)節(jié)與當前行為具有較高的相關(guān)性,其余關(guān)節(jié)相關(guān)性不明顯。說明補充這類信息可進一步明確行為識別應(yīng)重點學(xué)習(xí)的關(guān)鍵部位。
圖4 各關(guān)節(jié)的行為相關(guān)性表征圖
在通過關(guān)節(jié)行為模型計算得出位移矢量序列和骨骼夾角變化序列后,與原始關(guān)節(jié)點序列進行組合,形成一個尺寸為4×14的二維數(shù)組,以此作為前幀中人體的行為信息??紤]到人體行為具有連貫性和時間上的持續(xù)性,多幀行為信息序列相比于單幀行為信息能夠更加完整表征人體行為,所以,對多幀行為信息進行特征提取的方式更加合理。
由于長短時記憶網(wǎng)絡(luò)LSTM在處理序列長時間依賴關(guān)系上展現(xiàn)出較好的效果,因此可以借助LSTM進行動作序列依賴特征提取并結(jié)合Softmax分類得出行為檢測結(jié)果。LSTM結(jié)構(gòu)如圖5所示。
圖5 LSTM結(jié)構(gòu)圖
it=σ(wi·[ht-1,xt]+bi)
(3)
(4)
遺忘門機制能夠?qū)⒋鎯卧械牟糠中畔⑻蕹x擇性地遺忘時間窗之前的信息。式(5)為遺忘門計算公式。
ft=σ(wf·[ht-1,xt]+bf)
(5)
單元狀態(tài)更新可用式(6)計算,在輸入門和遺忘門的控制下結(jié)合上一時刻的單元狀態(tài)信息來更新t時刻的單元狀態(tài)。
(6)
式(9)、式(10)為t時刻隱藏層輸出信息ht。
ot=σ(wo·[ht-1,xt]+bo)
(7)
ht=ot*tanh(Ct)
(8)
其中:w為權(quán)重;b為偏置;σ是sigmoid激活函數(shù);Ct-1是t-1時刻的單元狀態(tài);ht-1是t-1時刻的隱藏層輸出;xt是時間t的輸入。
最終,設(shè)計的LSTM網(wǎng)絡(luò)結(jié)構(gòu)為兩層,輸入層送入行為序列信息,兩個LSTM層進行時間序列特征提取,然后在第二個LSTM層后連接Softmax層對LSTM隱藏層的輸出向量分類,得出行為分類結(jié)果。
另外考慮到檢測系統(tǒng)的實時性要求以及多幀序列讀取的問題,在多幀行為序列輸入檢測分類模塊之前,還需設(shè)計一個特定幀長的滑動窗,將長視頻的行為序列通過滑窗截取后再輸入檢測分類網(wǎng)絡(luò),圖6為滑窗示意圖。滑窗從首幀開始沿時間序列向后逐幀滑動,滑動過程中每檢測到最新一幀的行為序列,就將新幀的行為序列加入到滑窗序列尾部,并刪除滑窗序列頭部的一幀行為序列,以此方式實現(xiàn)檢測分類網(wǎng)絡(luò)對長視頻序列的固定幀數(shù)讀取。
圖6 滑窗結(jié)構(gòu)示意圖
為了得到滑窗幀數(shù)長短的參考值,在MSR Action 3D數(shù)據(jù)集上展開分析、研究,該數(shù)據(jù)集記錄了10個被試者、20種類型的人體行為,每個被試者執(zhí)行每個行為2~3次,總共包含了567個行為的關(guān)節(jié)點運動序列。將每種行為的手、肘、膝、足部的橫縱坐標沿時間序列繪制成關(guān)節(jié)運動時序曲線,從中統(tǒng)計每種行為的時序變化周期,指導(dǎo)滑窗幀長的確定,最終統(tǒng)計得出20種行為的平均周期幀長為14.95,因此確定滑窗幀數(shù)長度取15幀。
系統(tǒng)設(shè)計完成后,首先需要在計算機上對行為檢測網(wǎng)絡(luò)進行訓(xùn)練,使其能夠達到理想的檢測效果,然后,將訓(xùn)練好的行為檢測器部署到主控模塊中運行并驗證系統(tǒng)行為檢測效果。
為了能達到理想的行為識別效果,采用MSR Action 3D數(shù)據(jù)集對行為檢測網(wǎng)絡(luò)模型進行訓(xùn)練和測試。數(shù)據(jù)集中的20類動作見表2。從這20類動作中篩選出日常生活中最常見的高揮臂、水平揮臂、雙臂揮動、捶打、前沖、拍手、側(cè)拳、彎腰、前踢、側(cè)踢、慢跑、接拋等12種行為對行為檢測網(wǎng)絡(luò)模型訓(xùn)練、測試。
表2 MSRAction3D數(shù)據(jù)集行為類別
實驗訓(xùn)練平臺基于Windows10操作系統(tǒng),計算機處理器為英特爾酷睿i5-10600kf,運行內(nèi)存為16G,顯卡為NVIDIA GTX1060,實驗框架采用TensorFlow深度學(xué)習(xí)框架。
實驗將MSR Action 3D數(shù)據(jù)集以8:2的比例劃分為訓(xùn)練集和測試集,采用梯度下降算法對行為檢測器進行迭代訓(xùn)練。為了能夠充分訓(xùn)練從而獲取性能良好的行為檢測器,同時為避免行為檢測器在訓(xùn)練過程中發(fā)生出現(xiàn)過擬合現(xiàn)象,使用早停法控制訓(xùn)練效果達到最佳時停止訓(xùn)練。當?shù)?xùn)練次數(shù)達到1 200次時,識別準確率逐漸趨于穩(wěn)定,訓(xùn)練停止。最終得出行為檢測網(wǎng)絡(luò)模型的識別準確率為93.7%。
將訓(xùn)練后得到的行為檢測器部署到主控模塊中,運行該檢測系統(tǒng),并對該系統(tǒng)的工作情況進行檢驗,包括圖像采集模塊是否正常工作、顯示模塊是否正常顯示畫面和行為檢測結(jié)果、報警模塊能否針對危險行為類別發(fā)出警報。
經(jīng)檢驗,該系統(tǒng)各部分均能夠正常工作,攝像頭采集畫面正常、行為檢測結(jié)果準確且能夠在顯示屏上正常顯示,當行為檢測結(jié)果為危險行為時,報警模塊能夠正常發(fā)出警報,當行為檢測結(jié)果不是危險行為時,報警模塊不工作,屏幕僅顯示當前行為類別,測試達到預(yù)期效果,系統(tǒng)實際工作情況如圖7。圖7(a)中目標人體執(zhí)行揮手行為,顯示模塊左側(cè)顯示真實畫面,右側(cè)顯示人體關(guān)節(jié)姿態(tài),同時屏幕顯示當前行為類別為揮手,報警模塊二極管呈熄滅狀態(tài),蜂鳴器不發(fā)出報警;圖7(b)中目標進行出拳擊打,屏幕顯示側(cè)拳行為,該行為被報警模塊判斷為危險行為,則二極管閃爍提示,蜂鳴器發(fā)出報警。
圖7 行為檢測系統(tǒng)工作情況
針對現(xiàn)有行為檢測系統(tǒng)中依賴慣性傳感器、檢測結(jié)果不夠準確的問題,設(shè)計了一種基于人體骨架信息的行為檢測系統(tǒng)。以Jetson nano人工智能計算設(shè)備、圖像采集模塊和報警模塊搭建硬件平臺,并以關(guān)節(jié)坐標為基礎(chǔ),結(jié)合肢體間的運動差異,建立了關(guān)節(jié)位移矢量和骨骼夾角變化的行為表征模型。在主控模塊部署訓(xùn)練好的行為檢測器,提取行為表征模型中的人體行為特征并分類,將分類結(jié)果輸入報警模塊進行危險行為判斷并決策是否報警。實驗結(jié)果表明系統(tǒng)能夠有效檢測常見的人體行為。但對于復(fù)雜度較高和相似度較小的行為識別問題上仍存在不足,今后將針對此類問題繼續(xù)研究。