詹秀菊,陳鳳
(廣州中醫藥大學醫學信息工程學院,廣州 510006)
人類行為識別研究是利用大量外界采集的有效數據,對行為動作的類型進行訓練和識別分析,這是目前機器檢測人類行為動作的主要方法,這種方法被廣泛應用于醫療服務、智能環境和網絡空間安全等領域[1]。在人類行為識別領域中,目前有學者[2-4]利用神經網絡模型的構建對人類行為進行識別研究并取得較好的研究成果,本文基于Bi-LSTM 神經網絡的識別方法,構建Bi-LSTM 神經網絡模型以識別人類行為動作。
本文從UCI 公開數據集采集用戶動作的自然數據(走、上樓、下樓、站、坐和躺),并將收集的數據進行分類并填寫標簽,實驗隨機將7767 個樣本作為訓練數據,3162 個樣本作為測試數據,見圖1 所示。LSTM 輸入的數據需要3 維,分別是batch 批量、時間步長和特征數,因此要對數據進行維度擴張處理,將數據由(7767,561)轉換成(7767,561,1)。對于一維數據的標簽而言,模型的返回為每個類別的概率,即每個樣本需要返回13 個類別的概率,因此需要對類別進行獨熱編碼,由(7767,)轉換為(7767,13),獨熱編碼的數據處理見圖1 所示。

圖1 數據獨熱編碼
本實驗的Bi-LSTM 神經網絡模型結構設計簡單,主要由三個Conv1D(一維卷積)疊加后接入Bi-LSTM,最后連接全連接函數構成。
(1)第一層Conv1D,設置卷積核為3,通道數為8,激活函數為Relu;接入MaxPooling 最大池化層的池化核為2 且步長為2。
(2)第二層Conv1D,設置卷積核為3,通道數為16,激活函數為Relu;接入MaxPooling 最大池化層的池化核為2 且步長為2。
(3)第三層Conv1D,設置卷積核為3,通道數為32,激活函數為Relu;接入MaxPooling 最大池化層的池化核為2 且步長為2。
(4)第四層接入Bi-LSTM,隱含層單元數為32。
最后連接全連接函數,輸出單元數為13,并用Softmax 函數進行分類。
Bi-LSTM 神經網絡模型的構建主要包括參數設置、模型定義、模型初始化、模型訓練和模型測試等。
(1)參數設置
構建Bi-LSTM 神經網絡模型時采用Adam 作為模型優化器,學習率為0.01,損失函數為交叉熵損失函數,評價指標采用正確率Accuracy。并設置訓練集的數據為 7767 個樣本,進行 1800 次迭代,完成 30 個 Epoch,每個Epoch 完成60 個 Batch,每個Batch 大小為128。
(2)模型定義
Bi-LSTM 神經網絡模型結構設計和參數設置完畢之后,可在TensorFlow 深度學習平臺中對模型進行定義,模型定義核心代碼如圖2 所示。

圖2 模型定義代碼
(3)模型初始化
定義好模型每一層的所有參數、優化器和Softmax分類函數之后,可進行模型初始化,初始化核心代碼如圖3 所示。

圖3 模型初始化代碼
模型初始化后,就可以進行模型訓練和測試。因dropout 的比例對模型性能的影響較大,模型訓練時發現當dropout 取值為0.2 時,模型準確率是最高的,因此本實驗選取0.2 的比例作為Bi-LSTM 模型的dropout取值。
表 1 是 dropout 取值為 0.2 時 Bi-LSTM 的全部實驗結果,表格中訓練次數為30 次,從表中可以觀察到,訓練次數每增加一次,訓練集的損失值不斷降低,訓練集的正確率不斷提高;同時,測試集的損失值也不斷降低,正確率也不斷提高。

表1 Bi-LSTM 神經網絡訓練和測試結果
經過測試集測試后,可以從TensorFlow 深度學習平臺中獲取Bi-LSTM 神經網絡的混淆矩陣,如表2 所示。

表2 Bi-LSTM 神經網絡測試集混淆矩陣結果
備注:WK(走)、WU(上樓)、WD(下樓)、SD(站)、ST(坐)和LY(躺)
根據實驗結果發現,對于動態的動作(走、上樓和下樓)的識別率較高,但是對于靜態的動作(站、坐和躺)識別率相對較低。從實驗結果可知,Bi-LSTM 神經網絡模型對人類行為姿勢的識別準確率為88.80%,結果表明Bi-LSTM 神經網絡模型的識別率較高,可用于人類行為動作的識別。
用戶行為識別是近年來的研究熱點,當前的人類行為識別技術還有很多需要改進和完善的地方。隨著技術的進步和研究者們進一步挖掘,會有更多的算法和分類模型提出,這也將為以后的分類識別提供更先進的技術,能夠更好地提升識別效果。