黃可思 陳俊洪 林大潤 王思涵 劉文印
(廣東工業大學計算機學院 廣東 廣州 510006)
隨著科技的迅速發展,機器人的智能化水平有了大幅度的提高,其功能也愈加復雜,例如可以通過深度攝像頭進行目標的識別與抓取[1]、可以利用激光雷達進行巡檢導航[2]等。然而現有的機器人大多是執行預先編寫好的程序,在遇到新的場景時需要重新進行編程,降低了部署效率。為了解決該問題,近些年來人們提出通過新的學習方式讓機器人學會新的技能。Akgun等[3]介紹了一種結合視頻關鍵幀和動覺示教的機器人技能學習方法,該方法一方面抽取操作視頻中的動作關鍵幀作為動作特征,另一方面通過讓操作者拽動機器人進行運動記錄操作軌跡作為運動特征,最后作者將兩種特征進行結合識別并最終應用到機器人身上。Garcia-Hernando等[4]提出了一種結合RGB-D視頻和3D手勢標注的方法來識別人類動作,該方法利用多傳感器對人體手勢進行識別,并取得不錯的效果。雖然以上方法都可以生成相應的技能指令,但是卻需要操作者進行操作或者昂貴的傳感器進行采集,限制了機器人的應用場景。對此,Yang等[5]建立了一個可以讓機器人觀看互聯網視頻從而學習動作的系統,該系統首先從視頻中提取物體和動作,然后根據語義語法規則建立語法樹,最終找出最接近視頻的操作指令。該方法雖然通過視覺輸入進行操作指令的組合,但是當識別出現錯誤時,其生成的操作指令也必定是錯的。
為了解決該問題,本文提出一種結合視覺和文本知識的多模態視頻轉譯技能方法框架。該框架包含兩個模塊,其中第一個模塊主要從視頻中提取語義信息,該模塊首先使用I3D網絡對視頻中操作者的動作進行識別,其次利用Mask R-CNN網絡和XGBoost分類器對物體進行識別分類,最后將識別所得的元語義組合成機器人指令。由于得到的指令是基于視覺輸入進行生成,所以當識別算法發生錯誤時,將產生不符合邏輯的指令。為了解決該問題,我們提出基于BERT-GRU模型的文本的操作指令學習模塊,該模塊首先在大型文本數據集Recipe1M+上進行預訓練,然后在生成指令上進行微調和測試,并最終輸出修改過的機器指令。通過在MPII Cooking 2數據集上進行測試,我們發現本文所提出的框架相比于單模態情況下的操作指令生成的框架具有較大的提升,有效地驗證了本文方法。
為了從視頻中提取人的動作并轉化成操作指令,Mici等[6]提出了一種自組織神經網絡模型,用于從RGB-D視頻中學習如何識別人和物體互動的動作。該模型由GrowWhen-Required(GWR)神經網絡的層次結構組成,可以學習動作和物體的原始表征,并以無監督的方式生成動作-物體的映射;Nguyen等[7]提出使用RNN和CNN模型直接將視頻轉譯成操作指令,他們首先利用CNN對視頻進行特征的提取,再使用具有編碼器-解碼器(encoder-decoder)結構的兩個RNN層來對視覺特征進行編解碼,最終根據指令模板順序生成操作指令;Welschehold等[8]為了讓機器人直接模仿操作動作,從RGBD視頻中分別提取出手和物體軌跡,并輸入網絡中進行訓練,最終實現讓機器人可以通過觀看人的演示進行開門等復雜的任務。在本文中,我們利用I3D網絡抽取動作特征并進行識別,再把動作特征與Mask R-CNN抽取的物體特征進行融合,并將融合特征輸入XGBoost分類器中計算得出操作物體,最后組合成操作指令。
機器人指令組合是機器人實現學習模仿的關鍵環節[9],在早期的研究中,Chomsky[10]提出一種類似于人類語言的極簡生成語法,該語法定義了描述人類動作所需要的最基本元素;基于Chomsky的研究,Yang等[11]定義了一組描述操作技能的語義上下文無關語法規則,該規則分別定義了動作與物體之間的關系,并使用樹形結構將這兩者關系進行組合,最終形成技能指令;與Yang等不同的是,Kjellstrom等[12]則提出一種基于上下文識別操作的物體和人類操作動作的方法,該方法能夠同時對手部動作進行分割和分類,并對動作中涉及的物體進行檢測和分類。實驗表明上下文信息可以有效地改善物體和動作的分類結果。然而以上方法只考慮了從視頻中提取元語義進行組合,忽略了語義組合上的邏輯關系。為了解決該問題,本文提出利用BERT-GRU文本模型來學習文本數據集中隱藏的操作指令,提高指令的生成準確率。
本文總體框架如圖1所示。可以看到,本文所提出的框架一共分為兩個模塊,其中:第一個模塊為機器人視覺轉譯指令模塊;第二個模塊為基于BERT-GRU模型的文本操作指令學習模塊。接下來我們將具體介紹每個模塊的實現方法。

圖1 基于視頻和文本的機器人技能指令生成框架
在提取動作特征之前,我們首先對輸入視頻進行預處理,具體來說,我們將視頻尺寸大小裁剪為224×224×3,并且為了降低計算代價,我們對輸入視頻進行下采樣處理,采樣率大小設置為5,即每五幅圖片中我們只選取中間的圖片進行計算,其余的圖片將直接舍棄。由于動作特征包含了時間和空間兩個維度信息,所以我們使用了具有雙流結構的I3D(Two-Stream Inflated 3D ConvNet)[13]網絡進行特征的提取。具體來說,對于空間流的特征提取,我們使用下采樣后的RGB視頻進行輸入,然后使用Ioffe等[14]所提出的改進Inception-V1模塊進行特征的抽取,其結構如圖2所示。

圖2 Inception-V1模型
可以看出,改進后的Inflated Inception模塊主要將原有的2D卷積核以及2D池化替換成3D卷積核和3D池化,其中3D卷積核是由2D卷積核在時間維度上復制N次所得,該做法使原來2D網絡參數可以直接應用到3D網絡上,降低了重新訓練所需要的時間和計算成本,提高識別效果。除此之外,為了保留更多的時間信息,改進后的Inflated Inception模塊將前兩個最大池化層維度替換為(1,2,2),將最后兩層均值池化層替換為(2,7,7)。與空間流處理方式相似,時間流使用相同的網絡配置,但其輸入則使用光流堆疊圖進行計算。在訓練過程中,兩個流的權重并不互相共享。
本文將I3D網絡在Kinetics數據集[13]上進行預訓練,然后再使用MPII Cooking 2數據集進行微調。在模型設置方面,我們使用隨機梯度下降作為網絡優化器,將網絡的學習率設置為0.1,網絡的權重衰減值設置為0.5,并使用Dropout方法防止模型過擬合。最終,我們將分別輸出2×1 024的動作特征以及動作分類結果進行進一步的使用。
對于操作物體識別,我們將下采樣后的RGB視頻輸入到Mask R-CNN模型[15]中進行物體特征的提取,其中Mask R-CNN模型分為兩個步驟,首先是通過Region Proposal Network(RPN)[16]生成大量的物體候選邊框,然后再將這些候選框通過卷積網絡輸出標簽和置信度。本文將Mask R-CNN在MS-COCO數據集[17]上進行預訓練,然后再將模型應用到MPII Cooking 2數據集上進行微調,最后輸出操作物體的特征。值得一提的是,為了讓操作物體與操作動作能有效地結合起來,我們將輸出的物體特征與動作特征進行拼接融合,并輸入到XGBoost分類器[18]中進行操作物體的分類,最終輸出操作物體的類別。
雖然從視頻中識別所得到的動作和物體可以組合成二元組指令給機器人進行操作,但是由于識別過程中可能發生動作和物體的誤識別,從而導致生成的指令信息無法讓機器人進行操作。對此,我們提出通過從文本數據集中進行指令的學習來提高指令生成的準確率,其模型如圖3所示。

圖3 文本學習模塊
我們首先使用了BERT模型進行訓練,其中BERT模型[19]采用了Multi-Headed Attention機制,該模型一共由12層Transformer Encoder[20]組成,每一層的隱藏層狀態數量為768,整個網絡參數規模達到1.1×108。并且為了進一步提高網絡的精度并獲取時序上的特征,我們提出在BERT最后一層FC層前接入兩層GRU[21]網絡。該做法使得由Multi-Headed Attention所提取的不同層級特征可以通過更新門和重置門進行融合,從而提高識別效果。本文將GRU的輸入節點數設置為768,與BERT所輸出的特征保持一致。最終通過特征的提取和分類,模型將分別輸出2個Onehot矩陣代表動作概率和物體概率,并根據概率最高的概率結果分別輸出最終的動作和物體組合成機器人指令給機器人執行。
本文首先把視頻輸出的二元組放入與文本訓練集相似的句式中進行填充,例如(action) the (object)、use (object) to (action)等,使得測試的輸入與訓練的輸入格式一致。緊接著我們將測試的短句輸入進BERT模型中進行編碼和提取特征,其中embedding是通過BERT預訓練模型fine-tune得到,在通過BERT模型訓練學習后,模型將輸出特征給GRU進行進一步的特征提取,最終分別輸出操作指令二元組給機器人執行。
MPII Cooking 2 數據集[22]:MPII Cooking 2數據集一共包含了273個做菜視頻,它是由不同的操作者從真實環境中進行采集,視頻幀數長達2 881 616幀,時長超過27 h。特別地,MPII Cooking 2 數據集中包含了有三十多種菜譜,但操作者并不限定于某種固定的順序來制作菜肴,這使得數據集包含的信息量更大,識別難度更大。在本文中,我們挑選了7種動作和48類常見物體進行識別,數據情況如表1所示。對于數據集的劃分,我們選擇了包含指定動作和物體的3 168段視頻作為數據集,其中我們隨機抽取2 852段視頻(90%)作為訓練集,316段視頻(10%)作為測試集。

表1 物體和動作類別數據
Recipe1M+數據集[23]:Recipe1M+數據集包含了超過一百萬種菜譜和一千三百萬幅食物圖片,菜譜種類涵蓋主食、配菜、小吃等,每種菜譜標記了標題、食材清單和制作菜肴的方法介紹。然而由于文本沒有對指令進行標記,所以我們基于Recipe1M+數據集制作了符合本框架的文本二元組數據集。具體來說,每條數據集將存儲為字典形式,如:{"text": "peel and thinly slice yukon gold and sweet potatoes", "tuple":[["peel", "potato"], ["slice", "potato"]]}。為了讓BERT-GRU模型能夠更好地學習指令,我們在數據集中添加了負樣本,即text文本中可能有不合理的地方,但二元組中仍輸出該句子正確含義的結果。最終我們選取了2 152條文本作為我們的數據集,其中1 506條(70%)數據作為訓練集進行訓練,剩下的646條(30%)作為測試集進行測試。表2統計了每個動作的分布情況。

表2 文本數據集分布情況
為了更好地對各種模型進行評估,我們采用了以下評測指標。
準確率(Accuracy):輸入樣本中預測正確的個數占總個數的大小,公式如下:
(1)
精確率(Precision):輸入樣本中預測正確的個數占正樣本的總個數大小,公式如下:
(2)
召回率(Recall):實際中正樣本中預測為正樣本的數量大小,公式如下:
(3)
F1值:兼顧了Precision和Recall的綜合評測指標:
(4)
為了證明I3D模型的長視頻分割效果比經典模型要好,本文通過與Stack Flow、CNN、CNN3D[24]、LSTM[25]和Two-Stream模型在相同的條件下進行對比實驗,得出各個模型的準確率、精確率、召回率和F1的評測結果如表3所示。

表3 動作識別結果(%)
可以看出I3D在準確率、精確率、召回率和F1的評測結果皆優于對比實驗中的其他模型。并且通過對比可知,使用雙流結構的網絡模型要比使用單流的網絡模型具有更高的識別率,這表明了雙流網絡可以從視頻中有效地提取時間和空間特征,提高了識別效果;而通過對比I3D網絡和Two-Stream網絡可知,通過增加時間維度后的3D卷積核可以從視頻中提取更多有效的特征,其準確率提高了1.91百分點,有效地驗證了3D卷積核的有效性。
對于物體識別,我們將Mask R-CNN所提取到的物體特征輸入到與I3D網絡所提取到的動作特征進行融合并輸入到XGBoost進行分類,為了對比不同分類算法的分類效果,我們采用了SVM、Decision Tree、Logistic Regression、Random Forest和Gradient Boosting這五個分類算法進行分類,分類結果如表4所示。

表4 操作物體識別效果(%)
可以看出,對比于其他五個分類算法,XGBoost的準確率為83.28%,相比于其他算法最大提高了32.02百分點的準確率,有效地驗證了本文算法的有效性。
為了提高視覺轉譯指令模塊的準確率,我們把視覺生成的二元組指令與隨機生成的句子模板進行結合輸入到文本指令學習模塊中,同樣地,我們用不同的分類器,如SVM、Decision Tree和BERT等模型做對比實驗,評測結果如表5所示。

表5 二元組指令生成效果(%)
可以看出,當融合了視覺跟文本特征后,二元組指令生成效果得到了提高,其最終準確率高達84.49%,比單個視覺模塊提高了3.79百分點,有效驗證了本文方法。從BERT和BERT-GRU實驗結果進行對比,我們發現當BERT模型接入GRU模型后,能夠更好地處理從BERT提取到的文本數據集的特征,從而提高了準確率。除此之外,從表5我們發現在使用SVM和Decision Tree算法后,二元組的精度相比于原來單視覺模塊的精度有所降低,造成該結果的原因主要分為兩點:一是這兩個模型對訓練數據過擬合,導致測試結果較差;二是由于文本學習模塊是根據語料庫知識進行推薦,其目的是對不符合邏輯的二元組進行替換,這導致了相關正確的指令可能會被錯誤替換,其中本文所提出的BERT+GRU算法錯誤替換了4.75%的測試結果,正確替換了8.54%測試結果。為了進一步地展示文本學習的有效性,我們對部分指令結果進行了可視化展示,效果如表6所示。

表6 動作指令組的可視化效果
本文的出發點是打造一個可以從視頻中學習指令的機器人系統,對此我們將本文所提出來的系統應用到一個人形機器人Baxter上進行驗證,效果如圖4所示。

圖4 機器人執行預測指令
實驗結果表明,機器人可以成功地執行本系統所生成的機器人指令,例如執行攪拌、倒油等動作,驗證了本文方法的有效性。
本文提出一個結合視覺和文本信息的機器人技能指令生成框架,該框架分別從視頻和文本提取元語義信息并進行融合,最后生成機器人指令給機器人執行。大量實驗表明,本文方法不僅可以從視頻和文本中生成機器人指令,還可以部署到真實的機器人上進行操作,驗證了本文方法的有效性。
在未來的工作中,我們將有兩個方面的拓展:(1) 使用更高級的語法規則將指令與指令之間進行鏈接,從而完成更加復雜的動作;(2) 考慮多人協作時的語法規則表示。