【關(guān)鍵詞】樹莓派;P-LSTM 算法;深度學習;骨骼關(guān)鍵點
隨著當代社會發(fā)展的步伐加快,長時間采取坐姿的人群也不斷增加。長期采取坐姿工作,姿態(tài)會不自覺地發(fā)生改變,不正確的坐姿日積月累下來會造成腰背肌勞損等疾病[1]。青少年正處于長身體的關(guān)鍵時期,如果坐姿長期處于不正確的狀態(tài),那么就可能會導致視距過近、脊椎承受過多壓力的情況,進而導致近視、頸椎 病甚至是脊椎畸形等各種疾病。因此,開展坐姿識別的研究有著非常重要的意義。
現(xiàn)有坐姿識別方法主要分為兩類:一是基于可穿戴傳感器識別的方法,二是基于圖像識別的方法?;诳纱┐鱾鞲衅鞯姆椒ㄐ枰谟脩羯砩吓渲脗鞲衅饔靡圆杉脩糇诵畔?,但是此方法成本較高,而且可能導致用戶在使用過程中由于佩戴傳感器而感到不舒適甚至影響其日常的一些行為。相比較,使用圖像處理進行坐姿識別的方法解決了可穿戴傳感器給用戶帶來的不適感,通過采集圖像的方式對用戶的坐姿進行檢測以及矯正,能夠有效預(yù)防當今社會中大部分人由于不良坐姿所帶來的身體健康問題。本文主要采用圖像處理方式進行坐姿分析,利用Part-AwareLong short-term memory(P-LSTM)算法和健康姿態(tài)判定算法分別進行坐姿識別和健康姿態(tài)判定[2]。同時將坐姿檢測和健康姿態(tài)判定兩個算法移植到樹莓派上,使坐姿矯正系統(tǒng)實現(xiàn)便攜應(yīng)用。
人的坐姿行為可以解釋為身體形態(tài)的時間序列。這些身體配置可以通過身體主要關(guān)節(jié)的3D位置有效而簡潔地表示。以這種方式,每個采集的視頻樣本都可以被建模為配置的順序表示。針對人體姿態(tài)識別和健康姿態(tài)判定,本系統(tǒng)首先通過PoseNet姿勢估計模型獲取人體的關(guān)鍵點,然后采用P-LSTM算法[3]和健康姿態(tài)判定算法分別進行坐姿識別和健康姿態(tài)判定。
(一)獲取骨骼信息模型
1.利用PoseNet模型對采集到的姿態(tài)進行關(guān)鍵點識別
本系統(tǒng)在進行姿態(tài)估計時在Py QT界面中移植了PoseNet模型,該模型可以識別出圖像以及視頻中人體的關(guān)鍵點位置,并且通過將各個關(guān)鍵點位置關(guān)聯(lián)起來就可以對人的姿態(tài)以及動作進行判斷。
一般情況下,姿態(tài)估計的識別工作包括兩個步驟:第一步是通過卷積神經(jīng)網(wǎng)絡(luò)輸入RGB圖像[4],本系統(tǒng)使用的PoseNet是MobileNetV1架構(gòu),生成一組熱圖和一些偏移圖,每種關(guān)鍵點對應(yīng)一個熱圖,這一步在邊緣TPU上計算,計算結(jié)果輸入到第二步中。第二步是通過多姿態(tài)解碼算法解碼出關(guān)鍵點坐標、關(guān)鍵點置信度。我們可以為Tensorflow Lite創(chuàng)建自定義設(shè)置,并將其附加到網(wǎng)絡(luò)圖本身。通過這樣的操作,就可以不對熱圖進行處理,而是利用邊緣張量來對單元API進行處理以調(diào)用這個網(wǎng)絡(luò),并從網(wǎng)絡(luò)之中直接獲得各個關(guān)鍵點位置、關(guān)鍵點置信度分數(shù)以及姿勢和姿勢置信度分數(shù)。
2.利用PoseEngine類得到最終的關(guān)鍵點和置信度[5]
PoseEngine類可以通過EdgeTPU API來實現(xiàn)對PoseNet網(wǎng)絡(luò)的會計訪問,只需要通過model.tflite文件進行初始化,然后調(diào)用DetectPosesInImage函數(shù),并向該函數(shù)傳入包含圖像的numpy對象,最后得到一個Pose對象,它包括識別出的所有人體關(guān)鍵點的坐標和對應(yīng)的關(guān)鍵點置信度,即最終得到人體骨骼信息,用于坐姿識別和健康判定。
(二)坐姿識別算法
因為坐姿檢測最主要的就是頭、脖頸、軀干骨骼的坐標判定和移動判定,所以采用基于循環(huán)神經(jīng)網(wǎng)絡(luò)的P-LSTM算法來實現(xiàn)此功能。
具體算法及實現(xiàn)框圖如圖1所示。遺忘門的構(gòu)成是一個Sigmod神經(jīng)網(wǎng)絡(luò)層以及一個按位乘操作;記憶門的構(gòu)成則是輸入門(Input Gate)、Tanh激活層以及一個按位乘操作;輸出門(Output Gate)與 Tanh 函數(shù)以及按位乘操作共同作用將細胞狀態(tài)和輸入信號傳遞到輸出端。
P-LSTM是基于LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)算法,LSTM用于解決一般遞歸神經(jīng)網(wǎng)絡(luò)中普遍存在的長期依賴問題,使用LSTM可以有效地傳遞和表達長時間序列中的信息并且不會導致長時間前的有用信息被忽略(遺忘),與此同時,LSTM還減緩了RNN中的梯度消失和爆炸問題。算法將整個識別到的身體的動態(tài)(在記憶單元中表示)劃分為身體部位的動態(tài)(基于部位的單元),并通過它們的連接學習最終的分類器。而P-LSTM采用LSTM獨立地學習身體各部位的共同時間模式,并將它們結(jié)合在全局水平上進行動作識別,提高識別準確性。
(三)健康姿態(tài)判定算法
圖像處理中對坐姿進行識別成功后,在樹莓派中設(shè)定的PyQT上位機界面的“人體姿態(tài)窗口”中實時繪制出識別的人體骨架,同時在“人體骨架窗口”中將相應(yīng)的關(guān)鍵點在畫面中的位置以及對應(yīng)位置的置信度打印出來,同時給采集不同坐姿數(shù)據(jù)的用戶分別打上標簽。從而采用圖像處理技術(shù)識別和捕獲視頻或者圖片中的人體,進一步確定人體各主要關(guān)節(jié)部位在圖像中的位置,通過與健康閾值內(nèi)的姿態(tài)比對進行坐姿健康判定,得出姿態(tài)是否健康。
具體實現(xiàn):利用估計算法得到估計坐標和置信度后,將估計坐標與健康閾值數(shù)據(jù)進行比對,若落于健康閾值內(nèi)且置信度較高則評判姿態(tài)健康;若落于健康閾值內(nèi)但置信度較低,則重新估計姿態(tài),并且實時比對;若超出健康閾值,則判定為不健康姿態(tài),傳遞命令給語音播報系統(tǒng)對客戶進行提醒。
(一)實驗環(huán)境
實驗所采用硬件模塊主要包括分辨率為640*480,像素為400萬的攝像頭,以及Intel I5十代6核處理器,內(nèi)存為16G的PC機,軟件開發(fā)環(huán)境為VSCode,OpenCV,開發(fā)語言為Python,訓練后的推理平臺為4GB內(nèi)存的樹莓派4B。
(二)骨骼坐標識別P-LSTM算法實驗結(jié)果與分析
本文參考相應(yīng)的消融實驗,獲得了本文提出的骨骼坐標識別P-LSTM算法與使用的兩個數(shù)據(jù)集上的幾種最先進方法進行比較的結(jié)果。
一個是Cross-Subject(CS):Cross-Subject按照人物ID來劃分訓練集和測試集,訓練集40320個樣本,測試集16560個樣本,將其中20人作為訓練集,剩余的作為測試集。
另一個是 Cross-View(CV):Cross-View按相機來劃分訓練集和測試集,總共有三個水平角度為45°、0°、-45°的攝像機。相機1采集的樣本作為測試集,相機2和3作為訓練集,樣本數(shù)分別為18960和37920。
最新的幾種骨骼坐標識別方法中,HCN[6]采用CNN模型從骨架數(shù)據(jù)中學習全局共現(xiàn),其是將骨架的每一個關(guān)鍵作為一個通道,然后通過卷積層來從所有的關(guān)節(jié)之中學習全局共現(xiàn)特征;ST-GCN是基于動態(tài)骨骼的動作識別方法;PB-GCN是基于部分的圖卷積網(wǎng)絡(luò)來從骨架視頻中識別動作;NTU RGB+D[7]數(shù)據(jù)集上的兩種協(xié)議(CS、CV)的最佳性能分別為95.0%和89.2%。
與Northwestern-UCLA訓練集上最先進的方法的精度比較,Northwestern-UCLA數(shù)據(jù)集(簡稱N-UCLA)是一個用于動作識別的數(shù)據(jù)集,包含了由10個不同的人在17個不同的動作中進行的動作捕捉數(shù)據(jù)。該數(shù)據(jù)集包含了骨骼關(guān)節(jié)位置和方向的信息,以及RGB圖像和深度圖像。這個數(shù)據(jù)集是用于評估動作識別算法的常用數(shù)據(jù)集之一。
Ensemble TS-LSTM 采用多個時間滑動LSTM (TSLSTM)分別提取短期、中期和長期時間動態(tài)。VisualizationCNN可視化卷積神經(jīng)網(wǎng)絡(luò)模型。比較在Northwestern-UCLA訓練集中先進方法的精度,相比于這幾種先進的算法模型,AGC-LSTM再次達到了93.3%的最佳準確率。
P-LSTM在性能上比它們要低一些,但是它由于網(wǎng)絡(luò)結(jié)構(gòu)更簡單,在樹莓派上移植更容易和方便。
(三)健康姿態(tài)判定算法實驗結(jié)果與分析
本文對坐姿判斷正確率進行了相關(guān)實驗。實驗使用攝像頭對不同體型的人分別從正面和側(cè)面進行坐姿采集,包括標準坐姿,左傾坐姿,右傾坐姿,前傾坐姿以及后仰坐姿,對每個人的每種坐姿分別采集200張圖片,形成訓練集。為了驗證該算法準確度,在室內(nèi)自然光下分別對兩名測試人員的不同坐姿進行測試,測得人體關(guān)鍵點坐標以及置信度,通過比較同一水平關(guān)鍵節(jié)點的像素橫坐標以及同一縱向關(guān)鍵節(jié)點的像素縱坐標得到該次坐姿測試的置信分數(shù)。對測試得到的置信分數(shù)求數(shù)值平均,得到平均識別率,能發(fā)現(xiàn)本次實驗平均識別率達到70%,最高識別率達到77%,即本系統(tǒng)能夠比較準確實現(xiàn)對不同姿態(tài)的判定。
坐姿矯正系統(tǒng)對解決坐姿不規(guī)范引起的健康問題有重大意義。本文提出的骨骼坐標識別P-LSTM算法,該算法獨立地學習各部分的共同時間模式,并將它們結(jié)合在全局水平上進行動作識別,相對于RNN算法,減緩了梯度消失和爆炸問題,同時,對LSTM算法的骨骼識別進行優(yōu)化,提出人體健康姿態(tài)判定算法,以2D姿態(tài)估計為基礎(chǔ),設(shè)定健康閾值,并對坐姿是否正確予以判斷并做出提醒。本文中所提出的系統(tǒng),利用采集圖像的方式來對用戶的坐姿進行檢測并根據(jù)需要進行矯正,能夠有效預(yù)防坐姿不規(guī)范引起的健康問題。但本文提出的系統(tǒng)也存在不足之處,在昏暗環(huán)境中,或者不同體格的用戶,都會導致攝像頭無法采集到良好的人體上半身圖像。