鐘經(jīng)謀 陳俊洪 黃可思 劉文印
(廣東工業(yè)大學(xué)計算機學(xué)院 廣東 廣州 510006)
近年來,機器人在各行各業(yè)的應(yīng)用變得越來越廣泛,例如制造業(yè)、醫(yī)療服務(wù)、家庭服務(wù)等,然而現(xiàn)有的機器人工作模式大多為預(yù)編程模型,無法自主學(xué)習(xí)操作。對此近年來人們提出從視頻中學(xué)習(xí)動作指令的學(xué)習(xí)方法,該方法不僅可以免除人工編程時間,而且能夠抑制外界環(huán)境的干擾。其中視頻學(xué)習(xí)的關(guān)鍵是對視頻中演示者動作的準確識別,動作識別的準確率影響物體分類的準確率。因而動作的準確性和時效性將直接影響機器人的技能學(xué)習(xí)的效果。
為了達到準確高效的學(xué)習(xí)效果,人們提出許多視頻動作識別方法,例如,Feichtenhofer等[1]提出結(jié)合時間和空間特征的雙流卷積網(wǎng)絡(luò),通過在相同像素位置融合空域卷積網(wǎng)絡(luò)和時域卷積網(wǎng)絡(luò),提高動作識別的準確率。Wang等[2]通過在雙流卷積網(wǎng)絡(luò)的基礎(chǔ)上改進卷積神經(jīng)網(wǎng)絡(luò)的形式和以更小的學(xué)習(xí)速率、更高Dropout系數(shù)進行訓(xùn)練,提高動作的識別率。然而,由于視頻環(huán)境變化、人體外貌改變等不確定因素,基于圖像視頻的動作識別具有一定的局限性。為了解決該問題,人們開始通過對人體骨骼節(jié)點運動進行分析,Yan等[3]首次提出運用時空圖卷積網(wǎng)絡(luò)在人體骨架上進行卷積,它有效地提取了人體骨架序列運動的時空特征,進而識別出動作。Tang等[4]提出利用強化學(xué)習(xí)對動作進行識別,該方法通過分析人體骨架的運動信息提取骨架序列中信息量最多的視頻幀,并丟棄不明確的幀,最終利用挑選的視頻幀進行動作識別,提高了識別效果。雖然這些方法都可以有效地捕捉到人體的操作動作,但是對于一些細微的操作動作,例如切、倒、攪拌等動作卻難以進行識別。
針對該問題,本文提出一種基于人體骨架、手部骨架和物體屬性的動作技能學(xué)習(xí)方法,該方法包含兩個模塊。第一個模塊是動作識別模塊,該模塊首先使用OpenPose算法識別RGB視頻中每一幀的人體骨架和手部骨架,然后我們基于人體骨架和手部骨架構(gòu)建自然連接拓撲圖,當(dāng)骨架鏈接拓撲圖構(gòu)建完畢后,我們使用時空圖卷積網(wǎng)絡(luò)提取人體骨架和手部骨架序列的時空特征,并根據(jù)時空特征識別出演示視頻中演示者的操作動作類別。第二個操作模塊是操作物體識別模塊,通過使用Mask R-CNN找出所有物體的位置并提取相應(yīng)特征,再將物體特征與第一個模塊所提取的動作特征進行融合,最后輸入到兩個LightGBM分類器將物體分為主體物體和受體物體。當(dāng)?shù)玫絼幼?、主體物體和受體物體后,我們將其進行組合用于表示視頻的語義。
本文的主要貢獻包括:
(1) 提出一種基于人體骨架和手部骨架序列的動作識別方法,通過構(gòu)建人體和手部自然連接拓撲圖,使用時空圖卷積網(wǎng)絡(luò)識別操作動作,提高了細微操作動作的識別率。
(2) 提出將基于人體骨架和手部骨架所提取到的動作特征與物體屬性相結(jié)合,進一步細分物體的操作角色,并提高了物體角色的識別準確率。
(3) 通過在MPII烹飪活動數(shù)據(jù)集2.0上進行實驗,我們有效地將視頻轉(zhuǎn)換成指令三元組。
對于機器人技能學(xué)習(xí)來說,動作的正確識別是機器人學(xué)習(xí)到技能的前提。動作識別的研究大致可以分為兩類。第一類是基于RGB視頻的動作識別,例如,Simonyan等[5]提出雙流卷積網(wǎng)絡(luò)提取視頻的時空特征進行動作分類,Tran等[6]提出在視頻動作識別中使用三維神經(jīng)網(wǎng)絡(luò)代替二維的神經(jīng)網(wǎng)絡(luò),以捕獲視頻中更多的時空信息,Wang等[7]提出Temporal Segment Network(TSN),通過稀疏時間采樣,降低長視頻識別的計算量。第二類是基于人體骨架序列的動作識別,然而由于早期基于RGB視頻的姿態(tài)估計算法對背景嘈雜、光照變化和外觀變化等因素?zé)o法較好地適應(yīng),導(dǎo)致其識別效果并不是很好,但隨著微軟Kinect[8]深度傳感器的出現(xiàn)和改進,以及姿勢估計算法[9]的不斷優(yōu)化,對光照變化和場景變化具有魯棒性的人體骨架被廣泛地應(yīng)用于動作識別。Yan等[3]提出時空圖卷積網(wǎng)絡(luò),該網(wǎng)絡(luò)從視頻中提取骨架序列的時空特征并進行動作分類。Li等[10]提出動作-結(jié)構(gòu)圖卷積,通過A-link推理模塊和自監(jiān)督算法捕獲更豐富的關(guān)節(jié)信息和動作信息。該算法雖然可以很好地預(yù)測人的運動,但由于只包含人體骨架特征,缺少手部骨架特征,導(dǎo)致其對于細微的操作卻取得不好的效果。為了解決該問題,在本文中,我們保留了時空圖卷積網(wǎng)絡(luò),并在此基礎(chǔ)上擴展人體和手部的無向時空圖,將人體骨架和手部骨架特征用于動作識別。我們更改了時空圖卷積網(wǎng)絡(luò)的大小和配置,并將其重新訓(xùn)練到新的骨架序列數(shù)據(jù)集上,從而獲得了動作識別的高準確率。
為了更好的人機交互,完整的視頻語義是必不可少的。關(guān)于演示視頻的語義表示的研究大致可以分為兩類。第一類是基于語義上下文無關(guān)的語法規(guī)則組合,通過建立語法規(guī)則組合出復(fù)雜的動作。例如,Summers-stay等[11]提出樹結(jié)構(gòu)語法規(guī)則,通過結(jié)合手、工具、物體等對演示者的操作過程進行描述。Yang等[12]提出操作上下文無關(guān)語法,該語法分別定義了動作和物體以及手與物體的關(guān)系,最后通過語法規(guī)則進行鏈接。第二類是基于語言學(xué)的描述,利用語言學(xué)表達視頻的語義。例如Yang等[13]提出使用GNet和CNet兩個分支網(wǎng)絡(luò)分別處理抓取方案和視頻描述,該方法能產(chǎn)生準確的命令和強大的抓取性能。Nguyen等[14]提出了<手-動作-物體>的結(jié)構(gòu)語義語法,該方法為端到端的學(xué)習(xí)方法,將演示視頻輸入即可得到指令。然而以上方法沒有解決多物體操作時的操作方式,對此,我們使用(動作(主體物體,受體物體))的指令三元組對操作過程進行表達,該方式可以解決機器人使用道具的難題,完整地保存了演示者的操作語義。
本文方法如圖1所示。本文方法分別使用基于人體骨架以及手部骨架的時空圖卷積網(wǎng)絡(luò)進行視頻動作識別和Mask RCNN識別物體,然后使用兩個LightGBM分類器將物體分類,最后使用動作三元組表達學(xué)習(xí)的技能。
圖1 本文方法框架
人體骨架通常以二維或三維人體關(guān)節(jié)點坐標表示,連續(xù)的人體關(guān)節(jié)點移動可以有效地表達人類的運動。不同于日常的人類運動,人類的操作往往包含有更多手部的細節(jié)。為了更好地識別人類的操作,我們提出將手部關(guān)節(jié)點加入人體骨架序列中進行分析。具體來說,我們首先使用OpenPose算法識別演示視頻中的人體關(guān)節(jié)點和手部關(guān)節(jié)點,在獲得N個身體關(guān)節(jié)點和M個手部關(guān)節(jié)點后,我們在T幀骨架序列上構(gòu)造一個無向時空圖G=(V,E)。其中,V表示點集合,它包含每一幀人體骨架和手部骨架的所有關(guān)節(jié)點,其表示如下:
V={vti|t=1,2,…,T,i=1,2,…,N+M}
(1)
式中:vti表示視頻中第t幀第i個關(guān)節(jié)點,并且我們使用特征向量F(vti)表示第t幀第i個關(guān)節(jié)點的二維坐標向量和估計置信度。E表示邊集合,它由兩個子集組成,其中第一個子集描述了每幀的身體關(guān)節(jié)點連接和手部關(guān)節(jié)點連接,其表示為:
Es={vtivtj|(i,j)∈H}
(2)
式中:H是自然連接的人類骨架和手部骨架關(guān)節(jié)點集合。第二個子集描述連續(xù)幀間相同關(guān)節(jié)點的連接,其表示為:
Ef={vtiv(t+1)i}
(3)
其中第二個子集中的所有邊代表骨架序列隨時間的軌跡。本文使用25個關(guān)節(jié)點表示身體骨架,使用42個關(guān)節(jié)點表示手部骨架,其可視化效果如圖2所示。
圖2 無向時空圖
在構(gòu)造無向時空圖后,我們使用時空圖卷積網(wǎng)絡(luò)提取人類操作的時空特征。在空間圖上,我們對每個節(jié)點進行采樣,選擇每個節(jié)點連接范圍為一的相鄰域集作為采樣函數(shù),并使用空間配置分區(qū)策略實現(xiàn)標簽映射,空間配置分區(qū)如圖3所示。人體各部分的運動大致可以劃分為向心運動和離心運動,因此,對于每個節(jié)點的相鄰集,根據(jù)與人體重心的距離將其劃分成三個子集:1) 根節(jié)點本身;2) 比根節(jié)點更靠近人體重心的相鄰節(jié)點;3) 比根節(jié)點更遠離人體重心的相鄰節(jié)點。具體的標簽映射表示如下:
圖3 空間配置分區(qū)
式中:lti(vtj)是單幀中節(jié)點vtj在節(jié)點vti的標簽圖;rj是節(jié)點vtj到人體重心的距離;ri是節(jié)點vti到人體重心的距離。在時域方面,擴展節(jié)點vti領(lǐng)域集如下:
B(vti)={vqj|d(vtj,vti)≤1,|q-t|≤Γ/2}
(5)
式中:d(vtj,vti)表示節(jié)點vti與節(jié)點vtj的距離;Γ控制時域采樣范圍;q為采樣時域。對于擴展的鄰域集,其標簽映射表示如下:
式中:lST(vqj)是節(jié)點vqj在采樣函數(shù)B(vti)的標簽映射。在給定時空圖的采樣函數(shù)和標簽映射后,時空圖卷積表示如下:
式中:j是分區(qū)策略的各個子集;Λ=A+I,A是人體骨架和手部骨架的鄰接矩陣,即人體骨架和手部骨架自然連接的拓撲結(jié)構(gòu),I是單位矩陣;fin為T幀人體骨架和手部骨架的關(guān)節(jié)點坐標序列;Wj為可學(xué)習(xí)參數(shù)。
圖4展示了視頻動作模塊網(wǎng)絡(luò)框架。在該模塊中,我們將骨架序列輸入到批處理歸一化層進行數(shù)據(jù)規(guī)范處理,然后使用時空圖卷積網(wǎng)絡(luò)進行人類操作的時空特征提取。時空圖卷積網(wǎng)絡(luò)由六層時空圖卷積組成,前面三層網(wǎng)絡(luò)輸出64個通道,后面三層網(wǎng)絡(luò)輸出128個通道。經(jīng)過時空圖卷積后,輸入的特征圖和輸出的特征圖大小一致。該網(wǎng)絡(luò)一共有6個時間卷積核大小,在每個時空圖卷積使用殘差連接。將第4層時間卷積層的步伐設(shè)置為2作為池化層,之后,對每個骨架序列輸出的128個通道特征進行全局池化成128維的向量。最后,我們將該向量放入SoftMax分類器。該模型采用隨機梯度下降學(xué)習(xí),學(xué)習(xí)率為0.1,在50個Epoch后,下降為0.01,在150個Epoch后下降為0.001。由于MPII烹飪活動數(shù)據(jù)集2.0中視頻長短差異大,我們將骨架序列劃分為長度為T幀的片段,在實驗中,T設(shè)置為300。在訓(xùn)練時空圖卷積時,對劃分的骨架序列給定相同的動作標簽,在測試時,將劃分的骨架序列的平均預(yù)測值作為動作預(yù)測的標準。
圖4 時空圖卷積網(wǎng)絡(luò)框架
表達完整的視頻語義,不僅需要準確地識別動作,而且還要識別演示者操作的物體。為了更加精確地識別演示者所操作的物體和排除遠離演示者物體信息的干擾,我們使用在COCO數(shù)據(jù)集[15]上經(jīng)過預(yù)訓(xùn)練的Mask R-CNN[16]獲取演示者的邊框,并設(shè)計一個比該邊框高1.4倍的感興趣區(qū)域(ROI)邊框,效果如圖5所示。在得到包含操作者的ROI框后,我們使用在COCO數(shù)據(jù)集上進行預(yù)訓(xùn)練的,并在MPII Cooking Activities 2.0[17]中進行微調(diào)的Mask R-CNN作為物體識別網(wǎng)絡(luò)。其中Mask R-CNN為兩階段網(wǎng)絡(luò)模型,第一階段使用Region Pro-posal Network(RPN)生成物體候選邊框,第二階段對這些候選邊框進行分類、定位,并找出掩模。
圖5 ROI邊框例子
在本文中,我們使用Mask R-CNN識別的物體的出現(xiàn)次數(shù)、平均置信度和平均位置作為物體特征,并將動作識別模塊所得到的動作特征與其進行拼接,最終分別輸入兩個LightGBM[18]分類器對主體物體和受體物體進行分類。為了更好地表達視頻的語義,我們使用動作三元組表示演示的操作,動作三元組的表示形式如下:
動作(主體物體,受體物體)
(8)
通過該動作三元組,機器人可以有效地區(qū)分出操作物體的邏輯,準確執(zhí)行從視頻中所學(xué)習(xí)到的動作指令,并完成相應(yīng)的模仿。
在這一部分,我們首先將介紹所使用的數(shù)據(jù)集,然后分別評估動作識別、操作物體分類的性能,最后展示所學(xué)習(xí)得到的動作指令效果。
我們選擇MPII Cooking Activities 2.0作為我們提出框架的數(shù)據(jù)集,該數(shù)據(jù)集在273個視頻中記錄了三十多種菜譜,總時長達到27 h。在本文中,我們挑選了7個動作和48種常見的物體進行研究,類別如表1所示。
表1 動作和物體類別
在本文中,由于只考慮單指令任務(wù),因此首先把視頻分割成視頻段,并選擇3 168個視頻段作為實驗的數(shù)據(jù)集,各個動作的視頻段的個數(shù)如表2所示。我們隨機選擇2 852(90%)個視頻段來訓(xùn)練時空圖卷積網(wǎng)絡(luò),剩下的316(10%)個視頻段作為本文提出的框架的性能評估。對于物體識別模塊,從訓(xùn)練集中隨機選取3 000幀進行人工標注,并將其用于Mask R-CNN微調(diào)。
表2 挑選的數(shù)據(jù)集統(tǒng)計
如表3所示,與基于RGB視頻的動作識別方法相比,例如CNN3D[19]、LSTM[20]和Two-Stream[5],本文所提出來的基于人體骨架的動作識別方法(ST-GCN)在精確度、準確率、召回率、F1值等表現(xiàn)得最好,這表明視頻的背景噪聲、光照變化、外觀變化對人體骨架的影響小。同時,增加手部骨架的時空圖卷積比僅有人體骨架的時空圖卷積網(wǎng)絡(luò)在準確率上高出5.37百分點,在精度、召回率、F1-score上表現(xiàn)更是高出7百分點至10百分點,這表明手部骨架信息對細微的操作動作識別具有一定的指導(dǎo)作用。在圖6中,我們使用混淆矩陣來顯示基于人體骨架和手部骨架動作識別方法的性能。
表3 動作識別效果對比(%)
圖6 混淆矩陣
由于物體分類包含主體物體和受體物體兩個部分,因此我們對這兩個部分的性能分別進行評估。為了體現(xiàn)物體分類的性能,我們使用了決策樹、隨機森林、Gradient Boosting、XGBoost[21]和LightGBM方法進行對比,分類性能如表4所示??梢钥闯?LightGBM取得了最優(yōu)的性能,正確識別主體對象和受體對象的準確率達到了78.07%。我們選擇最優(yōu)的物體分類方法,在該方法上我們測試了不同動作識別方法識別出來的動作對物體分類的影響。從表5中可以看出,隨著動作預(yù)測準確率的提高,物體分類的總準確率也在提高。除此之外,我們還分析了物體出現(xiàn)次數(shù)、物體平均置信度、物體平均位置和動作對物體分類的影響。從圖7可以看出,無論是主體物體分類還是受體物體分類,動作特征都具有重要的影響,這有效地驗證了動作識別準確率影響物體分類準確率,進一步影響動作指令學(xué)習(xí)的準確率。
表4 物體分類效果對比(%)
表5 不同動作模型在物體分類上的表現(xiàn)(%)
圖7 不同特征的重要性
在識別動作、主體物體和受體物體后,我們使用指令三元組來表示演示視頻操作的語義,其中本文所提出的框架準確率達到78.07%。表6展示了一些從視頻學(xué)習(xí)三元組的實例,其中不正確的指令由加粗字體標出。錯誤指令的產(chǎn)生可能是因為物體類別的錯誤識別,也可能是動作的錯誤識別,而動作的錯誤識別往往也導(dǎo)致主體物體和受體物體的錯誤分類。
表6 動作指令實例
在本文中,我們提出一個機器人技能學(xué)習(xí)框架,它使機器人可以從真實環(huán)境中的演示視頻中自動學(xué)習(xí)操作技能。該框架采用時空圖卷積網(wǎng)絡(luò)和Mask-RCNN分別識別演示視頻中的操作動作和物體,然后將動作特征和對象特征的融合并應(yīng)用兩個LightGBM分類器將物體分為主體物體和受體物體。之后,該框架使用動作指令三元組表示演示視頻的語義。實驗結(jié)果表明,我們的框架能夠很好地識別演示視頻的操作動作和物體,并有效地將演示視頻轉(zhuǎn)化為動作指令三元組。
在未來的工作中,我們將在以下方面擴展我們的框架:(1) 改進骨架序列無向時空圖,發(fā)掘人體關(guān)節(jié)點和手部關(guān)節(jié)點之間的潛在聯(lián)系,更好地提取演示者的操作特征;(2) 進一步擴大適用場景的范圍,例如工業(yè)操作等。