基于OpenPose的坐姿识别
基于OpenPose的坐姿識別
Sitting Posture Recognition Based on OpenPose
簡單說,就是提取18個身體關節和17條連接關節的線,作為提取到的坐姿特征。
介紹
坐姿識別方法可以分為兩類:基于傳感器的方法和基于圖像的方法。
構建數據集
一個提取人體姿勢的工具是OpenPose。OpenPose人體姿態識別項目是卡內基梅隆大學(Carnegie Mellon University, CMU)基于卷積神經網絡和監督學習開發的一個開源庫,在caffe[14]框架下開發。
姿態估計,如人體運動,面部表情,手指運動。適用于單人和多人,具有極佳的魯棒性[15]。OpenPose提供了一種自下而上的方法來實時估計多人手勢,而不需要任何字符檢測器。
加載OpenPose預訓練模型,算法將提取18個身體關節和17條連接關節的線。圖1和圖2是使用OpenPose提取關節點信息特征后的部分數據集。
算法
由于人體姿態的變化會導致人體關節位置的變化,因此在構建數據集時,只保留x和y的最小和最大坐標范圍內的圖信息。背景設置為黑色,冗余數據減少。整個數據集在應用到訓練過程之前進行處理。程序如下所示。
(a)將所有圖像切割為(60,60)像素,其中邊緣部分填充黑色像素。
(b)正確坐姿圖像用“0”標記,錯誤坐姿圖像用“1”標記。
?應用數據增強擴大數據集。由于實驗條件的限制,構建的數據集不夠大。因此,數據增強對于擴展用于訓練的數據集是必要的。
(d)對圖像進行歸一化,使像素在0到1的范圍內。
CNN模型由19層組成,輸入層用于輸入處理過的(64,64)像素的圖像。輸出層是使用SoftMax分類器的分類層。激活層應用ReLU函數,池化層的步長為(2,2)。
SGD +動量優化器用于訓練。由于采用了categorical_crossentropy作為損失函數,因此有必要根據分類次數對具有一熱編碼的分類標簽進行矢量化。只有兩個類別,所以標簽是二維的。
將數據增強過程中圖像的隨機旋轉范圍設置為20。圖像的水平移動范圍設置為0.2(移動前后的寬度比),圖像可以隨機進行水平翻轉。數據集分為訓練集、驗證集和測試集,分別占80%、10%和10%。構建的數據集用于訓練模型以優化參數,并存儲在TensorBoard的每日記錄中。
結論
本文開發了一種基于計算機視覺的課堂學生坐姿識別系統,用于發現和糾正學生的不良坐姿。該算法利用OpenCV對監視器捕捉到的視頻信息進行提取。然后利用OpenPose提取學生的姿態特征。利用Keras深度學習框架建立卷積神經網絡來訓練數據集。最后,利用訓練后的網絡模型來識別學生的坐姿。實驗表明,通過100歷元訓練,測試集和驗證集的準確率達到90%以上。經過實際測試,可以有效識別學生在課堂上的坐姿,幫助青少年養成良好的坐姿習慣,促進其健康成長。
總結
以上是生活随笔為你收集整理的基于OpenPose的坐姿识别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java并发编程实战】(十七):Fut
- 下一篇: 13.Excel vba开发-合并单元格