## Diverse Human Motion Prediction Guided by Multi-Level Spatial-Temporal AnchoRS
[github](https://github.com/Sirui-Xu/STARS)
### 概述
該研究提出 **STARS(Spatial-Temporal Anchor-based Sampling)方法**,透過將潛變量分解為 **「可學習的決定性錨點」** 與 **「隨機噪聲」** ,並結合**時空分解**與 **IE-STGCN 網路**,成功同時**提升了人體動作預測的多樣性與準確性**,克服了傳統生成模型的 **mode collapse** 與**長期預測困難** 的問題。
### 內容
1. **提出 STARS(Spatial-Temporal Anchor-based Sampling)方法**:將潛變量分解為隨機噪聲與可學習的決定性「錨點」,避免僅依賴隨機取樣,促進多樣性並捕捉不同模式。
2. **時空分解**:進一步將錨點拆解為「空間錨點」與「時間錨點」,分別控制動作的空間差異與時間差異,提供更直觀且可解釋的控制能力。
3. **設計 IE-STGCN(Interaction-Enhanced Spatial-Temporal Graph Convolutional Network)**:在骨架序列的圖卷積網路中引入錨點,並利用空間鄰近性與跨層交互共享來提升預測能力。
4. **統一框架**:兼顧隨機預測與確定性預測,在多樣性與準確性上均優於現有方法,提供一個統一且更高效的動作預測框架。

### 資料集
---
| 名稱 | 主體/頻率 | 關節數(V) | 任務 |
|:----------:|:-------------------------------:|:------:|:-------------------------------------------:|
| Human3.6M | 11 位受試者,約 360 萬幀,50 Hz/s | 17 | 給定過去 25 幀(0.5秒),預測未來 100 幀(2秒) |
| HumanEva-I | 3 位受試者,60 Hz/s | 15 | 給定過去 15 幀(0.25秒),預測未來 60 幀(1秒) |
| 參數 | 設定 |
|:-----------:|:----------------------------------------:|
| epoch | 500 |
| batch size | 16 |
| 每個 epoch 處理的訓練樣本 | Human3.6M:5000,HumanEva-I:2000 |
| DCT 係數(M) | Human3.6M:前 20 個,HumanEva-I:前 8 個 |
| 各層通道數 𝐶^(𝑙)^ | C^(0)^=3, 128, 64, 128, 64, 128, 64, 128, C^(8)^=3 |
### 架構圖
---
[維度計算](https://hackmd.io/@q_bRZRi5Q2iTv2zdBQYQHg/rkqWvcnqgg)

#### 1. 過去動作序列輸入及 DCT 前處理。
* 輸入一段長度為 𝑇~ℎ~ 的過去動作序列 𝑋。



* X:是一個長度為 𝑇~ℎ~ 的序列(時間維度)
* 𝑥~𝑖~:第 𝑖 個時間點的人體姿態
* V:關節數
* C^(0)^:每個關節的座標維度,通常是 3。
* DCT 前處理:
將最後一幀姿態 𝑥~𝑇ℎ~ 重複 𝑇~𝑝~ 次補到序列後面以補足序列長度。


>因為 DCT 需要固定長度的輸入
施以離散餘弦轉換(DCT)將時間序列轉換到頻率域。

* C:一個事先定義好、固定的DCT「基底函數」,用來把時間域的序列 𝑋 轉換到頻率域。
* 𝑀:選擇的 DCT 頻率分量數,通常不需要保留所有頻率,因為高頻部分大多是雜訊或細微擾動 → 只取前 𝑀 個頻率分量(低頻),丟掉其餘的高頻
得到**張量**形式的頻率域特徵。

#### 2. 時空圖卷積編碼初步特徵。
* 將頻率域特徵作為 ST-GCN(Spatial Temporal Graph Convolutional Network)時空圖卷積網絡的輸入,構建「關節-頻率」的圖結構(Graph)。
>轉成圖結構之後,ST-GCN 就能同時利用「空間關係」和「頻率關係」來學習,對應到人體動作的物理結構與時間變化。

* **節點 (Nodes)**
每個「頻率–關節」的組合(𝑓~𝑖~,𝑣~𝑗~)對應一個**節點**,總共有 𝑀×𝑉 個節點,其中:
* 𝑀:DCT 保留的頻率數量
* 𝑉:關節數量
* **邊 (edges)**
邊 (i, j) 的權重由 鄰接矩陣 (adjacency matrix) Adj^(𝑙)^[i][j] 來表示,維度是MV×MV。
代表節點之間的連結關係,為了簡化學習, adjacency 被拆成 空間部分 和 頻率部分:

* Adj~s~^(𝑙)^:空間 adjacency(只連結「同一頻率下,不同關節」)
* Adj~f~^(𝑙)^:頻率 adjacency(只連結「同一關節,不同頻率」)。
* 頻率域特徵經由 ST-GCN 層的圖卷積運算,對這些**節點**進行特徵提取,從而初步編碼出動作的時空特徵表徵。
#### 3. ST-GCN 基本運算
ST-GCN 的每一層都透過圖卷積運算將輸入特徵 𝐻^(𝑙)^ 投影到下一層:

1. 通道重組:把每個節點的 𝐶^(𝑙)^ 維特徵映到 𝐶^(𝑙+1)^。

2. 頻率聚合(同關節、跨頻率):第 𝑖 個節點會按 𝐴𝑑𝑗~𝑓~[𝑖,𝑗] 權重,累積所有頻率鄰居 𝑗 的信息。

3. 空間聚合(同頻率、跨關節):再沿骨架拓撲(相鄰/對稱關節)收集訊息,得到同一頻率下的空間融合結果。

5. 非線性:去噪/稀疏/增加表達力。

#### 4. Spatial-Temporal Anchor 注入與隨機噪聲融合
* Anchor-Based Sampling
過去的動作生成模型通常直接用**隨機噪聲取樣** 𝑧∼𝑝(𝑧) 來增加多樣性。
引入一組可學習的錨點參數 𝐴={𝑎~𝑘~}^𝐾^~𝑘=1~ 代表**確定性 (deterministic) 成分**,用來捕捉不同模態的「大方向」;隨機噪聲 𝑧 則作為**隨機性 (stochastic) 成分**,用來表現模態內部的細節差異。
* **Anchor 𝑎~𝑘~∈𝐴**
128 維的可學習向量,每個 Anchor 在訓練過程中透過損失函數學得(PyTorch),逐漸對應到一種「主要模式」。不同 Anchor 的分佈會自動調整,確保能覆蓋多種未來動作類型。
* 空間錨點 𝐴~𝑠~={𝑎^𝑠^~𝑖~}:在 latent space 裡代表一種「空間上的動作傾向」。
* 時間錨點 𝐴~𝑡~={𝑎^𝑡^~𝑗~}:在 latent space 裡代表一種「時間上的動作特徵」。
把一組空間錨點與一組時間錨點兩兩配對,就會形成 𝐾 = 𝐾~𝑠~ x 𝐾~𝑡~ 個「時空組合錨點」。
* **隨機噪聲取樣 𝑧∼𝑝(𝑧)**
64維的向量,從先驗分佈 𝑝(𝑧) 取樣,常用設為標準高斯分佈 𝑁(0,𝐼)。在固定某個 Anchor 的情況下,增加 細微隨機變化(micro-level 差異),避免模型在同一模態下產生完全一樣的動作序列。
* 在指定的卷積網絡層會引入 **空間–時間錨點** ,用於控制動作的空間模式與時間頻率模式,使模型聚焦於不同的動作模式。
* 在一般情況下,模型預測為:

* 在 **多層級 (multi-level)** 設計下,會有兩層 Anchor 注入(第 4 、 6 層):

* 新的 multi-modal 生成分布
綜合所有「不同模式 (Anchor)」和「模式內的隨機變化 (Noise)」後模型能生成所有可能的未來動作的機率分布。

#### 5. ST-GCN 層特徵提取與約束
這些機制讓模型能持續提取更高階的時空特徵,同時保留骨架結構的物理合理性。
1. **空間交互剪枝**:只保留骨架中相鄰關節與左右對稱關節的連接,將不合理的關聯權重設為 0,避免網絡學習到不合理的依賴關係。
其中,M~s~ 是一個「只允許合理空間連邊」的 0/1 遮罩矩陣,形狀和空間鄰接相同。



2. **跨層交互共享**:相鄰或間隔的卷積層共用部分鄰接矩陣參數,避免在不同層中重複學習相同的關節關聯模式,降低參數量並強化一致性。
實驗中發現每隔一層共享鄰接矩陣是一種有效做法。

#### 6. 輸出預測係數並重建未來動作序列
經過最終一層 ST-GCN 圖卷積後,模型模型先把最終特徵 𝐻^(𝐿)^∈𝑅^(𝑀𝑉)×𝐶^ reshape 成 𝑌∈𝑅^𝑀×𝑉×𝐶^(仍在頻率域),並輸出 𝐾 組預測的 DCT 係數。

對這些頻率域係數進行反向離散餘弦轉換 (IDCT),將它們還原回時間域的動作序列。


取出最後 𝑇~𝑝~ 幀,作為模型的未來動作預測。


### 指標
---
1. **APD(Average Pairwise Distance)**:測量預測樣本之間的平均距離(↑)

* 𝐾:候選條數;預設𝐾=50
* :第 𝑘 條候選預測序列(長度 𝑇𝑝)
* ∥⋅∥~2~:歐氏(ℓ2)距離,單位是公尺。
2. **ADE(Average Displacement Error)**:測量預測位置和真實位置之間的平均距離(↓)

* 𝑇𝑝:預測長度
* min~k~:在 𝑘=1,…,𝐾 的候選中,取距離最小的那一條
* :第 𝑘 條候選預測序列(長度 𝑇𝑝)
* Y:單一真值未來序列(長度 𝑇𝑝)
* ∥⋅∥~2~:歐氏(ℓ2)距離,單位是公尺。
3. FDE(Final Displacement Error):測量預測的最後位置與真實位置之間的距離(↓)

* min~k~:在 𝑘=1,…,𝐾 的候選中,取距離最小的那一條
* :第 𝑘 條候選預測序列(長度 𝑇𝑝)
* [𝑇~𝑝~]:表示預測長度的最後一幀
* Y:單一真值未來序列(長度 𝑇𝑝)
* ∥⋅∥~2~:歐氏(ℓ2)距離,單位是公尺。
4. MMADE(Multi-Modal ADE):針對每個真實軌跡,選擇最接近的候選預測來計算平均誤差(↓)

* N:真實軌跡的多模態數量
* 𝑇𝑝:預測長度
* min~k~:在 𝑘=1,…,𝐾 的候選中,取距離最小的那一條
* :第 𝑘 條候選預測序列(長度 𝑇𝑝)
* :多模態真值集合
* ∥⋅∥~2~:歐氏(ℓ2)距離,單位是公尺
5. MMFDE(Multi-Modal FDE):針對每個真實軌跡,選擇最接近的候選預測終點來計算平均誤差(↓)

* N:真實軌跡的多模態數量
* min~k~:在 𝑘=1,…,𝐾 的候選中,取距離最小的那一條
* :第 𝑘 條候選預測序列(長度 𝑇𝑝)
* [𝑇~𝑝~]:表示預測長度的最後一幀
* :多模態真值集合
* ∥⋅∥~2~:歐氏(ℓ2)距離,單位是公尺
### 論文結果
---
1. 量化比較實驗(K = 50):在 Human3.6M 和 HumanEva-I 資料集上,與 GMVAE, DeLiGAN, DSF, DLow, GSPS 等基準方法比較。Human3.6M 和 HumanEva-I 均在五項指標勝出。

2. 多層級時空錨點的消融實驗:探討多樣性與準確率的 trade-off。證明了多層級錨點有助於捕捉更多模式,但多樣性與準確率之間存在 trade-off。

3. 錨點數量與樣本數量的影響:更多錨點與樣本數能帶來更好表現,但樣本數過多會增加計算成本。

4. 泛化能力測試:把 anchor-based sampling 植入到 GSPS 與 IE-STGCN,檢驗是否能帶來一致改進。證明錨點機制是通用的 plug-and-play 模組,能提升不同模型的表現。

5. 質化比較實驗:視覺化多個樣本的起始姿態、最終姿態與中間序列,展示了 STARS 的可控性與合理性。



6. 確定性預測實驗(K = 1):重新訓練 IE-STGCN-Short(短期) 與 IE-STGCN-Long(長期)並與 LTD, STS-GCN, MSR-GCN 比較。在短期與長期預測上都優於基準方法,STARS 不僅適用於多樣性預測,也能在確定性預測上達到 SOTA 水準。
