---
# System prepended metadata

title: GLAMR、HybrIK、PoseFormerV2比較：以伏地挺身為主

---

## 測試說明

這次的測試主要是比較GLAMR、HybrIK、PoseFormerV2這三者在「三維姿態估測」方面的差異。延續前幾次測試時的主題，這次同樣以幾個從不同角度進行拍攝的伏地挺身示範影片，對它們在GLAMR的輸出結果進行分析。

另外，由於伏地挺身屬於不會位移的動作，後續也有用到跑步、溜冰等在空間進行移動的動作，對GLAMR的其它功能進行測試。

## 輸出結果（伏地挺身）

### 1. 正面視角

#### GLAMR

{%youtube u4_BCfslKVs %}

#### HybrIK

![001-1](https://hackmd.io/_uploads/By29GgtRp.gif)
![001-2](https://hackmd.io/_uploads/r13oMxKRa.gif)

#### PoseFormerV2

![push-up_001](https://hackmd.io/_uploads/Bkx3ouWq3T.gif)

#### 比較

以正面視角進行拍攝時，人物的下半身會頻繁地被軀幹遮住，而在輸出結果中，可以看到PoseFormerV2並不能很好地繪製出腰部以下的身體姿態（不自然的膝部彎曲），而且後半還有出現「手臂合併」的錯誤辨識（或許是動作變化太快所致），這兩點可以說是有待克服的問題。

相較於PoseFormerV2錯誤率較高的輸出結果，HybrIK並沒有手臂合併的情形發生，而腰部以下的姿態估測雖仍存在一些誤差，但大多時候能估測出筆直的身體（PoseFormerV2總是顯示為膝部彎曲）。此外，HybrIK似乎有著較小的延遲，這也使其在偵測快速動作時，比起PoseFormerV2更具優勢。

而GLAMR以HybrIK運行所得的結果（影片左側）準確度相當高，幾乎沒有錯誤。不過其在轉換到GLAMR自身的模型（影片中間）後出現了手臂移位、全身異常旋轉等問題。而在測試平面（影片右側）中，也能看到模型以直立的方式呈現，似乎有將模型預設為直立的傾向。基於上述結果，推測GLAMR對於非直立動作的估測能力較弱。

### 2. 側面視角

#### GLAMR

{%youtube 5CToTBsH3YE %}

#### HybrIK

![002-1](https://hackmd.io/_uploads/HJmYXeK0a.gif)
![002-2](https://hackmd.io/_uploads/r1YKXgFR6.gif)


#### PoseFormerV2

![push-up_002](https://hackmd.io/_uploads/Hy_-qbchp.gif)

#### 比較

在側面視角中，人物僅有右側軀體被遮蔽，繪製出的三維身體姿態與實際影像十分相近，說明了PoseFormerV2在輕微遮蔽的情況下仍能預判身體姿態的可能位置。而對於伏地挺身計數器來說，這一點可以幫助計數器精進為「雙邊動作評估」——同時對左右兩側的軀體進行動作估測，藉以更準確地進行計數和動作提示。

而HybrIK對於被遮蔽的右側軀體，則輸出了較不穩定的估測結果，雖然HybrIK比起PoseFormerV2多輸出了手掌、腳掌的具體樣貌，但右手、右腳時常出現錯誤的移位，相比PoseFormerV2的輸出要來得遜色。

GLAMR相較其於正面視角的表現，在測試平面似乎有更好的結果。或許是整體受遮蔽的部分較少，GLAMR這次正確地讓模型臥於平面。不過GLAMR相較另外兩者，模型異常位移的情況更為頻繁，穩定性較差。

### 3. 介於 1 和 2 之間的視角

#### GLAMR

{%youtube JSiJv5nMqfI %}

#### HybrIK（由於HackMD的1MB大小限制，這邊僅以圖片表示）

![image-000001](https://hackmd.io/_uploads/BkaGvFqCT.jpg)
![image-000001](https://hackmd.io/_uploads/HJrrPKqAT.jpg)
（圖一：起始狀態）

![image-000018](https://hackmd.io/_uploads/S1afvKc0a.jpg)
![image-000018](https://hackmd.io/_uploads/rywIPYq0p.jpg)
（圖二：左腳異常）

![image-000063](https://hackmd.io/_uploads/rk6MDKcA6.jpg)
![image-000063](https://hackmd.io/_uploads/Hk3DwtcA6.jpg)
（圖三：伏臥狀態）

#### PoseFormerV2

![push-up_003](https://hackmd.io/_uploads/r1aVhZ926.gif)

#### 比較

此外，在介於正面和側面的視角中，PoseFormerV2所描繪出的三維身體姿態品質也介於兩者之間。其膝部的彎曲角度雖仍有些過於放大，但並不如正面視角那般辨識失敗，仍有一定的可信度。

HybrIK則出現和側面視角估測時同樣的問題，其對於遮蔽部位的估測經常出現不穩定的漂移，而伏臥時的左手（臂膀部分被遮蔽）三維成像也有錯誤的移位，正確度和穩定性不如PoseFormerV2來得高。

GLAMR這次表現出了相較前兩個測試項目，更為穩定的測試平面結果。雖然模型同樣有直立擺放的問題，不過除此之外無明顯問題。推測GLAMR能輸出較好的結果，可能是因為拍攝角度使身體部位較少完全遮蔽的部分（在側面視角中，人物的右側軀幹始終被遮蔽），該結果也說明GLAMR對於「遮蔽部分的存在與否」較另外兩個估測器更為敏感。

### 4. 多人出現的正面視角

#### GLAMR

{%youtube ofkDyL_VdJ4 %}

#### HybrIK

![004-1](https://hackmd.io/_uploads/BJW4vltRT.gif)
![004-2](https://hackmd.io/_uploads/Hk_4wlK0T.gif)


#### PoseFormerV2

![push-up_004](https://hackmd.io/_uploads/S14k-Gq36.gif)

#### 說明

在多人出現的影像中，PoseFormerV2僅會取其中一人進行估測。而在這次的正面視角中，人物的下半身雖仍會頻繁地被遮住，但其膝部的landmarks一直都處於可見狀態，這也使得PoseFormerV2繪製的三維姿態，在膝部以上相當準確，只有小腿的部分會異常擺動。由此可以推測，PoseFormerV2相當依賴landmarks進行姿態繪製，這點相較MediaPipe或OpenPose的預判能力遜色了點。

HybrIK同樣只會取一人進行估測，但在其三維估測中，可以發現人物回復到起始狀態時，大腿以下的成像會移位到畫面外；而在伏臥狀態，由於人物腰部以下的部位會被遮住，腿部也呈現不自然的彎曲。至於手掌錯誤的姿勢估測，似乎說明HybrIK無法估測過大的手腕彎曲角度。雖然HybrIK的估測對象與PoseFormerV2不同，但也能藉此了解HybrIK存在的問題。

GLAMR的情況延續在HybrIK得到的結果，其於測試平面上的模型也因腰部以下的完全遮蔽而出現嚴重的位移錯誤，也再次突顯了遮蔽部分對GLAMR準確度的影響。

（註：原先本想藉由該測試項目，對GLAMR的多人模型進行測試，不過多人模型在估測該影像時，有報錯的情況，因此後續以其它影像進行多人模型測試）

### 5. 總結

對於遮蔽部分的判讀，雖然HybrIK和PoseFormerV2的輸出各有好壞，不過HybrIK顯然穩定性較PoseFormerV2低，其時常出現異常的大幅移位，PoseFormerV2則無此問題。不過HybrIK對於快速動作的估測，表現出了較好的輸出結果，這點是其相比PoseFormerV2更具優勢的地方。此外，HybrIK額外估測了手掌和腳掌，雖然現在的正確率不高，若能進一步訓練應該能成為另一個優點。

而進一步將GLAMR納入比較，可以發現其雖然是基於HybrIK的基礎進行延伸，但又有著不太一樣的問題。GLAMR最主要的問題在於一旦存在長時間（或頻繁）被遮蔽的身體部位，其輸出結果的正確度就會大幅下降。此外，輸出模型常以直立表示，也顯示其較不適合估測非直立動作，或許提升GLAMR對地面的判斷力，能改善該問題。不過GLAMR能夠將模型直接轉置到一個測試平面上，這點相信是一個相當大的優勢。

## 輸出結果（GLAMR獨立測試）

### 1. 跑步（測試動態模型：起始畫面有遮蔽部分）

{%youtube p_GOPx0oVOk %}

### 2. 溜冰（測試動態模型：起始畫面無遮蔽部分）

{%youtube UpMRr3CTbZI %}

### 3. 走路（測試多人模型）

{%youtube 37uUJdDWpno %}

### 4. 說明

#### 跑步

在跑步的測試中，可以看到在身體完全出現在鏡頭前，GLAMR所估測出的移動路徑有些不自然的歪斜。雖然後續測試平面的模型跑到了畫面外，但考慮中間的模型估測情況，移動狀況應該與於畫面內時類似。

#### 溜冰

而在溜冰的測試中，人物的移動路徑則相對前者穩定而正確。會有這樣的差異，猜測是因為這次的人物全身一開始就在畫面中，因此GLAMR能夠建置模型準確的起始位置。而由此也可知，起始畫面的模型遮蔽情況，會大幅影響後續估測的準確度。只不過溜冰時主要是以「滑動」在移動，而GLAMR似乎無法判斷滑動所造成的位移（只在人物抬腿時有位移發生），是個侷限其功能的缺點。

#### 走路

第三個測試所得到的結果，沒有太大的失準，顯示GLAMR的準確度不會因人數增加而下降，多人模型的運作正常。

## 心得

這次實作的GLAMR進一步延伸HybrIK的功能，將模型展示到了測試平面上。雖然「動態模型」的功能對於伏地挺身這類不會位移的動作，用處似乎不大，不過在遇到跑步這種位移明顯的動作時，便能體現其功用了。是說動態模型也還有不少問題需要解決，改進空間很多（模型動作僵硬、無法捕捉「滑動」的位移），未來的發展值得期待。
