運動與視訊

3D 卷積網路

3D 卷積網路把一般的卷積從二維延伸到三維,做法是讓卷積核除了在高與寬上滑動,也在時間上滑動。2D 濾波器看的是單一影格的一個小空間區塊,而 3D 濾波器(例如 3×3×3)看的是橫跨數格的一個小時空體積,因此它能在單一個統一的運算中,直接把運動圖樣(一條邊如何移動、一隻肢體如何擺動)與外觀「聯合」學習,而非透過分開的光流流。

具體而言,輸入是一個形狀為「時間 × 高 × 寬 × 通道」的片段張量,每個卷積核除了空間範圍 k_h 與 k_w,還有一個時間範圍 k_t;網路把這類層與 3D 池化堆疊起來。C3D(Tran 等人,2015)以全程使用簡單的 3×3×3 卷積核使其普及。代價十分高昂:加上一個時間維度,相對於可比的 2D 網路會使參數與計算量倍增,使 3D CNN 既渴求資料又訓練緩慢。一個關鍵的效率構想是因式分解:R(2+1)D 把每個 3D 卷積拆成一個空間 2D 卷積接著一個時間 1D 卷積,這既削減參數、又多加一個非線性(提升準確度),且更易最佳化;Pseudo-3D(P3D)與 S3D 採用相關的分解。

這個實務瓶頸形塑了該領域的歷史。從零訓練時,3D CNN 需要龐大的已標註影片(Sports-1M,後來是 Kinetics)才能勝過「2D 加運動」的方法,因為它們參數遠多、又沒有方便的預訓練。這正是膨脹法(I3D)所填補的落差——它從 ImageNet 預訓練的 2D 網路引導出 3D 濾波器;而後來的高效設計(X3D,沿影格數、解析度、寬度等軸擴展一個小網路;以及 SlowFast)則讓時空卷積兼具準確與負擔得起。

乍看之下,3D CNN 像是處理影片「理所當然」的方式,但參數與計算量的暴增,使得在沒有龐大資料集的情況下從零訓練不切實際。像 R(2+1)D 這類因式分解的變體常以更少參數追平甚至勝過完整 3D 卷積,提醒我們「更多維度並非免費」。

又稱
3D CNNC3Dspatiotemporal convolution