袁陸, 陶慶, 劉景軒, 裴浩
(新疆大學機械工程學院, 烏魯木齊 830017)
物聯網和人工智能的發展促進了智能教育教學和智能辦公的普遍發展,智能教育教學不僅可以預防和控制課堂相關的健康問題(例如,肌肉骨骼疾病、脊柱側彎、頸椎病、近視、心血管疾病等),同時還能減緩工作者或者學生們的心理壓力,提高工作學習效率。如今,坐姿識別系統可以利用傳感技術以及機器視覺等進行開發應用。
目前可穿戴設備[1-3]、壓力傳感器[4-6]、RGB或RGB-D相機[7-9]是坐姿識別常用的技術。Luna-Perejón等[4]通過放置在座椅上的力敏電阻器達到了識別6種日常會損害運動系統的不正確坐姿。Jeong等[5]開發了一種嵌入傳感器的智能椅子系統,可用于預防與坐姿相關的肌肉骨骼疾病的實時姿勢反饋系統。Vermander等[6]提出了一種基于多層神經網絡的智能分類器,用于輪椅使用者坐姿的分類。周世源[7]研究了圖像處理在坐姿識別方向的應用,使用CMU優化后的Open Pose網絡,選取人體關鍵點作為坐姿識別的依據。
可穿戴設備能夠持續監測,但它需要附著在用戶的皮膚或衣服上才能收集數據,因此,在現階段可能并不實用。相比于基于傳感器的方法,利用機器視覺的識別的方法具有低成本、操作便利、信息豐富、部署智能、應用更舒適等優勢。
2010年微軟公司推出了一款Kinect體感設備,隨后很多機構和學者都基于Kinect在計算機交互界面以及人體姿態識別進行了深入研究,并取得了良好的效果。Kinect深度相機的出現,極大地簡化了人體三維建模的過程,有效提高了坐姿識別的可靠性與準確性。
就現有文獻研究方法而言,大多數基于計算機視覺的坐姿識別研究僅使用RGB圖像作為輸入進行識別,將三維世界映射到二維空間的相機將不可避免地導致信息丟失,這導致在真實場景中難以獲得高精度的識別效果,這種方法存在光干擾以及識別效果不顯著等問題[10]。利用Kinect SDK 2.0傳感設備,獲取RGB圖像和深度(Depth)圖像,因為RGB 圖像信息和Depth圖像信息具有互補特性,RGB模態提供像素色彩信息以及紋理線索,Depth模態則包含了視點距離物體的距離信息、幾何和形狀線索,且不受光照條件和顏色變化的影響,所以深度信息的內容對于人體坐姿狀態表征是非常有可鑒性的[11]。
現使用RGB-D圖像不僅可以提取RGB豐富像素特征信息,同時融入Depth圖像,這能夠有效克服光干擾,有效避免光照和復雜背景的影響,并改進一種混合神經網絡——采用雙流RGB-D圖像作為雙輸入,將殘差結構引入EfficientNetB0網絡架構中,提出一種基于改進R-EfficientNet的雙流RGB-D多模態信息融合的坐姿識別算法,以獲得更高的識別準確性,識別的坐姿為人們日常的8類姿勢。以期有效解決目前由于坐姿識別不精確導致的推廣受限等問題,且識別結果有助于改進辦公家具、課桌椅設計,同時也為人體工程學研究者或醫療保健專業人員的決策提供支持[12]。
由于目前沒有公開的坐姿圖像數據集,而且所需要的是RGB圖像和Depth圖像匹配對應的數據集,因此通過KinectV2傳感器作為采集設備,獲取坐姿RGB圖像以及對應的Depth圖像,采集30名學生(18名男、12名女)日常的8種坐姿數據:正確坐姿、趴著、上身左傾、上身右傾、前傾、后仰、左撐頭和右撐頭。將采集到的圖像數據整合,形成自己的一套RGB-D坐姿數據集,在模型訓練前,為了達到提高模型的準確性,實現模型的快速收斂及快速訓練的目的,必須對RGB-D數據集進行預處理。由于Depth圖像數據中每個像素點的灰度值代表著視點距離物體的位置信息,可以利用直方圖均值化提高對比度,降低噪點數,使得更加突出人體坐姿像素,在增強整體圖像對比度的同時不影響局部對比度的增強[13],從而更清晰地反映出深度信息。
由直方圖可以得到灰度等級的離散概率分布函數,表達式為
(1)
根據灰度量化級數M得到各個等級的量化值為
(2)
然后對每一個F(k)重新進行等級劃分:如果F(k)與G(j)最相近,就將所有原始灰度級為rk的像素轉變為rj。按此規則對各個灰度等級的像素重新劃分灰度級,達到均衡化的目標。接著選用核為3×3進行中值濾波操作處理[14],減少深度圖像的噪聲和填補部分小缺塊,對比結果如圖1所示。

圖1 深度圖像進行中值濾波操作前后對比圖
由于利用Kinect V2.0體感設備獲取到RGB圖像數據的分辨率大小為1 080×1 920,Depth圖像數據的分辨率大小為424×512,RGB圖像和Dpeth圖像不僅在分辨率上存在差異,而且在包含可視范圍的區域上也存在差異。因此,為了融合RGB-D圖像特征,建立RGB-D數據庫,需要對RGB圖像數據和Depth圖像數據進行圖像配準校對。采用相機定標方法,將Depth坐標系中的像素點與RGB圖像坐標系中的像素點進行一一校準,在后續生成RGB-D roi的過程中,獲取Depth圖像與RGB圖像坐標點的相互映射關系。通過相機定標法[15]得到的RGB圖像的本征參數矩陣為Krgb,深度圖像的本征參數矩陣為Kd。RGB圖像的外部參數矩陣為Rrgb和Trgb,深度圖像的外部參數矩陣為Rd和Td。
RGB圖像的非齊次像素坐標為Prgb=[Urgb,Vrgb,1]T,Depth圖像的非齊次像素坐標為Pd=[Ud,Vd, 1]T。將Depth圖像坐標映射到RGB圖像坐標的旋轉矩陣R和平移矩陣T,表達式分別為
(3)
(4)
旋轉矩陣R和平移矩陣T通過彩色圖像與深度圖像本參數矩陣與其轉置矩陣相乘得到。計算出Depth圖像與RGB圖像像素坐標點的相互映射關系,公式為
Rrgb=(RZdPd+T)/Zrgb
(5)
通過得到深度圖像的坐標值Pd及其像素值Zd,以及記錄距離Zrgb,得到對應于點映射的RGB圖像的坐標Prgb。Kinect V2.0校準后得到的R和T為固定的常值矩陣,這便于在后續融合中將該算法處理后的圖像輸入改進的雙流R-EfficientNet多模態信息融合的坐姿識別算法中。
為了進一步防止模型過擬合,增強模型訓練的魯棒性及泛化能力,需要對預處理后的RGB-D訓練數據集進行數據增強處理。使用Pytorch工具箱對圖像在訓練過程中對數據集中每一對圖像進行動態縮放。并將RGB-D圖像進行0.85倍的隨機裁剪,裁剪后的圖像需要重新插補為224×224大小的圖像。隨機調整RGB圖像亮度、對比度、飽和度,將圖像轉換為張量格式,然后對張量圖像進行歸一化[16]。增強后的數據,將原訓練集擴大3倍,得到1 952對(3 904張)RGB-D圖像用于訓練模型。
為了提高識別精度,神經網絡結構的層數也在不斷優化加深,但網絡的加深導致梯度消失以及梯度爆炸等問題,使得該模型收斂困難,造成準確率低的問題。含有殘差結構的網絡模型在層間引入淺層特征,增加殘差連接,能夠有效地防止梯度消失和緩解模型退化問題,從而讓神經網絡的層次數量的增加變得更為高效,具有強大的表征力。殘差結構[17]如圖2所示。

x為輸入;H(x)為輸出;F(x)為殘差
殘差單元在接受輸入數據之后,若一個淺層網絡的精度已經達到了一個極限,那么在其之后加入多個恒等映射層,使其輸出與輸入相等,并且對每個層的輸入加入一個x,使其得到更易于優化的殘差函數,神經網絡的層次能夠超過先前的限制,從而提升了辨識精度。在殘差塊結構中有含有兩層,表達式為
F(x)=W2σ(W1x)
(6)
式(6)中:σ為非線性激活函數,經過一個shortcut和第二個ReLU函數,即可得到輸出結果y,即
y=f(x,{Wi}+x)
(7)
在shortcut中,對x進行Ws的線性變換處理,以實現輸入和輸出維數的變化,即
F=(x,{Wi})+Wsx
(8)
為保證坐姿圖像分類任務的高準確率和實時性,選取網絡層數適中,收斂速度快,能夠平衡訓練速度和網絡深度的ResNet18作為第一層主干網絡,在保證RGB-D特征提取能力的同時,該網絡有較快的訓練和推理速度,不需要過多層次的殘差結構,且要求樣本數據量較少,也不容易產生過擬合現象。
ResNet18的網絡結構內含17個卷積層以及一個全連接層,如圖3所示。

Conv為卷積操作(括號中數據為卷積核大小尺寸);BN為批量歸一化操作;ResNet_a、ResNet_b為殘差結構;Relu為激活函數
將224×224的三通道RGB坐姿圖像數據輸入到該網絡中,通過ResNet18進行特征提取和降采樣,得到了一個大小為N×50×8×8(N為一個mini-batch大小)的特征圖,輸出的特征圖(feature map)維數為50,同理將Depth圖像也送入ResNet18中進行第一步的特征提取,將這兩個提取到的特征矩陣進行融合,組成一個新的特征矩陣X1,作為下一層網絡的輸入。
使用EfficientNetB0基線模型作為第二步網絡模型入口點,它接收一個尺寸為224×224×3的輸入圖像。使用EfficientNetB0的原因是由于其平衡的深度、寬度和分辨率,可以產生一個可伸縮的、精確的、易于部署的模型。目前已經有11個系列的版本,以滿足各種需求[18]。
EfficientNetB0[19]網絡綜合了MBConv和squeeze and excitation方法,在網絡模型中進行特征提取時,經過一個3×3的卷積核后,通過16個移動翻轉瓶頸卷積(MBConv)模塊的反復堆疊,最終添加了一個全局平均池化層和一個線性層,以整合全局空間信息并降低參數量,對每個權重在測試階段對其進行高斯分布的采樣。將各層特征映射進行平均池化獲得每一層的全局信息,然后通過線性層再去與特征映射相乘,這樣在反向傳播的時候就能通過梯度更新學到各層的權重。其結構如圖4所示。

Conv為卷積操作(后方為卷積核尺寸);MBConv為移動翻轉瓶頸卷積操作;k為核參數;stride為步長;Dropout為丟棄層;p為丟棄率
MBConv結構主要添加了兩個1×1卷積操作,并使用了SE層、Depwise Conv(深度可分離卷積)以及drop_connect方法來代替傳統的drop方法。每個MBConv卷積塊具體結構如圖5所示。

Conv為卷積操作(括號中數據為卷積核尺寸);BN為批量歸一化;Swish為Swish非線性激活函數;SE Module為自注意力機制模塊;stride為步長;Drop_connect為丟棄層
經過圖像采集以及預處理后,將數據集送入R-EfficientNet模型中,該模型第一層搭建的是ResNet18網絡架構,分別對RGB圖像以及Depth圖像進行第一輪特征提取,并將提取到的特征矩陣(記作X1)作為下一層的輸入。第二階段采用改進EfficientNetB0網絡架構將RGB圖像以及Depth圖像作為雙輸入,進行第二輪的特征提取,輸出的特征矩陣(記作X2)作為這一層的輸入,隨后將這兩個提取到特征矩陣X1及X2(特征量為50維)進行特征融合,經過兩個全連接層(FC1、FC2),FC1將200維的特征通道變為50維,FC2將FC1的50維通道數轉變為輸出,輸出的數值為8類標簽(對應著8種坐姿狀態),最后將提取到的坐姿特征輸入Softmax分類器計算坐姿類別并預測概率。R-EfficientNet模型架構如圖6所示。

ResNet18為殘差網絡結構;EfficientNetB0為EfficientNet網絡結構中B0類型的算法結構;Conv為卷積操作(后方數字表示特征維度);BN為批量歸一化處理;ReLu為激活函數;Max-Pool為最大池化;ResNet_a、ResNet_b為兩類殘差結構;MBConv為移動翻轉瓶頸卷積(k為核尺寸);2x、3x、4x為循環迭代次數
對于圖像多分類問題,為加快模型的收斂速度,選用Adam[20]自適應學習優化算法。使用批量大小為32的Adam優化器進行訓練和驗證,該算法既有AdaGrad[21]擅長求解稀疏梯度,又有RMSprop[22]擅長求解非穩定問題的優勢,而且其收斂速度遠超SGD優化器。Adam優化器算法利用指數滑動平均來估計梯度中每個成分的一階矩和二階矩,從而獲取每一步的更新量,并進一步提供自適應學習率,將各層次的網絡由線性組合改為非線性逼近能夠改善模型的預測精度。采用10-3的初始化速率,利用引入交叉熵損失函數,解決傳統方法中存在的學習效率較低的問題,從而有效地提升了坐姿識別的準確度,交叉熵損失函數公式為

(9)
式(9)中:y為預期輸出;α為實際輸出,α=σ(z),z=Wx+b。
當驗證損失函數Loss不提升時則減少學習率,每次減少學習率因子為0.2,Batch size設置為30,將數據集分割為訓練集(70%)、測試集(30%),對每個R-EfficientNet網絡進行了50和300個epoch的訓練,從0.001的學習率開始,并使用步進衰減學習率調度器每20個周期將其降低0.5倍。對于RGB-D坐姿數據集,提出的R-EfficientNet網絡模型框架的識別準確率從87.1%提高到了98.5%。本文方法流程圖如圖7所示。

圖7 R-EfficientNet方法流程圖
接著對所有對比模型進行300次獨立重復訓練,以保證實驗精度的準確性,取這300次實驗結果的中位數作為最終訓練結果。通過精確率(precision,P)、召回率(recall,R)、F1(F-Score)、準確率(accuracy,A)來評估模型性能,計算公式如式(10)~式(13)所示。
(10)
(11)
(12)
(13)
式中:TP為真陽性;TN為真陰性;FP為假陽性;FN為假陰性。
在R-EfficientNet模型訓練了300次的過程中,記錄模型的損失值,比較訓練損失和測試損失的變化曲線,判斷模型的擬合效果,如圖8所示。

圖8 R-EfficientNet模型訓練集及測試集損失變化曲線
模型訓練結果顯示,loss僅為0.015%。同時表明R-EfficientNet模型具有更好的收斂性,分類結果如表1所示,識別均值平均精度(mean average precision, mAP)達到了98.5%。由于利用了RGB圖像提供豐富的像素信息基礎上,加入了Depth圖像的位置距離信息,擴充了提取的特征內容,降低了模型的泛化程度。

表1 訓練分類結果
實驗中常常用P-R曲線作為衡量值來比較模型的性能好壞,P-R曲線中的P是精確率,R即是召回率,其代表的是精確率與召回率之間的關系,一般呈現負相關。同時,引入F1作為綜合指標,為了平衡準確率和召回率的相互造成的影響,F1的數值越大說明模型質量越高。為了更好地比較R-EfficientNet模型在人體坐姿識別領域的能力,選取常用于動作分類的VGG16、CNN網絡模型、ResNet18、EfficientNet與之比較。
從圖9中的P-R曲線的性質可以得出,R-EfficientNet模型包住了其他幾類模型,則可以說明模型R-EfficientNet的性能要優于其他幾類模型,但由于有個別模型發生了交叉,可以選用F1值來衡量模型性能優劣。

圖9 P-R曲線圖
結果證明,僅使用單獨的RGB或Depth圖像作為輸入進行識別,識別率較低,判別不準確,本文模型不僅利用了深度圖像特征引起的定位誤差小的優勢,同時借助了RGB通道的信息進行融合,達到了較高的識別準確度。由于本研究的目標為單獨的人,檢測對象比較大,僅使用深度圖像特征信息就可以準確地確定目標的位置信息,該方法大大降低了識別誤差。這些結果證實了使用RGB-D融合特征信息是可行的,同時證明了本文模型的優勢,可以達到人體可以在任何光照條件下正確定位并判別坐姿狀態。
從圖10的模型對比矩形圖可以看出,與其他方法相比,純深度方法的識別效果不好,收斂性能較差,主要原因是深度圖像會有一定的噪聲和孔洞的干擾[23],且包含的信息量較少。

圖10 模型性能對比矩形圖
混淆矩陣在判斷分類模型的優劣和分類效果方面表現良好,能清晰地顯示判定的8種常見坐姿識別中正確和錯誤識別的數量,使用RGB-D數據集來訓練本文模型并進行可視化和分析。
可以從混淆矩陣中看出,該方法的誤差主要是由于人體身形的差異性以及姿勢的多樣性,具有高度相似性有時會被錯誤地識別出來。具體來說,分類錯誤顯示在圖11中,混淆矩陣主要發生在姿勢6、姿勢7之間的相互誤判,主要是由于與相似類別混淆造成的。因為,在正常光照條件下,由于正確坐姿和前傾坐姿以及后仰坐姿相似,位置信息差異性較小,造成一定的誤差結果。此外,該方法也會受到光線變化的影響,從而導致識別錯誤,由于陰影和光線不均勻對RGB圖像的影響,部分姿態被錯誤識別,例如左撐頭以及右撐頭。

橫縱坐標0~7為坐姿的8個類別
提出了一種改進雙流多模態信息融合坐姿識別方法,實現了高精度的人體坐姿識別,不僅充分利用了RGB圖像特征,同時引入了Depth圖像來解決彩色圖像信息干擾導致的識別精度不高的問題,同時改進了一種深度學習模型算法,達到快速識別人體不正確坐姿的目的。
提出僅根據Kinect傳感器獲得RGB-D圖像數據,不再需要復雜的接觸式傳感設備儀器進行采集識別,有效降低了識別成本,提高了識別精度。以Pytorch作為深度學習框架進行訓練,對8種常見坐姿狀態分類識別率可達98.5%;對比不同網絡模型的訓練效果,所提出的R-EfficientNet在模型穩定性和準確性方面具有顯著優勢。實現了對不同坐姿快速、高效、低成本的分類識別,識別結果可以運用于醫療監護等領域,同時為各類家具生產提供有效的創新方案。