賀宗梅
(長沙民政職業技術學院,湖南 長沙 410004)
人體行為識別在近些年發展比較迅速,目前應用比較多的領域在視頻監控和醫療保健行業,還有自動駕駛領域,而在殘疾人康復領域目前應用很少。黨的十九大報告明確提出“發展殘疾人事業,加強殘疾康復服務”。根據人口普查和全國殘疾人抽樣調查統計,目前我國殘疾人將達到8500萬之多。殘疾人的康復通常需要專業的康復人員去協助,但是這種協助很多時候人工成本比較高,為了能夠讓殘疾人自己可以進行規范的康復訓練,因此把基于視頻的人體行為識別技術應用到殘疾人的康復中就具有很重要的現實意義和經濟價值,同時也是對行為識別應用于殘疾人康復領域做了一個有益的探索。
通過對收集到的殘疾人康復行為進行分析,按照高內聚低耦合的設計理念,對殘疾人康復評測系統進行了模塊劃分,該系統的功能模塊包含6 個模塊,其中各模塊的功能如下:
用戶數據模塊:該模塊的功能主要為管理殘疾人的基本信息,包括殘疾人的姓名,身份證號,殘疾情況描述等;保存殘疾人朋友的康復計劃,根據計劃,生成康復任務;保存每次康復的效果數據,同時能夠自動生成報表,對比每次康復的效果等。
圖像預處理模塊:該模塊主要是對幀轉換過來的圖片進行預處理,因為圖像都是來自視頻,所以圖像需要通過幀的格式來進行提取,然后轉換成可以識別的圖片,因此這個過程就包括圖片灰度值、大小值、降噪等各種處理,確保輸入的圖片能夠滿足后續處理環節的需要。
關鍵點檢測模塊:在深度學習過程中,有人體骨骼標識的標識圖。該模塊對預處理過輸入的圖片進行關鍵點特征的提取,再匹配骨骼關鍵點,形成骨骼關鍵點的向量,為后續行為的姿態估計做準備。
姿態估計模塊:根據形成的骨骼關鍵點向量建立向量矩陣,根據矩陣來估計殘疾人朋友的康復姿態。
二次特征提取模塊:對預處理過的圖形進行二次特征提取,形成行為特征的矩陣。
康復評價及應用模塊:根據生成的各種矩陣,包括:關鍵點預測矩陣、骨骼關鍵點向量矩陣和行為矩陣,利用行為神經網絡模型進行行為識別。根據這些矩陣數據,對比標準行為數據得出本次動作的打分評價,最后形成訓練效果數據存入數據庫,用于后續的各種分析。
根據神經網絡原理,設計一款康復姿態識別的神經網絡模型,如圖1 所示。在神經網絡架構圖中標識了圖形輸入、核、步長、Padding等參數。

圖1 神經網絡模型架構
1.數據集準備
根據神經網絡訓練的需要,通過對現實和網絡資源的整理收集,共收集到康復姿態識別神經網絡訓練集1937張圖片,其中踢腿429張,下蹬有723張,站立有785張;測試集中踢腿有107張,下蹬有118張,站立有91張。每一種類別都放在不同的文件里并有標注。
2.搭建神經網絡
按照神經網絡架構圖的設計思路,在裝有python和pycharm 的實驗環境下,利用tensorflow 完成康復姿態識別神經網絡的搭建,其搭建的主要步驟如表1所示。

表1 神經網絡模型實現步驟

2獲取圖片路徑和標簽3數據類型返回4第一層卷積層5第二層卷積層6第三層卷積層7第四層池化層8第五層全連接層9第六層全連接層定義read_traffic_light方法,讀取每一張圖片并把讀取的像素矩陣放到images列表里,標簽放到labels列表里,返回的數據是np.array類型的數據。把數據轉換類型再返回,同時調用shuffle函數隨機打亂順序,從而完成數據構造。這樣就完成了圖片的像素矩陣并有了對應的標簽。采用tf.Variable函數定義兩個變量,變量1為權重,這個權重就是卷積核,該卷積核符合正態分布矩陣;變量2為偏置項,采用tf.truncated_normal函數生成,偏置項的shape必須與權重的深度相對應,參數:shape:一維的張量,也是輸出的張量;mean:正態分布的均值;stddev:正態分布的標準差。把第一層卷積的輸出作為第二層卷積層的輸入,這一層的卷積核大小為3*3,深度為32,對應上層輸出的深度,卷積的步長為2,padding為SAME。最后卷積的結果加上偏置項再進行RELU激活函數激活。filter_3=tf.Variable(tf.truncated_normal(shape=[3,3,48,64],mean=0,stddev=0.1))bias_3=tf.Variable(tf.constant(0.1,shape=[64]))conv_3=tf.nn.conv2d(leaky_relu_2,filter=filter_3,strides=[1,2,2,1],padding='SAME'fg_3=tf.nn.bias_add(conv_3,bias_3)relu_3=tf.nn.relu(fg_3)以第三層卷積層作為池化層的輸入,過濾器尺寸為3*3,步長為2。這一層的輸出為[None,2,2,64]的矩陣。添加dropout層使部分節點在訓練時的輸出置為0,防止過擬合,從而使得模型在測試數據上的效果更好。將數據矩陣平鋪成一維向量。建一個符合正態分布的矩陣,shape的第一個為256,第二個參數為隨機值。tf.matmul函數把構建的權重矩陣與平鋪的一維矩陣相乘,再加上偏置項。設置shape為100,IMAGE_CLASSIFY 的值為3,后一層的輸出深度為3;定義loss函數:采用tf.nn.sigmoid_cross_entropy_with_logits函數來計算預測值與真實值得交叉熵,tf.reduce_mean函數求平均值;優化loss:采用Adam算法優化loss,尋找全局最優點的優化算法,傳入一個learning_rate學習率的參數,參數設定為0.001。
3.神經網絡訓練
為了讓神經訓練得比較智能,在訓練過程中把數據分成一定的batch,當一個batch 訓練完成后再獲取下一個batch 進行訓練,train_batches 是我們上面獲取的圖片數量, batch_size 是一個batch 的大小。train_batches 對batch_size 求整數除法,就是一共有多少個batch。在分批次的訓練過程中,不斷優化loss,神經網絡每訓練一次batch的數據會更新一次loss,所以它每更新一次我們就利用測試集測試一次,每迭代一次打印一次loss,最后調用save 保存訓練模型,每迭代100 次保存一下模型。這樣就完成了神經網絡模型的訓練。訓練過程的運行結果如圖2所示:

圖2 運行過程
殘疾人康復評測系統側端工具采用攝像頭,手機端或者電腦端采用可視化的開發工具,在展示端采用目前主流的移動開發技術實現。具體軟件如下:
1.視頻處理工具:ffmpeg‐20181115
2.集成開發環境:Microsoft Visual Studio Code、Anaconda3
3.界面設計工具:wxFromBuilder
4.編程語言環境:python3.6
用戶登錄系統后,點擊開始訓練,系統會自動啟動端測設備,對殘疾人朋友的康復進行視頻拍攝,系統對采集到的視頻通過神經網絡模型進行分析并給出本次動作的打分,如圖2 所示。同時保存到數據庫,便于日后生成康復訓練報告。

圖3 康復評價圖
本文對殘疾人康復評測系統做了較好的實現,實現了數據采集、康復監測、康復評價等相關功能。在系統中引入了人體行為識別相關技術,設計了一個能夠滿足康復所需要的神經網絡模型,并對它做了實現和訓練,目前具備了較好的智能識別效果。該項目的實現為智能化康復系統研發做了較好的探索。但是,該系統只實現了腿部康復訓練評測功能,要進一步應用到其他部位的康復,還需要不斷地完善。