黃安義,沈 捷,秦 雯,王 莉
(南京工業大學 電氣工程與控制科學學院,江蘇 南京 211816)
目前國內外對人體姿態識別的研究,如文獻[1-5],都是基于計算機視覺的人體姿態識別。相比而言,坐姿的識別對人體姿態細節特征提取的方法有著更高的要求。目前從數據獲取方式上主要分為基于人體半接觸的傳感器和基于視覺的坐姿識別兩類。
朱衛平等和Qian等[6,7]通過壓電類傳感器獲取的數據和其它數據相融合進行坐姿識別。但這類方法因為人的體重和在椅子上坐的面積等差異因素,導致產生的數據不具有規律性,使其精度大打折扣。
而基于視覺的坐姿識別,如袁迪波等[8]提出基于膚色的YCbCr的BP神經網絡的坐姿識別。張鴻宇等[9]通過提取坐姿的深度圖像的Hu矩,采用SVM分類坐姿。Yao等[10]通過Kinect深度攝像頭捕獲的實時骨架數據估算頸部角度和軀干角度來判斷坐姿。曾星等[11]對坐姿深度圖像采用閾值進行前景提取并進行三維投影和降維,最后運用隨機森林對姿進行分類識別。
綜上所述,目前的方法主要有以下缺陷:第一,對于復雜背景下的抗干擾性較差;第二,不同人體坐姿多樣性和拍攝角度變化適應性較差;第三,坐姿的分類問題的類間區分方法具有模糊性。而本文提出的基于MIMO-CNN的多模態特征的坐姿識別在解決以上問題上提供了一個可行的方法。
本文所提出的坐姿識別方法流程如圖1所示。

圖1 坐姿識別方法流程
首先通過Kinect深度攝像頭獲取初始圖像,并對其進行預處理,并以預處理后的圖像為基礎進行三視圖映射。為了達到訓練含有大量參數的網絡,對數據集進行數據增強達到擴展數據集的目的,并使用增強后的數據集進行模型訓練,最終使用訓練后的模型進行左右和前后方向的坐姿識別。10種坐姿可分為前后和左右方向的識別,前后分為正坐、低頭、后仰和趴桌,左右方向分為左偏、居中和右偏。考慮到趴桌的特殊性不再進行左右方向判斷,具體分類如圖2所示。

圖2 坐姿分類
本文使用二代Kinect進行坐姿采集,因其強大功能的SDK,其可在深度數據的基礎上,應用骨骼評估算法獲得人體骨骼信息,生成人體外骨架圖像。
而本文所用的基本特征為深度圖像,深度圖像是指將從傳感器中得到它到場景中各點的距離信息并歸一換算為像素值的圖像。本文使用Kinect強大的SDK,獲得其人體輪廓圖和人體深度圖像,如圖3所示。

圖3 (左)人體輪廓圖和(右)人體深度圖像
本文通過Kinect獲取深度圖像和人體輪廓圖,并以此為基礎進行預處理。首先對深度圖像進行直方圖均值化,使得深度信息可以更好地在直方圖上分布。在增強局部對比度的前提下而不影響整體對比度,使得深度圖像能更清晰表達距離信息
(1)
g(x,y)=Sf(x,y)*(L-1)
(2)
式中:L是圖像中的灰度級總數,原圖像f的像素總數為n,nj為灰度值為j的像素數量。f(x,y)為原圖(x,y)位置的原像素值,g(x,y)為直方圖均值化后的像素值。均值化后的結果對比,如圖4所示。

圖4 直方圖均值化前后對比
接著對人體輪廓圖使用5*5的核進行開運算及中值濾波操作,減少圖像的噪聲和填補部分深度圖像小缺塊,對比結果如圖5所示。

圖5 開運算與濾波后的前后對比(左為原圖)
最后將前面預處理完的輪廓圖和深度圖像進行掩模操作,形成所需的人體深度前景圖像

(3)
式中:F(x,y)為生成的人體前景深度圖像,G(x,y)為深度圖像,D(x,y)為人體輪廓圖,rows為圖像的行數,cols為圖像的列數,結果如圖6所示。

圖6 人體前景深度圖像
接著進行閾值自動裁剪,裁減掉多余的白色背景,得到224×224的圖像,如圖7所示。

圖7 閾值自動裁剪效果
最后以裁剪后的圖像為基礎進行三視圖映射,并進行歸一化,最終得到224×224的人體坐姿深度三視映射,如圖8所示。

圖8 人體坐姿深度三視映射
目前沒有關于坐姿的深度開源數據集,所以在確保我們能在較少的樣本中較好地訓練和驗證所提方法,對其進行數據增強顯得尤為重要。因此在訓練過程中我們對數據集中每一張圖片進行50%概率的隨機裁剪。設原始圖像的寬度W和高度H,本文將以(0.85 W)×(0.85H)的滑動窗口對圖像進行自動隨機裁剪,并將裁剪后的圖像重新插補為W*H大小的圖像。
考慮到本問題的特殊性,不同于傳統的分類問題,其在人體姿態的坐姿方面的差異性與傳統的圖像分類相比,更加側重于更加細致深度信息的變化,而不是傳統的色彩、輪廓和紋理。因此也需要更多特征信息,所以本文將坐姿深度圖像的三視圖的多模態信息分別輸入到3個不同的通道中。
另一方面,本文考慮到坐姿的特殊性,其在左右方向和前后方向的識別具有差異性,因此本文的模型結構在輸出端使用的是雙通道輸出,分別對應坐姿的左右方向和前后方向的坐姿姿態的判斷。
而目前較為出色的網絡結構主要針對彩色圖像為場景。因此本文提出MIMO-MobileNet模型,搭建了一個適用于坐姿識別的三輸入兩輸出網絡結構,后期實驗也驗證了此結構的可行性。
其主要以MobileNet V2的Inverted Residual Block結構塊為基礎,結構塊先用point-wise convolution將輸入的feature map維度變大,然后用depth-wise convolution方式做卷積運算,最后使用point-wise convolution將其維度縮小。注意,此時的point-wise convolution后,不再使用ReLU激活函數,而是使用線性激活函數,以保留更多特征信息,保證模型的表達能力,同時也具有Resnet的思想,其結構如圖9所示。

圖9 Inverted Residual Block結構
MIMO-MobileNet模型結構如圖10所示,上層3個通道的網絡net_L、net_M、和net_T分別以坐姿深度圖像的左視圖、主視圖和俯視圖為輸入,并獨立對其進行特征提取,并將提取后的特征用于后面通道的網絡的輸入,使得淺層網絡能更充分的單獨對3個視圖不同的信息進行提取,而不進行權值共享。接著將net_L、net_M和net_T 的輸出進行通道合并作為net_pred_v的輸入,net_M、和net_T的輸出進行合并作為net_pred_h的輸入。最終net_pred_v輸出坐姿在前后方向的識別結果,net_pred_h輸出坐姿在左右方向的識別結果。其依據在于前后方向的坐姿變化在主視圖、左視圖和俯視圖都有明顯的變化,而在左右方向的坐姿變化,圖像信息變化主要體現在主視圖和俯視圖。

圖10 MIMO-MobileNet模型結構
MIMO-MobileNet模型的網絡框架參數見表1、表2和表3。
本文提出的MIMO-MobileNet模型為雙輸出網絡,因此在損失函數上,我們分別計算兩個輸出的交叉熵。交叉熵其本身具有較好的計算概率分布差異的能力,且利于梯度下降。所以在模型輸出后,本文對其進行softmax回歸處理后,得到輸出的概率分布,再進行交叉熵計算
(4)
式(4)為softmax公式,yi為原始輸出,y′i代表經過softmax回歸輸出后的概率分布,c表示分類問題的類別數

表1 net_L、net_M、net_T網絡框架參數

表2 net_pred_v網絡框架參數

表3 net_pred_h網絡框架參數
(5)
式(5)為交叉熵公式,其中labeli表示為one-hot編碼后的標簽,m為訓練batch的樣本數
(6)

本實驗中,以云端服務器作為工具,處理器型號為E5(8核),內存10 GB,顯卡為RTX2080Ti。linux系統作為基本系統環境,以python語言調用谷歌tensorflow進行網絡搭建及訓練。
驗證的數據集方面,因為目前沒有公開的坐姿數據集,所以本文自定義了10種人們最常見的坐姿狀態,并在攝像頭固定在離人座位1 m遠的位置處的條件下錄制了15個男性女性志愿者的坐姿數據。每種坐姿有30個樣本,前15張為正對攝像頭的錄制樣本,后15張為人體正對攝像頭并左右旋轉(小于45度)的錄制樣本,訓練樣本共4500張樣本,在訓練過程中使用上文提到的方法進行數據增強,因此實際訓練樣本遠多于此數。另外錄制5名志愿者的有視角變化的和無視角變化的兩個小樣本集分各750張,一共1500張坐姿數據測試集。以(正坐、左偏)坐姿為例的具有攝像頭角度變化的樣本,如圖11所示。

圖11 不同攝像頭角度的(正坐、左偏)樣本
同時本文數據集將不僅具有角度變化,人體坐姿也更加接近真實環境中的坐姿,坐姿數據復雜度高于近幾年其它方法,數據樣本與文獻[8]和文獻[11]的樣本進行對比,如圖12所示。因此不再將本文的結果與其它方法進行對比。

圖12 樣本復雜度對比
實驗一,將人體深度前景圖像進行通道復制為三通道的圖像作為輸入,選用MobileNet-V2模型進行坐姿識別。而實驗二,將三視圖合并為一張三通道的圖像作為輸入,具有更豐富的特征信息,仍使用MobileNet-V2模型進行坐姿識別。實驗三(本文方法),為本文提出的MIMO-MobileNet 模型方法,以上文的三視映射圖作為輸入。并分別在無角度變化的測試集和有角度變化的測試集上進行驗證。
實驗結果見表4,實驗一和實驗二在無攝像頭視角變化的測試集中,表現較為相似。但在更加復雜的視角變化的測試集中,我們發現具有更多信息的三視圖映射圖像作為輸入的實驗二,其81%的識別率明顯高于實驗一僅以人體深度前景圖像為輸入的74%的識別率。因此也驗證了三視圖映射圖像作為輸入,對于坐姿識別精度具有顯著的提升。但識別率依然不是特別突出。
而對比實驗二和實驗三(本文方法)可知,本文提出的網絡結構在各個測試集上識別精度都高于傳統的MobileNet-V2網絡。其總識別率也比實驗二高出3%。因此驗證了本文方法的合理性和優勢。
表5、表6分別為無視角變化測試集上各個方向識別的混淆矩陣,在前后方向的坐姿識別上,依然存在一部分的正坐被識別為相近的后仰或者低頭坐姿的情況。而在左右

表4 實驗準確率對比結果/%
方向,左偏和右傾被識別為居中,可能是與左右傾斜程度較小導致一定的混淆。

表5 無視角變化的前后方向混淆矩陣

表6 無視角變化的左右方向混淆矩陣
表7、表8為有視角變化測試集上各個方向識別的混淆矩陣。表中尤為明顯的是正坐被識別為低頭的錯誤,原因可能是某些的視角下,正坐的圖像特征與低頭極為相似。但在前后方向的其它坐姿下,識別率尤為出色。

表7 有視角變化的前后方向混淆矩陣

表8 有視角變化的左右方向混淆矩陣
為應對人體坐姿多樣性和拍攝角度變化,本文提出了基于MIMO-CNN的多模態特征人體坐姿識別方法。相比于單純的使用物理接觸式傳感器,基于視覺方案的坐姿識別具有更好的性能和可實現性。另一方基于多模態深度信息,和識別過程中使用具有分類性能更加突出的深度學習網絡的坐姿識別方法的確具有較高的識別率和魯棒性。需要指出的是本文所提出的坐姿識別方法主要適合用在單人坐姿識別的情況。接下來將對復雜的多人坐姿識別和更加復雜的三維多視角問題進行進一步的研究。