任你旋轉跳躍不停歇,也能完美呈現3D姿態估計_風聞
量子位-量子位官方账号-2020-03-08 13:11
魚羊 十三 發自 凹非寺
量子位 報道 | 公眾號 QbitAI

讓AI通過預測,捕捉你「左手畫龍,右手畫彩虹」的動作,對於AI理解人類行為至關重要。
想要做到這一點,人體運動數據不可或缺,但實際上,真實的3D運動數據恰恰是稀缺資源。
現在,來自馬克斯·普朗克智能系統研究所的一項研究,利用對抗學習框架,在缺少真實3D標籤的情況下,也能對實時視頻裏的人體運動,做出運動學上的合理預測。
就像這樣,奔跑、跳躍都能跟得上:

並且,相比前輩,這一名為VIBE的方法更懂人心,連胳膊要抬幾度,都計算得明明白白。
那麼,VIBE到底是如何做到的?
對抗學習框架
關鍵創新,在於採用了對抗學習框架。
一方面,利用時間(temporal)生成網絡,預估視頻序列中每個幀的SMPL人體模型參數。
注:SMPL,即A Skinned Multi-Person Linear Model,馬普所提出的一種人體建模方法。

具體來説,給定一個單人視頻作為輸入,使用預先訓練的CNN提取每個幀的特徵。
訓練雙向門控循環單元組成的時間編碼器,輸出包含過去和將來幀中信息的潛在變量。
然後,利用這些特徵對SMPL人體模型的參數進行迴歸。
另一方面,運動鑑別器能夠以SMPL格式訪問大量人體動作。
將生成器生成的樣本,和取自AMASS的樣本作為鑑別器的輸入,訓練其辨別真實動作和“偽”動作。
AMASS是一個大型開源3D運動捕捉數據集,包含40個小時的運動數據,344個主題,超過11000個動作。(項目地址見文末)
由於循環網絡在順序處理輸入時會更新其隱藏狀態,最終的隱藏狀態將保留該序列中信息的摘要。研究人員在鑑別器中引入了自注意力機制,來放大最終表示中最重要的幀的作用。
多項性能指標達SOTA
老規矩,先來看下數據集。
對於訓練數據集,混合使用了2D和3D數據集。PennAction和PoseTrack是唯一的ground-truth 2D視頻數據集,3D數據集方面採用的是MPI-INF3DHP和Human3.6M。除此之外,還利用AMASS進行對抗性訓練,獲得真實樣本。
在評估、對比方面,採用的數據集主要是3DPW、MPI-INF3DHP和Human3.6M。
那麼,在訓練後,在上述三個數據集上,採用最先進方法結果的比較,如表1所示:
**△**表1:在3DPW、MPI-INF-3DHP、H36M三個數據集上,各個最先進方法的結果比較
研究人員在這個三個數據集上,將VIBE和其他最先進的,基於幀和時間的模型做了性能比較。
可以不難看出,VIBE在3DPW和MPI-INF-3DHP這兩個數據集上的表現是比較好的,性能上超越了其他模型。
在H36M數據集上,也得到相對接近於目前最優值的結果。
除此之外,表1中還涉及了一個加速度誤差(acceleration error),從數值上可以看出,VIBE與基於幀的HMR方法相比,誤差是較小的,也就是結果更加平滑。
但與基於時間的模型相比,加速度誤差卻比較高,但是這裏卻存在一個問題,基於時間的模型,採用了較為“激進”的平滑處理方式,會使得快速運動視頻的準確性降低,如下圖所示。
**△**上:VIBE;下:基於時間的HMR。
VIBE模型能夠恢復正確的全局旋轉,這是前人提出的方法中存在的一個比較嚴重的問題,這也是在表1中MPJPE和PVE指標比較好的原因。
此外,實驗還證明,有和沒有運動鑑別器DM,對模型的性能也具有較大的影響,如表2所示。
**△**表2:運動鑑別器DM的消融實驗
還嘗試了幾種自注意力的配置,將VIBE方法與靜態合併方法進行了比較,結果如表3所示。
**△**表3:自注意力的消融實驗GitHub已開源,快速上手玩Demo
除了吊炸天的實驗效果,另一個令人激動的消息是,論文代碼已開源!
研究人員在實現過程中採用的是Pytorch,實驗設備需要同時支持 CPU 和 GPU 的推理,在RTX2080Ti上速度高達30幀/秒,以及是在3DPW 和 MPI-INF-3DHP 數據集上實現 SOTA 結果。

準備工作也很簡單,首先要克隆這個項目,只需輸入:
git clone https://github.com/mkocabas/VIBE.git
使用 pip 或 conda 安裝需求:
# pipbash install_pip.sh# condabash install_conda.sh
接下來在這個GitHub項目中,下載好數據集,可以運行:
bash prepare_data.sh
然後就可以運行已經準備好的demo代碼了(可以在任意視頻上運行VIBE):
# Run on a local videopython demo.py --vid_file sample_video.mp4 --output_folder output/ --display# Run on a YouTube videopython demo.py --vid_file https://www.youtube.com/watch?v=wPZP8Bwxplo --output_folder output/ --display
當然,如果你沒有上述實驗所需要的設備、環境,可以採用Google Colab。同樣,研究人員也為你準備好了Colab的“快速通道”,來運行demo,可戳下方鏈接:
https://colab.research.google.com/drive/1dFfwxZ52MN86FA6uFNypMEdFShd2euQA
那麼,趕緊上手來試試吧!