SMPL模型进阶
? ? ? SMPL模型是一種參數(shù)化人體模型,是馬普所提出的一種人體建模方法,該方法可以進(jìn)行任意的人體建模和動畫驅(qū)動。這種方法與傳統(tǒng)的LBS的最大的不同在于其提出的人體姿態(tài)影像體表形貌的方法,這種方法可以模擬人的肌肉在肢體運(yùn)動過程中的凸起和凹陷。因此可以避免人體在運(yùn)動過程中的表面失真,可以精準(zhǔn)的刻畫人的肌肉拉伸以及收縮運(yùn)動的形貌。?
? ? ?該方法中β和θ是其中的輸入?yún)?shù),其中β代表是個人體高矮胖瘦、頭身比等比例的10個參數(shù),θ是代表人體整體運(yùn)動位姿和24個關(guān)節(jié)相對角度的75個參數(shù)。
? ? ? ? β參數(shù)是ShapeBlendPose參數(shù),可以通過10個增量模板控制人體形狀變化:?具體而言:每個參數(shù)控制人體形態(tài)的變化可以通過動圖來刻畫:
? ? ? ?PoseBlendShape參數(shù)是給出肌肉的凸起與凹下去與人體姿態(tài),但是一般都優(yōu)化算法都不采用poseBlendShape參數(shù),因為PoseBlendShape項的懲罰能量的Landscape不利于非線性優(yōu)化算法的迭代優(yōu)化。
? ? ? ?但是如果要與Kinect給出的25個參數(shù)進(jìn)行匹配直接進(jìn)行是不夠的,因為兩者的關(guān)節(jié)節(jié)點是不匹配的。其中原因在于SMPL不但需要考慮基本的人體構(gòu)型,還需要考慮關(guān)節(jié)密度能否控制點的運(yùn)動,因此胸部并無明顯關(guān)節(jié)的情況下,增加了幾個關(guān)節(jié),而手上的關(guān)節(jié)數(shù)量較少。此外需要注意因為SMPL為了較好的人體模型表達(dá),因此較為精細(xì)的部位增加了較多的點數(shù),如手指部分,按照正常人面積應(yīng)該點數(shù)較少,但這對于SMPL模型不利。
? ? ? ? 按照doublefusion的思路可以用測地線距離(geodesic distance)為度量進(jìn)行簡化,簡化后的模型為了保證關(guān)節(jié)的正確性,需要額外加入關(guān)節(jié)附近的頂點索引,此外由于頂點的抽離,在weights、Jregressor、Shape_Tensor、Mean-vertices都應(yīng)該相應(yīng)變化,并重新利用Python等語言的腳本進(jìn)行處理寫成新的模型文件(.pkl或Json)。
? ? ?在實際的關(guān)節(jié)運(yùn)動中,由于是級聯(lián)的鉸鏈的運(yùn)動(Articulated),因此在CPU或者GPU中都需要進(jìn)行順序運(yùn)算,類似于Ai=Ai-1*Bi,從根節(jié)點出發(fā)到肢體關(guān)節(jié)點遍歷類似于比遍歷一棵特定深度的樹,而樹的深度決定順序運(yùn)算的最長鏈,樹深度越長并行性越差,按照SMPL原始定義從尾骨位置出發(fā)的三叉樹深度為9,在此種情況下GPU的單個warp最后的兩個if會出問題,樹的葉子節(jié)點深度分別為6,9,9, 5,5,而修改根節(jié)點為原來3號節(jié)點后,葉子節(jié)點的深度變?yōu)?,7,7,7,7,因此樹深度下降,樹平衡性增加,求解節(jié)點旋轉(zhuǎn)平移的并行性提高。有望提高節(jié)點RT計算速度以及提高后續(xù)雅各比矩陣的稀疏性。
Json的索引需要重新排布,
對照表:?
smpl? [0, 1, 2, 3,? 4,? ?5,? 6,? 7,? 8,? 9, 10, 11, 12, 13, 14, 15, 16, 17,? 18,? 19,? 20, 21, 22, 23]
father = [-100, 0, 0, 0, 1, 2, 3, 5, 6, 7, 8, 9, 9, 9, 12, 13, 14, 16, 17, 18, 19, 20, 21]
正確??? ? [-100, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 12, 13, 14, 16, 17, 18, 19, 20, 21]
smplx的對照表的前24位與smpl是一樣的。后面的待補(bǔ)充
[-1000, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 20, 25, 26, 20, 28, 29, 20, 31, 32, 20, 34, 35, 21, 37, 38, 21, 40, 41, 21, 43, 44, 21, 46, 47, 21, 49, 50, 15, 15, 15]
?
new:? [ 3? 7? 8? 1? 12 13? 0? 16 17? 2? 20? ?21? 4? ? 5? ? ?6? ?9? ?10? ?11? 14? ?15? 18? ?19? 22? 23 ]
之前寫錯成了:(21號重復(fù)了兩遍)?
new:? [ 3? 7? 8? 1? 12 13? 0? 16 17? 2? 20? ?21? 4? ? 5? ? ?6? ?9? ?10? ?11? 14? ?21? 18? ?19? 22? 23 ]
GMM的默認(rèn)的8個中心姿態(tài):
? ? ? ? ? ? ? ? ? ? ? ? ? ?更改后的關(guān)節(jié)點編號? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?原始的關(guān)節(jié)點編號? ?
? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Kinect關(guān)節(jié)點? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??SMPL模型關(guān)節(jié)點
? ? ? 我整理的kinect與SMPL模型關(guān)節(jié)點對應(yīng)關(guān)系如上圖和下表所示, 但并非嚴(yán)格的對應(yīng)關(guān)系。?
Table =?[ 0 ?16 ?12 1 ? 17 ? 13 ?18 ?14 ? 15 ?19 ? 20 ?4 ? 8 ? 9 ?10 ? 5 ?6 ? 7 ?11 ?;? %%?Kinect
? ? ? ? ? ? ? ?0 ? 1 ?2 ?3 ? 4 ? ?5 ? 7 ? ?8 ? 11 ?10 ? 12 17 ?16 ?18 ?20 ?19 ?21 23 ?24 ?]; %% SMPL
? ? ? ?此外從Kinect中人體姿態(tài)為T-pose時候可以直接推出人體的部分β參數(shù),如關(guān)于人體高矮、頭身比例、肢體相關(guān)的比例等,但是不能得到胖瘦相關(guān)的參數(shù),根據(jù)實際實驗可以得到前五個參數(shù),后面五個參數(shù)較難獲得,甚至?xí)驗闊o法獲得而取得較大數(shù)值,導(dǎo)致人體模型嚴(yán)重失真。?
? ? ? ? ? 為了對人體模型進(jìn)行約束,作者還給了人體姿態(tài)的GMM模型參數(shù),該模型由八個中心構(gòu)成。 其中最大概率的GMM的并非為人站成T-pose狀態(tài)下。 在利用GMM作為非線性優(yōu)化重建人體模型相關(guān)研究中,GMM一般以對數(shù)的形式出現(xiàn),但是此時需要注意的是目標(biāo)懲罰函數(shù)并非以原始的概率密度的對數(shù)作為優(yōu)化項,而是有一個constant項,甚至為了符合一般性,會先計算出貢獻(xiàn)最大的多分布中在特定姿態(tài)下概率密度最大的分布,然后乘以相應(yīng)的固定常數(shù),然后進(jìn)行優(yōu)化。
? ?然后實際中通過RGB回歸的人體二維點多半是coco25,分布如下
? ? ?很遺憾,兩者很大不同,比如coco25的臉部分布點很多,而smpl在脊柱上面分布點更加密集。另外兩者的Pelvis點和左右hip的定義也不同。?所以在做基于coco25的優(yōu)化smpl姿態(tài)方面脊柱是個難點。
總結(jié)
- 上一篇: turicreate 视频_人工智能图片
- 下一篇: created(created)