沈睿婷,張 雷
(北京建筑大學 電氣與信息工程學院,北京 100044)
模仿學習(Imitation learning)旨在模仿給定任務中的人類行為。通過學習觀察和行動之間的映射,對代理(學習機器)進行訓練,以從演示中執(zhí)行任務[1]。隨著智慧城市,人機共居等概念的出現(xiàn),仿人機器人的模仿學習成為了研究熱點。
仿人機器人對于人體動作的模仿學習過程主要可以分為以下三個階段:
1)觀察和記錄人體的運動,獲取人體運動數(shù)據(jù);
2)將采集到的人體運動數(shù)據(jù)轉(zhuǎn)換為便于仿人機器人進行動作模仿的數(shù)據(jù)格式;
3)最后仿人機器人根據(jù)觀察到的動作數(shù)據(jù)進行動作模仿。
模仿學習在機器人領域很多應用。Kim等人[2]提出了一種仿人機器人運動生成方法,使用運動捕捉系統(tǒng)獲得的數(shù)據(jù),提出一種優(yōu)化策略來解決逆運動學問題。Gams等[3,4]提出一種基于RGB-D相機捕獲的人體運動數(shù)據(jù)進行在線運動模仿的方法。Koenemann等人[5]提出一個仿人機器人實時模仿人體復雜全身運動的系統(tǒng)。Inamura等[6]提出使用隱馬爾可夫模型(HMM)對人類運動原語進行建模。Ijspeert等人[7~9]提出使用動態(tài)運動基元(DMPs)對人體運動建模的方法。Mina等人[10]提出了一種基于實時反運動學的實時人體仿真系統(tǒng),將人體上肢運動安全平滑地映射到機器人的關節(jié)上。Garam[11]等人提出了一個包含基于主成分分析(PCA)的進化過程的模仿學習框架。
針對仿人機器人對人體動作的模仿已經(jīng)開展了大量研究,并且積累了一些研究成果,但這些研究采用的方法大多數(shù)都是離線地、一次性地對人體動作進行采集和學習,不能實現(xiàn)在仿人機器人持續(xù)動作觀察和學習。為實現(xiàn)仿人機器人的連續(xù)模仿學習,本文提出了仿人機器人動作模仿框架如圖1所示。
圖1 仿人機器人動作模仿框架
1)將觀察到的人體動作骨骼點位置數(shù)據(jù)轉(zhuǎn)換成方便仿人機器人計算的關節(jié)角度序列,并計算得到角速度序列和角加速度序列,組成完整的人體動作數(shù)據(jù),以供仿人機器人模仿學習。
2)應用高斯混合隱馬爾可夫模型(Gaussian-HMM)對動作數(shù)據(jù)進行建模,生成動作模型。
3)仿人機器人可以通過對已訓練的模型進行學習,生成適合機器人自身的動作。同時訓練完成的模型還可以對新出現(xiàn)的動作進行判斷,判斷新動作是否已學習的動作。利用此框架可以實現(xiàn)仿人機器人對人體動作在線連續(xù)地學習。
動作模型建模是仿人機器人動作模仿框架中較為重要地部分,以此為基礎可以進行動作生成,故本文主要對人體動作數(shù)據(jù)匹配與動作模型建模方法進行介紹。本文具體結(jié)構(gòu)如下:首先,在第2節(jié)對仿人機器人和人體動作數(shù)據(jù)進行匹配計算,在第3節(jié)介紹基于HMM的建模與識別的方法,第4節(jié)將介紹相關實驗結(jié)果。
建模之前需要將采集到的人體運動數(shù)據(jù)轉(zhuǎn)換為便于仿人機器人進行動作模仿的數(shù)據(jù)格式,需要將坐標點轉(zhuǎn)換成為仿人機器人相關關節(jié)角度,角速度和角加速度等,這個過程就是人體動作數(shù)據(jù)匹配計算的過程。
本文將用MSR Action3D數(shù)據(jù)集來進行與NAO機器人的人體數(shù)據(jù)的匹配計算,MSR Action3D數(shù)據(jù)集是一個由深度相機捕獲人體動作的深度圖像序列數(shù)據(jù)集[12]該數(shù)據(jù)集共包含高揮手臂、畫“√”、網(wǎng)球發(fā)球等20種動作類型,如圖2所示。
圖2 MSR-Action數(shù)據(jù)集中的動作
MSR Action3D數(shù)據(jù)集中包含了人體20個骨骼點在笛卡爾坐標系下的坐標和置信度。人體骨骼點對應如圖3所示,圖中坐標軸分別代表笛卡爾空間坐標系下的X、Y、Z軸。
本文利用骨骼點坐標信息得到對應的關節(jié)向量,再利用計算關節(jié)向量的夾角得到對應的關節(jié)角度。圖3中標號相對應的關節(jié)點以及關節(jié)的自由度相對應的關節(jié)點信息如表1所示。
表1 各關節(jié)自由度對應關節(jié)點信息
圖3 人體骨骼點位置
以左肩部的翻滾角(LShoulderRoll)為例。肩部的翻滾角(LShoulderRoll)可以用肩部(ShoulderL)和手肘(ElbowL)形成的關節(jié)向量與肩部和肩部中點(ShoulderCenter)形成的關節(jié)向量的夾角求出,分別用p1,p8,p3,具體位置如圖4所示。
LShoulderRoll是根據(jù)坐標系繞Z軸左右旋轉(zhuǎn)得到的角度(坐標系的建立如圖4所示),p1p′8和p1p′8′為兩個左臂可能旋轉(zhuǎn)到的位置,所以LShoulderRoll的自由度的旋轉(zhuǎn)角度相當于求解p1p8與p1p′8或p1p8與p1p′8′之間的夾角。為了的到這個夾角可以用p1p3與p1p′8或p1p3與p1p′8′之間的夾角減去p1p8與p1p3之間的夾角得到。由于NAO機器人的手臂初始位置是水平的(圖4),所以p1p8與p1p3之間的夾角為90°。再根據(jù)繞旋轉(zhuǎn)軸的方向,逆時針方向旋轉(zhuǎn)為正,順時針方向旋轉(zhuǎn)為負,添加正負號校正旋轉(zhuǎn)角度。
圖4 NAO機器人初始位置及左臂翻滾角示意圖
綜上,左手臂肩部翻滾角(LShoulderRoll)可以定義為:
同理可得右手臂肩部翻滾角(RShoulderRoll)可以定義為:
此處p2,p3,p9分別表示骨骼點ShoulderR,Shoulder-Center,ElbowR。
剩下的關節(jié)角度都與ShoulderRoll的計算類似,可以根據(jù)選取向量的方向,取正負或者π的倍數(shù)來校正。
因為機器人機械結(jié)構(gòu)的限制,各個自由度的旋轉(zhuǎn)角度需要滿足機器人關節(jié)角度約束。所以根據(jù)NAO機器人(如表2所示)的關節(jié)角度約束,對上述方法匹配計算的的旋轉(zhuǎn)角度進行處理優(yōu)化。
表2 各關節(jié)自由度對應關節(jié)角度約束
經(jīng)過旋轉(zhuǎn)角度的數(shù)據(jù)優(yōu)化處理,可以規(guī)避一些不合理的動作。如圖5所示,圖5為旋轉(zhuǎn)角度優(yōu)化處理前后對比圖,上圖為優(yōu)化處理前數(shù)據(jù)圖像,下圖為優(yōu)化處理后,數(shù)據(jù)優(yōu)化處理去除了一些較為極端的角度。
圖5 旋轉(zhuǎn)角度優(yōu)化處理前后對比圖
通過以上方法就能得到全身各個自由度的旋轉(zhuǎn)角度。將觀察到的人體動作過程中關節(jié)位置的變化數(shù)據(jù),轉(zhuǎn)化為關節(jié)角度隨時間變化的序列數(shù)據(jù),根據(jù)角度變化序列計算出角速度變化序列和角加速度變化序列。
由于動作序列采集過程中,每一幀的時間間隔非常短,因此將角速度的計算公式定義為:
其中,st為所求的角速度,T為角度序列的長度,θt為t時刻的關節(jié)角度。根據(jù)角速度,可以求得角加速度At為:
并將這些序列數(shù)據(jù)組合成為動作數(shù)據(jù)。然后,應用高斯隱馬爾可夫模型對動作數(shù)據(jù)進行建模,生成動作模型。
隱馬爾可夫模型(Hidden Markov Model,HMM)是一種隨機概率模型,在上個世紀六十年代后期由Leonard等人提出,并在七十年代中期開始用于語音識別[13]。
HMM模型(圖6)包含五個重要的概念:觀測序列集合s={o1,...,oM};隱藏狀態(tài)集合Q={q1,...,qN};隱藏狀態(tài)初始概率分布π={πi}1;狀態(tài)轉(zhuǎn)移概率矩陣A={aij},aij表示從第i個狀態(tài)轉(zhuǎn)移到第j個狀態(tài)的概率;以及輸出概率矩陣B={bij},其中,bij表示第i個狀態(tài)輸出第j個標簽的概率??梢詫⒁粋€HMM模型λ定義為:λ={A,B,π}。本文中人體動作數(shù)據(jù)是觀察序列S,將人體動作數(shù)據(jù)按照狀態(tài)數(shù)分為一小段的動作數(shù)據(jù)是隱藏狀態(tài)Q。
圖6 HMM模型
隱馬爾可夫模型根據(jù)離散的輸出和連續(xù)的輸出可以分為離散隱馬爾可夫模型(DHMM)和連續(xù)隱馬爾可夫模型(CHMM),如圖7所示。因動作輸出是隨時間變化連續(xù)的輸出,故本文利用高斯隱馬爾可夫模型(Gaussian-HMM)進行建模。假設輸出概率密度函數(shù)符合高斯分布,則輸出概率為:
圖7 連續(xù)隱馬爾可夫模型
若輸出概率密度函數(shù)符合高斯混合模型分布,則輸出概率為:
動作建模的過程相當于求解模型參數(shù)。已知觀測序列求解調(diào)整模型參數(shù),即已知觀測序列,求解模型的參數(shù)(隱藏狀態(tài)初始概率分布Π,狀態(tài)轉(zhuǎn)移矩陣A,輸出概率矩陣B),使得此情況下觀測序列概率最大,使用基于EM算法的鮑姆-韋爾奇算法(Baum-Welch algorithm)可以求解HMM的模型參數(shù),相當于完成建模的過程。
鮑姆-韋爾奇算法(Baum-Welch algorithm)[14]是EM算法(也稱為前向-后向算法)的變形和延伸,可以用來估計HMM的模型參數(shù)。在HMM中,為了使關聯(lián)算法易于處理,對觀測序列S和隱藏狀態(tài)Q這些隨機變量有兩個條件獨立性假設:1)第i個狀態(tài)只與第i-1個狀態(tài)有關,與之前的狀態(tài)無關;2)第i個觀測只與第i個狀態(tài)有關,與其他變量無關。
鮑姆-韋爾奇算法將分為兩步估計模型參數(shù)。
E Step:
(1)遞歸方法計算前向概率(Forward Probability)ai(t)和后向概率(Backward Probability)βi(t)。
(2)計算狀態(tài)占有概率(State Occupation Probability)γi(t)和γij(t)。
M Step:根據(jù)狀態(tài)占有概率重新計算HMM模型參數(shù)。
重復進行以上兩個步驟,直到算法收斂,得到估計的HMM模型參數(shù)。具體計算流程如圖8所示。
圖8 鮑姆-韋爾奇算法計算流程
利用鮑姆-韋爾奇算法對第2節(jié)得到的動作數(shù)據(jù)進行建模得到HMM模型參數(shù)如圖9所示,分別包括了隱藏狀態(tài)初始概率分布、狀態(tài)轉(zhuǎn)移概率矩陣以及輸出概率密度函數(shù)的均值與方差。
圖9 計算得到HMM模型參數(shù)
通過以上方法可以對不同的動作數(shù)據(jù)進行建模,為驗證建模的有效性,判斷新觀察到的動作屬于哪類已經(jīng)建模的動作,這些屬于動作識別問題。為了對新觀察到的動作進行識別,首先需要將新觀察到的運動轉(zhuǎn)換為可被建模的動作數(shù)據(jù)O,然后求出每個已建立的動作模型生成該動作序列的似然值P(O丨Mi),其中Mi是已建立的動作模型,Mi∈{M1,M2,M3,...,Mn},P(O丨Mi)的值可由上一節(jié)中提到的鮑姆-韋爾奇算法計算得到。則通過判斷似然值P(O丨Mi)的大小可以得到識別結(jié)果,新觀察到的動作屬于似然值P(O丨Mi)最大的動作模型。
當動作數(shù)據(jù)維度增加時,動作識別結(jié)果的似然值會降低,導致動作識別失敗,改變隱藏狀態(tài)的個數(shù)的數(shù)值可以提高動作識別結(jié)果。當似然值P(O丨Mi)中最大的值與第二大的值相差越大,則動作識別結(jié)果越好??梢砸胍韵聹蕜t:
其中,max{P(O丨Mj)}表示在已經(jīng)建立的動作模型中,對觀察到動作序列的最大似然值,second{P(O丨Mk)}表示對觀察到動作序列的第二大似然值。則R的絕對值越大,表明似然值P(O丨Mi)中最大的值與第二大的值相差越大,則動作識別結(jié)果越好??衫肦的值,對不同狀態(tài)數(shù)下得出的模型識別效果進行比較,得到最優(yōu)的狀態(tài)數(shù)。
實驗分為了三個部分,驗證向量方法計算關節(jié)自由度旋轉(zhuǎn)角度的正確性實驗,驗證基于Gaussian-HMM模型的動作建模和動作識別方法的有效性實驗以及HMM模型狀態(tài)數(shù)對動作模型識別結(jié)果影響實驗。
為了驗證向量方法計算關節(jié)自由度旋轉(zhuǎn)角度的正確性,利用NAO機器人的仿真平臺輸入計算得出的旋轉(zhuǎn)角度與原數(shù)據(jù)集進行比較得到(如圖10所示):可以發(fā)現(xiàn)同一時刻,仿真得到的圖像與原數(shù)據(jù)集動作基本一致,從而驗證本文所提出的向量計算得到的旋轉(zhuǎn)角度是正確的。
圖10 向量方法計算旋轉(zhuǎn)角度正確性驗證
為了驗證基于Gaussian-HMM模型的動作建模和動作識別方法的有效性,選取MSR Action3D數(shù)據(jù)集中的數(shù)據(jù)集較為完整精確的動作1(高揮右臂)、動作2(水平揮右臂)、動作6(右臂高拋動作)、動作7(右臂畫“×”)、動作8(右臂畫“√”),這5個動作進行動作識別實驗。在每個動作的多條序列中,隨機選取3個序列組成測試集,其余序列組成訓練集。
首先用Gaussian-HMM模型對5個動作的訓練集中右臂的動作數(shù)據(jù)進行建模。建模完成后用測試集進行動作識別,測試集包括了5個動作數(shù)據(jù)集中隨機的一個序列。計算測試集中的動作序列與已建立的模型的似然值,通過似然值的比較得出動作識別的結(jié)果,如表3所示,M1-M5代表五個訓練完成的模型,a1-a5代表測試集中的五個動作數(shù)據(jù),max代表計算測試集中的動作序列與已建立的模型的似然值最大的模型。
表3 動作識別實驗結(jié)果
似然值越高說明序列與模型越匹配,從實驗結(jié)果可以看到,對于每條動作序列,與其匹配的模型生成該序列的似然值最高。對于每個已經(jīng)建立的模型,生成與其匹配的那條序列的似然值最高。5條動作序列和建立的5個模型可以成功實現(xiàn)互相識別,實驗結(jié)果驗證了動作建模和識別方法的有效性。
增加動作數(shù)據(jù),用Gaussian-HMM模型對5個動作的訓練集中左右臂的動作數(shù)據(jù)進行建模,計算測試集中的動作序列與已建立的模型的似然值,結(jié)果如表4所示,M1-M5代表五個訓練完成的模型,a1-a5代表測試集中的五個動作數(shù)據(jù),max代表計算測試集中的動作序列與已建立的模型的似然值最大的模型。
表4 增加動作數(shù)據(jù)后模型動作識別實驗結(jié)果
由表4可得增加動作數(shù)據(jù),而不改變HMM模型隱藏狀態(tài)數(shù),動作識別會出現(xiàn)錯誤。改變狀態(tài)數(shù),并計算R值,可以得到隨著狀態(tài)數(shù)改變,動作識別效果改變情況,如圖11所示。
由圖11可得,R的絕對值隨狀態(tài)數(shù)變大而變大,到達一定值后達到頂點,動作識別效果最好,由此可得出HMM模型最優(yōu)的狀態(tài)數(shù)。
圖11 R值隨狀態(tài)數(shù)變化曲線
本文通過向量方法求解動作數(shù)據(jù),并通過Baum-Welch算法對Gaussian-HMM模型參數(shù)進行估計,從而對動作數(shù)據(jù)建模。再用新觀察到的動作序列與已建模的模型的似然值比較,驗證基于Gaussian-HMM動作建模和識別方法的有效性。