六個慣性傳感器和1個手機實現人體動作捕捉、定位與環境重建
本文則試圖打開慣性動作捕捉的「眼睛」。通過額外佩戴一個手機相機,我們的算法便有了「視覺」。它可以在捕獲人體運動的同時感知環境信息,進而實現對人體的精確定位。該項研究來自清華大學徐楓團隊,已被計算機圖形學領域國際頂級會議SIGGRAPH2023接收。
- 論文地址:https://arxiv.org/abs/2305.01599
- 項目主頁:https://xinyu-yi.github.io/EgoLocate/
- 開源代碼:https://github.com/Xinyu-Yi/EgoLocate
簡介
隨著計算機技術的發展,人體感知和環境感知已經成為現代智能應用中不可或缺的兩部分。人體感知技術通過捕捉人體運動和動作,可以實現人機交互、智能醫療、游戲等應用。而環境感知技術則通過重建場景模型,可以實現三維重建、場景分析和智能導航等應用。兩個任務相互依賴,然而國內外現有技術大多獨立地處理它們。研究團隊認為,人體運動和環境的組合感知對于人類與環境互動的場景非常重要。首先,人體和環境同時感知可以提高人類與環境互動的效率和安全性。例如,在自動駕駛汽車中,同時感知駕駛員的行為和周圍環境可以更好地保證駕駛的安全性和順暢性。其次,人體和環境同時感知可以實現更高級別的人機交互,例如,在虛擬現實和增強現實中,同時感知用戶的動作和周圍環境可以更好地實現沉浸式的體驗。因此,人體和環境同時感知可以為我們帶來更高效、更安全、更智能的人機交互和環境應用體驗。
基于此,清華大學徐楓團隊提出了僅使用6個慣性傳感器(IMU)和1個單目彩色相機的同時實時人體動作捕捉、定位和環境建圖技術(如圖1所示)。慣性動作捕捉(mocap)技術探索人體運動信號等「內部」信息,而同時定位與建圖(SLAM)技術主要依賴「外部」信息,即相機捕捉的環境。前者具有良好的穩定性,但由于沒有外部正確的參考,全局位置漂移在長時間運動中會累積;后者可以高精度地估計場景中的全局位置,但當環境信息不可靠時(例如沒有紋理或存在遮擋),就容易出現跟蹤丟失。
因此,本文有效將這兩種互補的技術(mocap和SLAM)結合起來。通過在多個關鍵算法上進行人體運動先驗和視覺跟蹤的融合,實現了魯棒和精確的人體定位和地圖重建。
圖1 本文提出同時人體動作捕捉與環境建圖技術
具體地,本研究將6個IMU穿戴在人的四肢、頭和后背上,單目彩色相機固定在頭部并向外拍攝。這種設計受到真實人類行為的啟發:當人類處于新環境中時,他們通過眼睛觀察環境并確定自己的位置,從而在場景中計劃他們的運動。
在我們的系統中,單目相機充當人類的眼睛,為本技術提供實時場景重建和自我定位的視覺信號,而IMU則測量人體四肢和頭部的運動。這套設置兼容現有VR設備,可利用VR頭顯中的相機和額外佩戴的IMU進行穩定無漂移的全身動捕和環境感知。整個系統首次實現了僅基于6個IMU和1個相機的同時人體動作捕捉和環境稀疏點重建,運行速度在CPU上達到60fps,并在精度上同時超過了兩個領域最先進的技術。該系統的實時示例如圖2和圖3所示。
圖2 在70米的復雜運動中,本系統精確跟蹤人體位置并捕捉人體動作,無明顯位置漂移。
圖3 本系統同時重建人體運動和場景稀疏點的實時示例。
方法介紹
圖4 方法總體流程
系統的任務是從6個IMU傳感器的朝向和加速度測量值和相機拍攝的彩色圖片中實時重建出人體運動、三維場景稀疏點云、并定位人在場景中的位置。我們設計了一個深度耦合的框架,以充分利用稀疏慣性動作捕捉和SLAM技術的互補優勢。在這個框架中,人體運動先驗與SLAM的多個關鍵組件相結合,SLAM的定位結果也回饋給人體運動捕捉。如圖4所示,根據功能,我們將系統劃分為四個模塊:慣性動作捕捉模塊(Inertial Motion Capture)、相機跟蹤模塊(Camera Tracking)、建圖和閉環檢測模塊(Mapping & Loop Closing)和人體運動更新模塊(Body Translation Updater)。以下分別介紹各個模塊。
慣性動作捕捉
慣性動作捕捉模塊從6個IMU測量值中估計人體姿態和運動。本模塊的設計基于我們之前的PIP[1]工作,但本工作中不再假設場景是一個平坦的地面,而是考慮在3D空間中捕捉自由人體運動。為此,本文對PIP的優化算法進行了適應性的修改。
具體地,本模塊首先通過多階段循環神經網絡從IMU測量值中預測人體關節旋轉、速度、腳和地面接觸概率。利用PIP提出的雙重PD控制器,求解人體關節最優控制角加速度和線加速度
。隨后,本模塊優化人體的位姿加速度
,使其在滿足接觸約束條件C下實現PD控制器給出的加速度:
其中J為關節雅可比矩陣,為與地面接觸的腳的線速度,約束C要求接觸地面的腳的速度要小(不發生滑動)。該二次規劃問題求解可以參考PIP[1]。通過姿態加速度積分從而獲得人體姿態和運動后,可獲得綁定在人體上的相機的位姿,用于后續模塊。
相機跟蹤
相機跟蹤模塊以慣性動作捕捉模塊給出的初始相機位姿和相機拍攝的彩色圖像作為輸入,利用圖像信息優化相機位姿,消除位置漂移。具體地,本模塊基于ORB-SLAM3[2]設計,首先提取圖像的ORB特征點,并和已經重建的稀疏地圖點(下文介紹)利用特征相似度進行特征匹配,得到匹配的2D-3D點對,進而通過優化重投影誤差的方法優化相機位姿。值得注意的是,僅優化重投影誤差可能會受錯誤匹配影響,導致相機位姿優化結果較差。因此,本文在相機跟蹤優化中融合人體運動先驗信息,以慣性動捕結果作為約束,限制重投影誤差的優化過程,以及時發現并排除錯誤的特征點-地圖點匹配。
記地圖點的世界坐標為,與之匹配的2D圖像特征點的像素坐標為
表示所有的匹配關系。用
表示優化前的初始相機位姿,則本模塊優化相機位姿R,t:
其中,為魯棒Huber核函數,
將三維旋轉映射到三維向量空間,
為透視投影運算,
動作捕捉旋轉和平移項的控制系數。該優化進行3次,每次都根據重投影誤差將2D-3D匹配分類成正確或錯誤,在下一次優化中只有正確匹配被使用,錯誤匹配則被刪除。通過動作捕捉約束提供的強有力的先驗知識,本算法可以更好地區分正確和錯誤匹配,從而提高相機跟蹤精度。解出相機位姿后,本模塊提取出正確匹配的地圖點對數量,并將其作為相機位姿的可信度。
建圖和閉環檢測
建圖和閉環檢測模塊利用關鍵幀重建稀疏地圖點并檢測人體是否到達曾去過的位置以修正累計誤差。在建圖過程中,我們使用動作捕捉約束的光束平差法(Bundle Adjustment,BA)同時優化稀疏地圖點位置和關鍵幀相機位姿,并引入地圖點置信度以動態平衡動作捕捉約束項和重投影誤差項的相對強弱關系,從而提高結果精度。當人體運動發生閉環時,進行動作捕捉輔助的位姿圖優化(Pose Graph Optimization)以修正閉環誤差。最終得到優化后的稀疏地圖點位置和關鍵幀位姿 ,用于下一幀算法運行。
具體地,本模塊首先根據地圖點的觀測情況計算其置信度,用于后續BA優化。如下圖5所示,根據觀測到地圖點的關鍵幀的位置,本模塊計算關鍵幀基線長度bi和觀測視角θi以確定地圖點i的置信度,其中k為控制系數。
圖5 (a)地圖點置信度計算。(b)相同的基線長度b1=b2,更大的觀測視角(藍色)可以更好地抵抗相機位姿的擾動,導致更小的地圖點位置誤差(e1<e2)。
隨后,同時優化最近20個關鍵幀相機位姿和它們觀測到的地圖點。其他看見這些地圖點的關鍵幀位姿則在優化中固定不變。記所有可優化的關鍵幀集合為K0,所有固定的關鍵幀集合為Kf,關鍵幀j測到的地圖點的集合記為Xj。記
表示需要優化的關鍵幀朝向和三維位置,
表示地圖點位置。則該動作捕捉約束的光束平差法優化定義為:
其中,
表示關鍵幀j的上一個關鍵幀,
為動作捕捉約束項的系數。該優化要求地圖點的重投影誤差要小,且每個關鍵幀的旋轉、相對位置要和動作捕捉的結果相近,其中地圖點置信度ci動態決定了動作捕捉約束項和地圖點重投影項之間的相對權重關系:對于未充分重建的區域,系統更傾向于相信動作捕捉的結果;反之,若一個區域被反復觀測到,系統則更相信視覺跟蹤。該優化的因子圖表示如下圖6所示。
圖6 動作捕捉約束的光束平差法優化因子圖表示。
當軌跡閉環被檢測到后,系統進行閉環優化。基于ORB-SLAM3[2],記位姿圖中的頂點集合為F,邊的集合為C。則動作捕捉約束的位姿圖優化定義為:
其中,為關鍵幀j的位姿,
為位姿圖優化之前關鍵幀i和j之間的相對位姿,
為動作捕捉獲得的相機位姿初值,
將位姿映射到六維向量空間,
為動作捕捉約束項的相對系數。該優化以動作捕捉先驗為指導,將閉環誤差分散到各個關鍵幀上。
人體運動更新
人體運動更新模塊利用相機跟蹤模塊優化后的相機位姿及可信度,更新動作捕捉模塊給出的人體全局位置。該模塊使用Kalman濾波器的預測-校正算法實現。其中,動作捕捉模塊提供恒定方差的人體運動加速度,可用于人體全局位置的預測(先驗分布);而相機跟蹤模塊給出相機位置觀測和置信度,用于人體全局位置的校正(后驗分布)。其中,相機位置觀測的協方差矩陣近似通過匹配的地圖點數量計算為如下的對角陣:
其中為小數避免除數為0。即相機跟蹤中成功匹配的地圖點數量越多,相機位姿觀測的方差越小。利用Kalman濾波算法,最終預測人體全局位置。
更詳細的方法介紹和公式推導請參考論文原文及附錄部分。
實驗
對比Mocap
本文方法主要解決了稀疏慣性動作捕捉(Mocap)中全局位置漂移的問題,因此選取主要測試指標為人體全局位置誤差。在TotalCapture和HPS兩個公開數據集上和SOTA mocap方法TransPose[3]、TIP[4]和PIP[1]的定量測試結果對比如下表1所示,定性測試結果對比如下圖7和圖8所示。可以看到本文方法在全局定位精度上大幅超過前人慣性動作捕捉方法(在TotalCapture和HPS上分別提升41%和38%),軌跡與真值的相似度最高。
表1 和慣性動作捕捉工作的全局位置誤差定量對比(單位:米)。TotalCapture數據集以動作進行分類,HPS數據集以場景進行分類。針對我們的工作,我們測試9次并匯報中位數和標準差。
圖7 和慣性動作捕捉工作的全局位置誤差定性對比。真值用綠色表示,不同方法預測結果用藍色表示。每個圖片的角落中展示了人體的運動軌跡和當前位置(橙色圓點)。
圖8 和慣性動作捕捉工作的全局位置誤差定性對比(視頻)。真值用綠色表示,本文方法為白色,前人工作的方法使用其他不同顏色(見圖例)。
對比SLAM
本文從定位精度和地圖重建精度兩個角度分別和SOTA SLAM工作ORB-SLAM3[2]的單目和單目慣性版本進行了對比。定位精度的定量對比結果如表2所示。地圖重建精度的定量對比結果如表3所示,定性對比結果如圖9所示。可以看到,本文方法相比SLAM大幅提高了系統魯棒性、定位精度和地圖重建精度。
表2 和SLAM工作的定位誤差定量對比(誤差單位:米)。M/MI分別表示ORB-SLAM3的單目/單目慣性版本,On/Off表示SLAM的實時和離線結果。由于SLAM經常跟蹤丟失,針對SLAM我們分別匯報了完整序列(Full)和成功跟蹤的幀(Tracked)上的平均定位誤差;本文方法不存在跟蹤丟失情況,因此我們匯報完整序列的結果。每個方法測試9次并匯報中位數和標準差。對于成功跟蹤的幀上的誤差,我們額外匯報了成功的百分比。如果一個方法失敗過多次,我們標記它為失敗(用“-”表示)。
表3 和SLAM工作的地圖重建誤差定量對比(誤差單位:米)。M/MI分別表示ORB-SLAM3的單目/單目慣性版本。針對三個不同場景(辦公室、室外、工廠),我們測試所有重建的3D地圖點距離場景表面幾何的平均誤差。每個方法測試9次并匯報中位數和標準差。如果一個方法失敗過多次,我們標記它為失敗(用“-”表示)。
圖9 和SLAM工作的地圖重建誤差定性對比。我們展示了不同方法重建的場景點,顏色表示每個點的誤差。
除此之外,本系統通過引入人體運動先驗,針對視覺跟蹤丟失的魯棒性大幅提高。在視覺特征較差時,本系統可以利用人體運動先驗持續跟蹤,而不會像其他SLAM系統一樣跟蹤丟失并重置或創建新地圖。如下圖10所示。
圖10 和SLAM工作的遮擋魯棒性比較。右上角展示了真值軌跡參考。由于SLAM初始化的隨機性,全局坐標系和時間戳沒有完全對齊。
關于更多的實驗結果,請參考論文原文、項目主頁及論文視頻。
總結
本文提出了第一個將慣性動作捕捉 (inertial mocap) 與 SLAM 相結合,實現實時同時進行人體動作捕捉、定位和建圖的工作。該系統足夠輕量,只需要人體穿戴稀疏的傳感器,包括 6 個慣性測量單元和一個手機相機。對于在線跟蹤,mocap 和 SLAM 通過約束優化和 Kalman 濾波技術進行融合,從而實現更準確的人體定位。對于后端優化,通過將人體運動先驗融入SLAM 中的光束平差優化和閉環優化,進一步減少定位和建圖誤差。
本研究旨在將人體感知與環境的感知融合在一起。盡管本工作主要關注定位方面,但我們相信,這項工作邁出了聯合運動捕捉和精細環境感知與重建的第一步。