鄭麗
(成都理工大學(xué)工程技術(shù)學(xué)院,四川樂山 614007)
人體運(yùn)動姿態(tài)的準(zhǔn)確分析與預(yù)測可以為運(yùn)動訓(xùn)練提供有效的數(shù)據(jù)支撐。通過獲取人體運(yùn)動的相關(guān)數(shù)據(jù),結(jié)合標(biāo)準(zhǔn)數(shù)據(jù)庫數(shù)據(jù)矯正運(yùn)動員動作的細(xì)節(jié),能夠達(dá)到提高運(yùn)動員運(yùn)動水平的作用。
隨著計(jì)算機(jī)科技的不斷進(jìn)步,人工智能技術(shù)逐漸成熟。深度神經(jīng)網(wǎng)絡(luò)(DNN)可以自動學(xué)習(xí)數(shù)據(jù)特征,從而發(fā)現(xiàn)稀疏與分布式的大數(shù)據(jù)特征[1],但最新卷積技術(shù)仍不能直接應(yīng)用于捕獲人體運(yùn)動數(shù)據(jù)。為了捕獲人體運(yùn)動數(shù)據(jù),卷積濾波器需要覆蓋人體關(guān)節(jié)的整個(gè)范圍,以便卷積僅在時(shí)間方向上發(fā)生。文中提出了一個(gè)具有瓶頸的全連接網(wǎng)絡(luò),該網(wǎng)絡(luò)可以在給定先前幀的情況下,學(xué)會預(yù)測未來的移動幀,并訓(xùn)練人類運(yùn)動的時(shí)間編碼器[2]。
為取得準(zhǔn)確的人體運(yùn)動數(shù)據(jù),文中基于IMU 核心傳感器、Arduino 嵌入式開發(fā)板為數(shù)據(jù)采集器,設(shè)計(jì)了一套人體運(yùn)動數(shù)據(jù)采集系統(tǒng)。DMP 是IMU 設(shè)備獨(dú)特的硬件功能,能夠從傳感器讀數(shù)計(jì)算四元數(shù)數(shù)據(jù)。IMU 直接從輔助傳感器獲取數(shù)據(jù),允許嵌入式處理器處理傳感器融合數(shù)據(jù),而無需系統(tǒng)應(yīng)用處理器的干預(yù)[3]。
文中基于處理語言開發(fā)了MPU6050 IMU 監(jiān)視程序。通過DMP 將加速度計(jì)與陀螺儀獲得的原始數(shù)據(jù)相融合,隨后從四元數(shù)表示中提取歐拉角信息以計(jì)算IMU 的偏航、俯仰、橫滾運(yùn)動[4]。該軟件首先從XBee Pro 中獲取方向值,再使用人體各個(gè)部位的長度和取向值計(jì)算IMU 的相對位置[5]。
文中測量人體關(guān)節(jié)運(yùn)動狀態(tài)的核心傳感器為兩組IMU 傳感器[6]。由于來自IMU 的加速度原始數(shù)據(jù)包含大量未過濾的噪聲,且在短時(shí)測量中容易因波動而出現(xiàn)顯著誤差。因此,關(guān)節(jié)運(yùn)動數(shù)據(jù)并非直接來自于對IMU 加速度的積分,文中基于人體關(guān)節(jié)的形狀,開發(fā)了基于人體運(yùn)動分析的IMU 相對運(yùn)動數(shù)據(jù)處理算法。
文中使用步進(jìn)電機(jī)保證IMU 數(shù)據(jù)的準(zhǔn)確性。其使用的步進(jìn)電機(jī)NEMA 23 YH57BYGH56-401A 規(guī)格如下:步進(jìn)角為1.8°,控制精度為±5%;額定電流為2.8 A;相電阻為0.9 Ω,控制精度為±10%;相電感為2.5 mH,控制精度為±10%;保持扭矩為1.2 N·m。
為了保持最小的軸徑向和軸向游隙,將小于450 g 的轉(zhuǎn)子盤連接到步進(jìn)電機(jī)。在驗(yàn)證IMU 測量的角速度數(shù)據(jù)時(shí),使用精度相對較高的步進(jìn)電機(jī)進(jìn)行的實(shí)驗(yàn),更加可控且可靠性高。將IMU 安裝在轉(zhuǎn)子盤上進(jìn)行測試,Arduino Uno R3 用于控制速度以及測試過程中步進(jìn)器移動的步數(shù)。
人體運(yùn)動分析設(shè)備被開發(fā),用于分析人體關(guān)節(jié)運(yùn)動,因此,需測試其在測量人體關(guān)節(jié)運(yùn)動中的準(zhǔn)確性。
將人體運(yùn)動分析裝置戴在肩膀上,兩個(gè)IMU 分別放在大臂和小臂上。在測試期間,受試者被要求放下手并反復(fù)彎曲肘部5 次;然后,將手伸直到平面中的原始位置。在對象移動的同時(shí),使用人體運(yùn)動分析設(shè)備收集運(yùn)動數(shù)據(jù),采用GoPro Hero 3 設(shè)備在2D 平面上記錄了有效照片分辨率為12 M、像素和幀速率為47 fps 的高分辨率視頻;最后,對視頻進(jìn)行后期處理。
使用運(yùn)動分析軟件MaxTRAQ 2D 進(jìn)行分析,以分析肘部的運(yùn)動。MaxTRAQ 2D 是基于視頻的運(yùn)動跟蹤軟件,可用于從標(biāo)準(zhǔn)AVI 視頻文件中提取運(yùn)動學(xué)特性。通過手動與自動跟蹤,用戶可以逐幀查看角度、點(diǎn)之間的距離等。
借助開發(fā)的Arduino Uno R3 程序,計(jì)算機(jī)可以從兩個(gè)IMU 接收偏航角、俯仰角和側(cè)傾角值,使用獲得的值實(shí)時(shí)模擬IMU 的方向,并設(shè)計(jì)軟件實(shí)時(shí)顯示[7]。在該軟件中,長方體用于表示IMU,其中長方體的不同側(cè)面具有不同的顏色,以便用戶可以區(qū)分方向。表1 顯示了與IMU 軸相對應(yīng)的側(cè)面顏色。
表1 顏色與IMU軸對應(yīng)關(guān)系
該軟件在程序中將IMU 表示為兩個(gè)立方體,并使用人體的肢體結(jié)構(gòu)顯示人體關(guān)節(jié)的運(yùn)動。左側(cè)的長方體用于模擬第一個(gè)IMU 的方向,右側(cè)的長方體用于模擬第二個(gè)IMU 的方向。偏航、俯仰和橫滾的數(shù)值顯示在軟件的上部,以便準(zhǔn)確跟蹤IMU 的方向。
為實(shí)現(xiàn)以2D 方式顯示IMU 與人體關(guān)節(jié)的運(yùn)動,對該軟件進(jìn)行了改進(jìn),以更準(zhǔn)確地表示人體各部位和關(guān)節(jié)在所有軸上的運(yùn)動。使用兩個(gè)IMU 的方向計(jì)算IMU 傳感器之間的相對運(yùn)動狀況。
第一節(jié)中基于嵌入式系統(tǒng)獲取準(zhǔn)確的速度與角速度等信息,是為了準(zhǔn)確識別運(yùn)動數(shù)據(jù)的規(guī)律。該節(jié)建立基于時(shí)間編碼的模型,以準(zhǔn)確識別人體運(yùn)動模式[8]。文中使用了識別模型的3 個(gè)變體:對稱編碼S-TE、時(shí)間尺度編碼C-TE 和結(jié)構(gòu)編碼H-TE[9]。
選取笛卡爾空間中的Mocap 骨架,即在時(shí)間t處的幀由ft=[fx,i,t,fy,i,t,fz,i,t]i=1:Njoints,其中Njoints為關(guān)節(jié)數(shù)目。
為了標(biāo)準(zhǔn)化模型,將關(guān)節(jié)角度轉(zhuǎn)換為標(biāo)準(zhǔn)化人體模型的笛卡爾坐標(biāo)。關(guān)節(jié)位置以坐標(biāo)系的原點(diǎn)為中心,在保留骨骼全局旋轉(zhuǎn)的同時(shí),忽略平移[10]。
在Δt個(gè)時(shí)間窗口內(nèi)可確定連接到矩陣Ft:(t+Δt-1)=[ft,ft+1,…,ft+Δt-1]中的數(shù)據(jù)集。該數(shù)據(jù)集由每個(gè)時(shí)間步長t∈[Δt,(T-Δt-1)]的輸入幀窗口F(t-Δt+1):t與輸出幀窗口F(t+1):(t+Δt)組成,其中T是采樣時(shí)間長度。
編碼-解碼框架用于計(jì)算高維輸入數(shù)據(jù)到低維圖形上的投影,并基于該投影預(yù)測輸出數(shù)據(jù)[11]。給高維輸入數(shù)據(jù)x∈?N經(jīng)自動編碼器進(jìn)行優(yōu)化,如式(1)所示。
其中,編碼器y=g(x)將輸入數(shù)據(jù)映射到低維空間y∈RM,N>M,而解碼器x^=f(y)映射回輸入空間x^ ∈RN,函數(shù)f和g用對稱的多層感知器表示[12]。
該系統(tǒng)中使用了一種替代方法,以捕獲人體運(yùn)動數(shù)據(jù)的時(shí)間相關(guān)性,而不是人體姿勢的靜態(tài)表示。令x∈RN為時(shí)間t的觀測值,時(shí)間編碼器的優(yōu)化函數(shù)如式(2)所示。
式中,編碼器y=g(X(t-Δt+1):t)將輸入數(shù)據(jù)映射到低維空間y∈RM,(N×Δt)>M,解碼器=f(y)∈RN×Δt用于映射回?cái)?shù)據(jù)空間[13]。
該應(yīng)用中,輸入和輸出矩陣的尺寸為3×Njoints×Δt,編碼器將輸入數(shù)據(jù)映射到低維空間y∈RM,(3×Njoints×Δt)>M,解碼器映射回?cái)?shù)據(jù)空間。
文中使用了3 種不同的時(shí)間編碼器結(jié)構(gòu):對稱編碼、時(shí)標(biāo)編碼和層次編碼,如圖1 所示。
圖1 編碼結(jié)構(gòu)
對稱結(jié)構(gòu)如圖1(a)所示,遵循自動編碼器原則[14]。由于解碼器是編碼器的鏡像版本,因此,可以將解碼器視為編碼器倒數(shù)的近似值,即對稱時(shí)間編碼器(S-TE)。
時(shí)間刻度編碼如圖1(b)所示。由于可以在不同的時(shí)間尺度上描述人體運(yùn)動,因此,可以將該屬性明確引入時(shí)間編碼器[15]。對于給定的窗口大小Δtw,卷積濾波器的大小為3×Njoints×Δtw,其中3 表示笛卡爾空間x、y和z中的3 個(gè)維度。輸入數(shù)據(jù)與不同大小的過濾器卷積,這些卷積層的輸出通過編碼器-解碼器的方式使用octree 結(jié)構(gòu)層級聯(lián),以便進(jìn)一步處理。
層次結(jié)構(gòu)編碼如圖1(c)所示。人體用樹狀結(jié)構(gòu)圖來表示,其中的節(jié)點(diǎn)由各個(gè)關(guān)節(jié)組成,分別與人體相應(yīng)肢體的節(jié)點(diǎn)相連。樹狀結(jié)構(gòu)由L層組成,其中每個(gè)層l∈[0,L-1] 由Nl個(gè)節(jié)點(diǎn)組成,每個(gè)父層l∈[1,L-1]連接到其子層k=l-1。第l層中的節(jié)點(diǎn)i和第k層中的節(jié)點(diǎn)j間鏈路為ξ{(l,i),(k,j)}。
將這些節(jié)點(diǎn)建模為單一前饋節(jié)點(diǎn),底層中的每個(gè)節(jié)點(diǎn)均從單個(gè)關(guān)節(jié)接收輸入[16],即N0=Njoints。隨后這些節(jié)點(diǎn)由代表肢體的父級連接,若關(guān)節(jié)i屬于肢體j,則ξ{(0,i),(1,j)}=1;否則,ξ{(0,i),(1,j)}=0,直到單個(gè)節(jié)點(diǎn)代表整個(gè)主體為止。單層用作臨時(shí)編碼器的輸入,該臨時(shí)編碼器與樹形圖同時(shí)訓(xùn)練。
文中開發(fā)了用于Arduino的程序,以從InvenSense MPU 6050 IMU 的DMP 中獲取信號,從而通過XBee Pro 無線串行通信將信號發(fā)送至計(jì)算機(jī)。嵌入式DMP 位于IMU 內(nèi),可從主機(jī)處理器分流運(yùn)動處理算法的計(jì)算。DMP 從加速度計(jì)和陀螺儀獲取數(shù)據(jù),并提供集成的運(yùn)動融合輸出。為了顯示、繪制XBee 接收到的數(shù)據(jù),基于處理語言開發(fā)了一個(gè)計(jì)算機(jī)程序,以使用串行通信端口讀取數(shù)據(jù)[17-18]。
將實(shí)驗(yàn)被測人員放置在4 個(gè)kinect 攝像頭之間,使用定制軟件記錄被測人員的軀干運(yùn)動。使用來自校準(zhǔn)步驟的變換矩陣,將4 個(gè)攝像機(jī)的每幀圖像拼接在一起,可以獲得一組3D 點(diǎn)云信息,通過比較每幀處的點(diǎn)云,可以從中精確推演出被測人員的動作變化。為了推演人員動作變化,使用Geomagic Studio 2012 計(jì)算創(chuàng)建的集合宏數(shù)據(jù)。
綜上所述,實(shí)驗(yàn)數(shù)據(jù)的記錄與推演步驟如下:加載從定制軟件導(dǎo)出的每個(gè)點(diǎn)云、構(gòu)建3D 網(wǎng)格、填充網(wǎng)格、使用網(wǎng)格診斷工具對網(wǎng)格進(jìn)行平滑處理。為保證對身體運(yùn)動的準(zhǔn)確分析,需對分析范圍進(jìn)行限制,即在初始圖像周圍放置一個(gè)邊界框,將volume 計(jì)算限制在人體軀干領(lǐng)域內(nèi)。
實(shí)驗(yàn)獲取的數(shù)據(jù)庫包含144個(gè)不同主體的2 235個(gè)記錄,這些主體執(zhí)行各種各樣的復(fù)雜動作。由于眾多記錄的采樣率為120 Hz,而其他記錄則以60 Hz 采樣,因此,將以前的試驗(yàn)采樣降至60 Hz。為了進(jìn)行評估,使用預(yù)處理過的H3.6M數(shù)據(jù)集,以100幀,1 660 ms的時(shí)間窗來訓(xùn)練當(dāng)前模型。
圖2 中給出了激發(fā)H-TE 中間層中多個(gè)單元的平均姿勢。為了降低噪聲,其僅在S 型單元的輸出超過0.8 時(shí)才考慮姿勢和網(wǎng)絡(luò)活動。
圖2 多個(gè)單元的平均姿勢
文中將整個(gè)動作序列進(jìn)行分類,而不是將單個(gè)運(yùn)動序列進(jìn)行分類。將3 種模型(S-TE、C-TE 和HTE)的預(yù)測能力與最近提出的ERD 分類預(yù)測算法進(jìn)行比較,如表2 所示。
表2 分類誤差比較
這些模型均經(jīng)過了H3.6M 數(shù)據(jù)集的記錄訓(xùn)練。將采樣頻率降低到25 Hz,并將關(guān)節(jié)角度轉(zhuǎn)換為指數(shù)圖。當(dāng)時(shí)間窗口大約涵蓋1 660 ms 時(shí),循環(huán)網(wǎng)絡(luò)將初始化為40 幀,相當(dāng)于1 600 ms。對于每個(gè)動作,均使用單獨(dú)的預(yù)訓(xùn)練遞歸模型。
盡管LSTM3L 在初始預(yù)測方面的表現(xiàn)優(yōu)于文中的某些模型,但時(shí)間編碼器C-TE 在160 ms 或更長時(shí)間的預(yù)測中表現(xiàn)出了更優(yōu)的性能。因?yàn)槿梭w動作是一個(gè)復(fù)雜的非平穩(wěn)動作,所以循環(huán)網(wǎng)絡(luò)難以做出短期預(yù)測,該模型卻能夠推斷未來的預(yù)測框架。在大多數(shù)預(yù)測中,對稱時(shí)間編碼器S-TE 和卷積時(shí)間編碼器CI-TE 優(yōu)于分層時(shí)間編碼器H-TE,這表明結(jié)構(gòu)先驗(yàn)對運(yùn)動預(yù)測是有益的。通過混合編碼的方式減少了對特定動作微調(diào)的預(yù)測誤差,且能對原始訓(xùn)練數(shù)據(jù)中未包含的動作進(jìn)行有效的分類與預(yù)測。
文中在采集人體運(yùn)動數(shù)據(jù)的基礎(chǔ)上,提出了一種用于人類運(yùn)動特征學(xué)習(xí)的時(shí)間編碼器方案,既可以用作生成模型又可以用作特征提??;并提出了3 種解決此問題的方法。由于該結(jié)構(gòu)可以直接在特征上進(jìn)行動作分類而無需進(jìn)行微調(diào),提高了對人體運(yùn)動特征分析的準(zhǔn)確性和魯棒性。
文中系統(tǒng)基于高性能的GPU 運(yùn)算,如何將該系統(tǒng)移植到普通設(shè)備,并保證系統(tǒng)的穩(wěn)定運(yùn)行將是下一步的工作重點(diǎn)。