---
# System prepended metadata

title: '【ViLP】Knowledge Exploration using Vision, Language, and Pose Embeddings for Video Action Recognition'

---

---
slideOptions:
  transition: slide
---

## ViLP: Knowledge Exploration using Vision, Language, and Pose Embeddings for Video Action Recognition

---

## 1. 作者研究動機


影片動作辨識(Visual Action Recognition)往往會使用這四種資料去分析運動的類型
1. 影片
2. 姿態
3. 光流
4. 深度


![image](https://hackmd.io/_uploads/Bk1B7Uz11g.png)


----

目前(2023)關於影片動作辨識技術的探索，還僅止於兩兩結合上述的四種方法

![image](https://hackmd.io/_uploads/B1U8XLzkyg.png)

----

作者認為*姿態估計是確定動作種類的關鍵*
![image](https://hackmd.io/_uploads/Hka3r8fy1l.png)


---

## 2.模型架構

作者的ViLP架構是從現有的BIKE改編過來，擷取上半部Video Encoder 與Category Encoder，然後新增了Pose Encoder



| BIKE | ViLP | 
| -------- | -------- |
| ![image](https://hackmd.io/_uploads/HkxUu8GJJl.png)    | ![image](https://hackmd.io/_uploads/Bk74KLz11x.png)   |

>Bidirectional Cross-Modal Knowledge Exploration for Video Recognitionwith Pre-trained Vision-Langua
> https://arxiv.org/abs/2301.00182

----

整個model大致的流程:

###### 1. 使用openpose得到影片每幀姿態熱值圖
###### 2. 熱值圖、影片、分類名稱都經過Encoder編碼
###### 3. 合併熱值圖與影片的編碼
###### 4. 計算合併後的每一幀讓整個影片判斷為該分類的重要性(PCS)
###### 5. 加權平均算出影片編碼與文本編碼的相似度

![image](https://hackmd.io/_uploads/rknC5wM1kl.png =550x)


---

### Pose Encoder Part

首先使用OpenPose得到18個人體關節的熱值圖
![image](https://hackmd.io/_uploads/rku6EOGy1e.png)

----

先通過各自資料型態的Encoder，都使用CLIP的預訓練參數再通過sigmoid統一最大值，接著兩者相乘(element wise product)合併影片與姿態編碼


| 公式 | 圖 | 
| -------- | -------- | 
| $𝑓_𝑛 = 𝜎(𝑝_𝑛) ◦ 𝑣_n$ |![image](https://hackmd.io/_uploads/B1Z1YOGykl.png =300x)
|

$p_n$:pose embeddings
$v_n$:video frame embeddings

---

### V-PCS

這部分架構與公式其實跟BIKE完全相同，都是為了獲得影片中每一幀的重要性



|  ViLP | BIKE | 
| -------- | -------- |
| ![image](https://hackmd.io/_uploads/S1RwgtMk1x.png)    | ![image](https://hackmd.io/_uploads/B1c2eYM1Je.png)
   |

----

![image](https://hackmd.io/_uploads/rJtXr9MyJx.png):使用餘弦相似性計算文字標籤與影片中的T個幀在向量空間中有多接近

![image](https://hackmd.io/_uploads/S1R5H5z11g.png):Softmax做正規化


![image](https://hackmd.io/_uploads/BkvtLqMJJe.png):合併當前幀獲得的多個詞的相似度



![image](https://hackmd.io/_uploads/BySzVqz1Jl.png)

----

Frame saliency的結果，可以知道跟提供標籤文字最符合的是哪一幀

![image](https://hackmd.io/_uploads/Bku2w5GJyg.png)



---

### 訓練目標

讓相同的[幀、類別的文本、類別的index]在向量空間幀更接近

使用對稱交叉熵計算Loss值，可以最大化上述相似性，讓其他關係的相似性最小化
![image](https://hackmd.io/_uploads/Byg959Gyke.png)

----

$L_{V2C}$根據第i個catelog embedded和正樣本Video embedded的相似度相對於全部樣本比例計算loss
![image](https://hackmd.io/_uploads/HyKzj9f1kg.png)
$L_{C2V}$計算第i個Video Embedded和正樣本catelog embedded的相似度相對於全部樣本比例計算loss
![image](https://hackmd.io/_uploads/HkehscfkJl.png)
最後加起來平均

---

## 實驗結果

---

### 1.訓練參數
* Encoder選擇
    * CLIP:用在影片、姿態編碼
    * text encoder:用在類別文本編碼
* 超參數
    * SoftMax的Temperature:0.01
    * 隨機取樣幀數T:8
    * 影片裁減大小:224
    * optimizer:ADAMW
    * learning rate:5e-5
    * epoch:30

----

* Trick: random flipping、random gray scale、random cropping augmen
tations

---

### 2.訓練結果比較
作者同時比較了使用Kinetics-400為CLIP作pre-train與沒有做兩種情況

在沒有pre-train的情況下，相比於原版BIKE架構都有小幅提升，也是所有方法中效果最好的
![image](https://hackmd.io/_uploads/SJN8wxmk1x.png)

----

有pre-train的情況下相比原版也有小幅提升

![image](https://hackmd.io/_uploads/rkIYdxXJJe.png)

----

作者也提到了在使用ViT-B/32這個backbone時沒有預訓練的結果反而會比有預訓練的結果好
![image](https://hackmd.io/_uploads/rJUvolmkkx.png)
![image](https://hackmd.io/_uploads/HyswigQkJx.png)
> 上是沒有預訓練，下是有做預訓練

---

### 3.消融實驗

作者將影片、姿態、文字排列組合，比較移除任一模快後的結果

加入姿態後準確度皆有提升
|          |          | 
| -------- | ------- |
| ![image](https://hackmd.io/_uploads/HyOF3emkke.png)     | ![image](https://hackmd.io/_uploads/SyQ_Remkkx.png)     |

----

在即使不加入文字編碼的情況下，還是可以比有文字編碼準確度高，證明姿態估計在影像動作辨識上更加有優勢
![image](https://hackmd.io/_uploads/BJTw1W7yyx.png)

----

但是如果少掉了影片，準確度就會掉很多，作者認為影片編碼器捕捉了像是背景和場景內的其他姿態或文本無法描述的細節，這些細節對決策又至觀重大
![image](https://hackmd.io/_uploads/ByyVg-XJ1l.png)


---

## 總結

ViLP 框架結合姿勢、視覺和文本模態，通過利用這三種模態的互補信息，取得了當前最先進的準確度結果