袁陸, 陶慶, 劉景軒, 裴浩
(新疆大學機械工程學院, 烏魯木齊 830017)
物聯(lián)網(wǎng)和人工智能的發(fā)展促進了智能教育教學和智能辦公的普遍發(fā)展,智能教育教學不僅可以預防和控制課堂相關(guān)的健康問題(例如,肌肉骨骼疾病、脊柱側(cè)彎、頸椎病、近視、心血管疾病等),同時還能減緩工作者或者學生們的心理壓力,提高工作學習效率。如今,坐姿識別系統(tǒng)可以利用傳感技術(shù)以及機器視覺等進行開發(fā)應用。
目前可穿戴設(shè)備[1-3]、壓力傳感器[4-6]、RGB或RGB-D相機[7-9]是坐姿識別常用的技術(shù)。Luna-Perejón等[4]通過放置在座椅上的力敏電阻器達到了識別6種日常會損害運動系統(tǒng)的不正確坐姿。Jeong等[5]開發(fā)了一種嵌入傳感器的智能椅子系統(tǒng),可用于預防與坐姿相關(guān)的肌肉骨骼疾病的實時姿勢反饋系統(tǒng)。Vermander等[6]提出了一種基于多層神經(jīng)網(wǎng)絡(luò)的智能分類器,用于輪椅使用者坐姿的分類。周世源[7]研究了圖像處理在坐姿識別方向的應用,使用CMU優(yōu)化后的Open Pose網(wǎng)絡(luò),選取人體關(guān)鍵點作為坐姿識別的依據(jù)。
可穿戴設(shè)備能夠持續(xù)監(jiān)測,但它需要附著在用戶的皮膚或衣服上才能收集數(shù)據(jù),因此,在現(xiàn)階段可能并不實用。相比于基于傳感器的方法,利用機器視覺的識別的方法具有低成本、操作便利、信息豐富、部署智能、應用更舒適等優(yōu)勢。
2010年微軟公司推出了一款Kinect體感設(shè)備,隨后很多機構(gòu)和學者都基于Kinect在計算機交互界面以及人體姿態(tài)識別進行了深入研究,并取得了良好的效果。Kinect深度相機的出現(xiàn),極大地簡化了人體三維建模的過程,有效提高了坐姿識別的可靠性與準確性。
就現(xiàn)有文獻研究方法而言,大多數(shù)基于計算機視覺的坐姿識別研究僅使用RGB圖像作為輸入進行識別,將三維世界映射到二維空間的相機將不可避免地導致信息丟失,這導致在真實場景中難以獲得高精度的識別效果,這種方法存在光干擾以及識別效果不顯著等問題[10]。利用Kinect SDK 2.0傳感設(shè)備,獲取RGB圖像和深度(Depth)圖像,因為RGB 圖像信息和Depth圖像信息具有互補特性,RGB模態(tài)提供像素色彩信息以及紋理線索,Depth模態(tài)則包含了視點距離物體的距離信息、幾何和形狀線索,且不受光照條件和顏色變化的影響,所以深度信息的內(nèi)容對于人體坐姿狀態(tài)表征是非常有可鑒性的[11]。
現(xiàn)使用RGB-D圖像不僅可以提取RGB豐富像素特征信息,同時融入Depth圖像,這能夠有效克服光干擾,有效避免光照和復雜背景的影響,并改進一種混合神經(jīng)網(wǎng)絡(luò)——采用雙流RGB-D圖像作為雙輸入,將殘差結(jié)構(gòu)引入EfficientNetB0網(wǎng)絡(luò)架構(gòu)中,提出一種基于改進R-EfficientNet的雙流RGB-D多模態(tài)信息融合的坐姿識別算法,以獲得更高的識別準確性,識別的坐姿為人們?nèi)粘5?類姿勢。以期有效解決目前由于坐姿識別不精確導致的推廣受限等問題,且識別結(jié)果有助于改進辦公家具、課桌椅設(shè)計,同時也為人體工程學研究者或醫(yī)療保健專業(yè)人員的決策提供支持[12]。
由于目前沒有公開的坐姿圖像數(shù)據(jù)集,而且所需要的是RGB圖像和Depth圖像匹配對應的數(shù)據(jù)集,因此通過KinectV2傳感器作為采集設(shè)備,獲取坐姿RGB圖像以及對應的Depth圖像,采集30名學生(18名男、12名女)日常的8種坐姿數(shù)據(jù):正確坐姿、趴著、上身左傾、上身右傾、前傾、后仰、左撐頭和右撐頭。將采集到的圖像數(shù)據(jù)整合,形成自己的一套RGB-D坐姿數(shù)據(jù)集,在模型訓練前,為了達到提高模型的準確性,實現(xiàn)模型的快速收斂及快速訓練的目的,必須對RGB-D數(shù)據(jù)集進行預處理。由于Depth圖像數(shù)據(jù)中每個像素點的灰度值代表著視點距離物體的位置信息,可以利用直方圖均值化提高對比度,降低噪點數(shù),使得更加突出人體坐姿像素,在增強整體圖像對比度的同時不影響局部對比度的增強[13],從而更清晰地反映出深度信息。
由直方圖可以得到灰度等級的離散概率分布函數(shù),表達式為
(1)
根據(jù)灰度量化級數(shù)M得到各個等級的量化值為
(2)
然后對每一個F(k)重新進行等級劃分:如果F(k)與G(j)最相近,就將所有原始灰度級為rk的像素轉(zhuǎn)變?yōu)閞j。按此規(guī)則對各個灰度等級的像素重新劃分灰度級,達到均衡化的目標。接著選用核為3×3進行中值濾波操作處理[14],減少深度圖像的噪聲和填補部分小缺塊,對比結(jié)果如圖1所示。
圖1 深度圖像進行中值濾波操作前后對比圖
由于利用Kinect V2.0體感設(shè)備獲取到RGB圖像數(shù)據(jù)的分辨率大小為1 080×1 920,Depth圖像數(shù)據(jù)的分辨率大小為424×512,RGB圖像和Dpeth圖像不僅在分辨率上存在差異,而且在包含可視范圍的區(qū)域上也存在差異。因此,為了融合RGB-D圖像特征,建立RGB-D數(shù)據(jù)庫,需要對RGB圖像數(shù)據(jù)和Depth圖像數(shù)據(jù)進行圖像配準校對。采用相機定標方法,將Depth坐標系中的像素點與RGB圖像坐標系中的像素點進行一一校準,在后續(xù)生成RGB-D roi的過程中,獲取Depth圖像與RGB圖像坐標點的相互映射關(guān)系。通過相機定標法[15]得到的RGB圖像的本征參數(shù)矩陣為Krgb,深度圖像的本征參數(shù)矩陣為Kd。RGB圖像的外部參數(shù)矩陣為Rrgb和Trgb,深度圖像的外部參數(shù)矩陣為Rd和Td。
RGB圖像的非齊次像素坐標為Prgb=[Urgb,Vrgb,1]T,Depth圖像的非齊次像素坐標為Pd=[Ud,Vd, 1]T。將Depth圖像坐標映射到RGB圖像坐標的旋轉(zhuǎn)矩陣R和平移矩陣T,表達式分別為
(3)
(4)
旋轉(zhuǎn)矩陣R和平移矩陣T通過彩色圖像與深度圖像本參數(shù)矩陣與其轉(zhuǎn)置矩陣相乘得到。計算出Depth圖像與RGB圖像像素坐標點的相互映射關(guān)系,公式為
Rrgb=(RZdPd+T)/Zrgb
(5)
通過得到深度圖像的坐標值Pd及其像素值Zd,以及記錄距離Zrgb,得到對應于點映射的RGB圖像的坐標Prgb。Kinect V2.0校準后得到的R和T為固定的常值矩陣,這便于在后續(xù)融合中將該算法處理后的圖像輸入改進的雙流R-EfficientNet多模態(tài)信息融合的坐姿識別算法中。
為了進一步防止模型過擬合,增強模型訓練的魯棒性及泛化能力,需要對預處理后的RGB-D訓練數(shù)據(jù)集進行數(shù)據(jù)增強處理。使用Pytorch工具箱對圖像在訓練過程中對數(shù)據(jù)集中每一對圖像進行動態(tài)縮放。并將RGB-D圖像進行0.85倍的隨機裁剪,裁剪后的圖像需要重新插補為224×224大小的圖像。隨機調(diào)整RGB圖像亮度、對比度、飽和度,將圖像轉(zhuǎn)換為張量格式,然后對張量圖像進行歸一化[16]。增強后的數(shù)據(jù),將原訓練集擴大3倍,得到1 952對(3 904張)RGB-D圖像用于訓練模型。
為了提高識別精度,神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的層數(shù)也在不斷優(yōu)化加深,但網(wǎng)絡(luò)的加深導致梯度消失以及梯度爆炸等問題,使得該模型收斂困難,造成準確率低的問題。含有殘差結(jié)構(gòu)的網(wǎng)絡(luò)模型在層間引入淺層特征,增加殘差連接,能夠有效地防止梯度消失和緩解模型退化問題,從而讓神經(jīng)網(wǎng)絡(luò)的層次數(shù)量的增加變得更為高效,具有強大的表征力。殘差結(jié)構(gòu)[17]如圖2所示。
x為輸入;H(x)為輸出;F(x)為殘差
殘差單元在接受輸入數(shù)據(jù)之后,若一個淺層網(wǎng)絡(luò)的精度已經(jīng)達到了一個極限,那么在其之后加入多個恒等映射層,使其輸出與輸入相等,并且對每個層的輸入加入一個x,使其得到更易于優(yōu)化的殘差函數(shù),神經(jīng)網(wǎng)絡(luò)的層次能夠超過先前的限制,從而提升了辨識精度。在殘差塊結(jié)構(gòu)中有含有兩層,表達式為
F(x)=W2σ(W1x)
(6)
式(6)中:σ為非線性激活函數(shù),經(jīng)過一個shortcut和第二個ReLU函數(shù),即可得到輸出結(jié)果y,即
y=f(x,{Wi}+x)
(7)
在shortcut中,對x進行Ws的線性變換處理,以實現(xiàn)輸入和輸出維數(shù)的變化,即
F=(x,{Wi})+Wsx
(8)
為保證坐姿圖像分類任務(wù)的高準確率和實時性,選取網(wǎng)絡(luò)層數(shù)適中,收斂速度快,能夠平衡訓練速度和網(wǎng)絡(luò)深度的ResNet18作為第一層主干網(wǎng)絡(luò),在保證RGB-D特征提取能力的同時,該網(wǎng)絡(luò)有較快的訓練和推理速度,不需要過多層次的殘差結(jié)構(gòu),且要求樣本數(shù)據(jù)量較少,也不容易產(chǎn)生過擬合現(xiàn)象。
ResNet18的網(wǎng)絡(luò)結(jié)構(gòu)內(nèi)含17個卷積層以及一個全連接層,如圖3所示。
Conv為卷積操作(括號中數(shù)據(jù)為卷積核大小尺寸);BN為批量歸一化操作;ResNet_a、ResNet_b為殘差結(jié)構(gòu);Relu為激活函數(shù)
將224×224的三通道RGB坐姿圖像數(shù)據(jù)輸入到該網(wǎng)絡(luò)中,通過ResNet18進行特征提取和降采樣,得到了一個大小為N×50×8×8(N為一個mini-batch大小)的特征圖,輸出的特征圖(feature map)維數(shù)為50,同理將Depth圖像也送入ResNet18中進行第一步的特征提取,將這兩個提取到的特征矩陣進行融合,組成一個新的特征矩陣X1,作為下一層網(wǎng)絡(luò)的輸入。
使用EfficientNetB0基線模型作為第二步網(wǎng)絡(luò)模型入口點,它接收一個尺寸為224×224×3的輸入圖像。使用EfficientNetB0的原因是由于其平衡的深度、寬度和分辨率,可以產(chǎn)生一個可伸縮的、精確的、易于部署的模型。目前已經(jīng)有11個系列的版本,以滿足各種需求[18]。
EfficientNetB0[19]網(wǎng)絡(luò)綜合了MBConv和squeeze and excitation方法,在網(wǎng)絡(luò)模型中進行特征提取時,經(jīng)過一個3×3的卷積核后,通過16個移動翻轉(zhuǎn)瓶頸卷積(MBConv)模塊的反復堆疊,最終添加了一個全局平均池化層和一個線性層,以整合全局空間信息并降低參數(shù)量,對每個權(quán)重在測試階段對其進行高斯分布的采樣。將各層特征映射進行平均池化獲得每一層的全局信息,然后通過線性層再去與特征映射相乘,這樣在反向傳播的時候就能通過梯度更新學到各層的權(quán)重。其結(jié)構(gòu)如圖4所示。
Conv為卷積操作(后方為卷積核尺寸);MBConv為移動翻轉(zhuǎn)瓶頸卷積操作;k為核參數(shù);stride為步長;Dropout為丟棄層;p為丟棄率
MBConv結(jié)構(gòu)主要添加了兩個1×1卷積操作,并使用了SE層、Depwise Conv(深度可分離卷積)以及drop_connect方法來代替?zhèn)鹘y(tǒng)的drop方法。每個MBConv卷積塊具體結(jié)構(gòu)如圖5所示。
Conv為卷積操作(括號中數(shù)據(jù)為卷積核尺寸);BN為批量歸一化;Swish為Swish非線性激活函數(shù);SE Module為自注意力機制模塊;stride為步長;Drop_connect為丟棄層
經(jīng)過圖像采集以及預處理后,將數(shù)據(jù)集送入R-EfficientNet模型中,該模型第一層搭建的是ResNet18網(wǎng)絡(luò)架構(gòu),分別對RGB圖像以及Depth圖像進行第一輪特征提取,并將提取到的特征矩陣(記作X1)作為下一層的輸入。第二階段采用改進EfficientNetB0網(wǎng)絡(luò)架構(gòu)將RGB圖像以及Depth圖像作為雙輸入,進行第二輪的特征提取,輸出的特征矩陣(記作X2)作為這一層的輸入,隨后將這兩個提取到特征矩陣X1及X2(特征量為50維)進行特征融合,經(jīng)過兩個全連接層(FC1、FC2),FC1將200維的特征通道變?yōu)?0維,FC2將FC1的50維通道數(shù)轉(zhuǎn)變?yōu)檩敵?輸出的數(shù)值為8類標簽(對應著8種坐姿狀態(tài)),最后將提取到的坐姿特征輸入Softmax分類器計算坐姿類別并預測概率。R-EfficientNet模型架構(gòu)如圖6所示。
ResNet18為殘差網(wǎng)絡(luò)結(jié)構(gòu);EfficientNetB0為EfficientNet網(wǎng)絡(luò)結(jié)構(gòu)中B0類型的算法結(jié)構(gòu);Conv為卷積操作(后方數(shù)字表示特征維度);BN為批量歸一化處理;ReLu為激活函數(shù);Max-Pool為最大池化;ResNet_a、ResNet_b為兩類殘差結(jié)構(gòu);MBConv為移動翻轉(zhuǎn)瓶頸卷積(k為核尺寸);2x、3x、4x為循環(huán)迭代次數(shù)
對于圖像多分類問題,為加快模型的收斂速度,選用Adam[20]自適應學習優(yōu)化算法。使用批量大小為32的Adam優(yōu)化器進行訓練和驗證,該算法既有AdaGrad[21]擅長求解稀疏梯度,又有RMSprop[22]擅長求解非穩(wěn)定問題的優(yōu)勢,而且其收斂速度遠超SGD優(yōu)化器。Adam優(yōu)化器算法利用指數(shù)滑動平均來估計梯度中每個成分的一階矩和二階矩,從而獲取每一步的更新量,并進一步提供自適應學習率,將各層次的網(wǎng)絡(luò)由線性組合改為非線性逼近能夠改善模型的預測精度。采用10-3的初始化速率,利用引入交叉熵損失函數(shù),解決傳統(tǒng)方法中存在的學習效率較低的問題,從而有效地提升了坐姿識別的準確度,交叉熵損失函數(shù)公式為
(9)
式(9)中:y為預期輸出;α為實際輸出,α=σ(z),z=Wx+b。
當驗證損失函數(shù)Loss不提升時則減少學習率,每次減少學習率因子為0.2,Batch size設(shè)置為30,將數(shù)據(jù)集分割為訓練集(70%)、測試集(30%),對每個R-EfficientNet網(wǎng)絡(luò)進行了50和300個epoch的訓練,從0.001的學習率開始,并使用步進衰減學習率調(diào)度器每20個周期將其降低0.5倍。對于RGB-D坐姿數(shù)據(jù)集,提出的R-EfficientNet網(wǎng)絡(luò)模型框架的識別準確率從87.1%提高到了98.5%。本文方法流程圖如圖7所示。
圖7 R-EfficientNet方法流程圖
接著對所有對比模型進行300次獨立重復訓練,以保證實驗精度的準確性,取這300次實驗結(jié)果的中位數(shù)作為最終訓練結(jié)果。通過精確率(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模型訓練集及測試集損失變化曲線
模型訓練結(jié)果顯示,loss僅為0.015%。同時表明R-EfficientNet模型具有更好的收斂性,分類結(jié)果如表1所示,識別均值平均精度(mean average precision, mAP)達到了98.5%。由于利用了RGB圖像提供豐富的像素信息基礎(chǔ)上,加入了Depth圖像的位置距離信息,擴充了提取的特征內(nèi)容,降低了模型的泛化程度。
表1 訓練分類結(jié)果
實驗中常常用P-R曲線作為衡量值來比較模型的性能好壞,P-R曲線中的P是精確率,R即是召回率,其代表的是精確率與召回率之間的關(guān)系,一般呈現(xiàn)負相關(guān)。同時,引入F1作為綜合指標,為了平衡準確率和召回率的相互造成的影響,F1的數(shù)值越大說明模型質(zhì)量越高。為了更好地比較R-EfficientNet模型在人體坐姿識別領(lǐng)域的能力,選取常用于動作分類的VGG16、CNN網(wǎng)絡(luò)模型、ResNet18、EfficientNet與之比較。
從圖9中的P-R曲線的性質(zhì)可以得出,R-EfficientNet模型包住了其他幾類模型,則可以說明模型R-EfficientNet的性能要優(yōu)于其他幾類模型,但由于有個別模型發(fā)生了交叉,可以選用F1值來衡量模型性能優(yōu)劣。
圖9 P-R曲線圖
結(jié)果證明,僅使用單獨的RGB或Depth圖像作為輸入進行識別,識別率較低,判別不準確,本文模型不僅利用了深度圖像特征引起的定位誤差小的優(yōu)勢,同時借助了RGB通道的信息進行融合,達到了較高的識別準確度。由于本研究的目標為單獨的人,檢測對象比較大,僅使用深度圖像特征信息就可以準確地確定目標的位置信息,該方法大大降低了識別誤差。這些結(jié)果證實了使用RGB-D融合特征信息是可行的,同時證明了本文模型的優(yōu)勢,可以達到人體可以在任何光照條件下正確定位并判別坐姿狀態(tài)。
從圖10的模型對比矩形圖可以看出,與其他方法相比,純深度方法的識別效果不好,收斂性能較差,主要原因是深度圖像會有一定的噪聲和孔洞的干擾[23],且包含的信息量較少。
圖10 模型性能對比矩形圖
混淆矩陣在判斷分類模型的優(yōu)劣和分類效果方面表現(xiàn)良好,能清晰地顯示判定的8種常見坐姿識別中正確和錯誤識別的數(shù)量,使用RGB-D數(shù)據(jù)集來訓練本文模型并進行可視化和分析。
可以從混淆矩陣中看出,該方法的誤差主要是由于人體身形的差異性以及姿勢的多樣性,具有高度相似性有時會被錯誤地識別出來。具體來說,分類錯誤顯示在圖11中,混淆矩陣主要發(fā)生在姿勢6、姿勢7之間的相互誤判,主要是由于與相似類別混淆造成的。因為,在正常光照條件下,由于正確坐姿和前傾坐姿以及后仰坐姿相似,位置信息差異性較小,造成一定的誤差結(jié)果。此外,該方法也會受到光線變化的影響,從而導致識別錯誤,由于陰影和光線不均勻?qū)GB圖像的影響,部分姿態(tài)被錯誤識別,例如左撐頭以及右撐頭。
橫縱坐標0~7為坐姿的8個類別
提出了一種改進雙流多模態(tài)信息融合坐姿識別方法,實現(xiàn)了高精度的人體坐姿識別,不僅充分利用了RGB圖像特征,同時引入了Depth圖像來解決彩色圖像信息干擾導致的識別精度不高的問題,同時改進了一種深度學習模型算法,達到快速識別人體不正確坐姿的目的。
提出僅根據(jù)Kinect傳感器獲得RGB-D圖像數(shù)據(jù),不再需要復雜的接觸式傳感設(shè)備儀器進行采集識別,有效降低了識別成本,提高了識別精度。以Pytorch作為深度學習框架進行訓練,對8種常見坐姿狀態(tài)分類識別率可達98.5%;對比不同網(wǎng)絡(luò)模型的訓練效果,所提出的R-EfficientNet在模型穩(wěn)定性和準確性方面具有顯著優(yōu)勢。實現(xiàn)了對不同坐姿快速、高效、低成本的分類識別,識別結(jié)果可以運用于醫(yī)療監(jiān)護等領(lǐng)域,同時為各類家具生產(chǎn)提供有效的創(chuàng)新方案。