Human Activity Recognition — SlowFast Network

CW Lin
6 min readMar 24, 2020
Photo by Farsai Chaikulngamdee on Unsplash

影像分類、物件偵測等電腦視覺技術,隨著ImageNet、COCO數據集的挑戰發展出許多達到人類判斷水準的類神經網路。
而行為識別是個比影像的物件偵測難度更高的一個領域,他需要透過理解一段 video 做出預測,比一般影像(二維度空間)還要多了時間的維度。近年來儘管有些發展,但尚無法到達人類的理解層次。

如同 ImageNet,行為辨識也有個 benchmark: ActivityNet,是個動作辨識相關之競賽,首次舉辦於CVPR2016年,他共有六種task的挑戰:

Task 1: Temporal Action Proposals
Task 2: Temporal Action Localization
Task 3: Dense-Captioning Events in Videos
Task A: Trimmed Action Recognition
Task B: Spatio-temporal Action Localization
Task C: Trimmed Event Recognition

這邊我將 focus on task B,其餘的介紹可以參考這篇

Spatio-temporal Action Localization

這個task 需要判斷影片中哪個位置有人,並且判斷那個人在做什麼動作。使用的資料級是 AVA。

先來看AVA資料 :https://research.google.com/ava/index.html
資料是 csv 檔,內容及欄位如下:

所以呢 是一堆youtube的影片,要train的話還要有download 小工具才行,可以參考 facebookresearch/video-long-term-feature-banks (全部download並extract成 frame的話有大概有500G 且訓練似乎也不容易,自己玩的話還是建議不要train 直接拿pre-train好的model來試就好XD)
共有 430個 15-minute movie clips,每秒 label 包含每個人的位置及動作,train 共label約 83萬個動作,val 約 23萬個動作,共有 80 種動作類別。

這邊介紹這個task在去年表現最好由FAIR 發表的 SlowFast network

AVA challenge 2019
action category

paper: https://arxiv.org/abs/1812.03982
github: https://github.com/facebookresearch/SlowFast

SlowFast network

傳統影像處理只有空間上(x,y) 兩個維度,但對於video (x,y,t)多了時間的維度,而作者認為時間和空間的維度不應等同看待,空間信息較為緩慢,ex: 一個人在跑步,空間的信息不太發生變化,短時間內皆是”人”這個類別,但對於時間維度,變化是很快的(此人隨時可能是跑步或走路或著只是站著)。

受到生物學靈長類視覺系統中視網膜的啟發,在視網膜細胞中 80%是P-cell負責空間和顏色,20%是M-cell 負責響應運動變化。作者建立雙路的slowfast 網路來分別處理空間和時間的訊息。

Slow pathway

負責捕捉空間的信息,架構可以試任何的3D convolutional network,主要特色是使用low frame rate input(large temporal stride)。

fast pathway

負責捕捉運動信息,使用 high frame rate input (low temporal stride),並且使用較少的channel數 (經實驗後使用slow pathway的1/8 channel 數)。low channel數可以大幅降低運算量(因一般計算複雜度於channel為二次關係)使fast pathway的運算量大約變成slow pathway的 1/4(相當於P,M-cell的比例),同時也可以把low channel看成對空間信息較不敏感。

兩個pathway都沒有 temporal downsampling(沒有大於1的 temporal stride,也沒有temporal pooling) 以保持時間保真度。

網路架構如下:

實作上讀取video的frame後sample部份給slow pathway 部份給fast pathway ,並且取一個frame做object detection 如下圖:

側連結

在pool1, res2, res3, res4 有側連結將fast pathway 連到 slow pathway。

對於兩個網路在時間維度不同shape 的問題提出了三種解決方案(如下),並且經過實驗選擇了較佳的方案(time -strided convolution)作為default

實測

使用這個fork 來跑 (因官方好像還沒release)

因為是每蒐集64個frame (~2秒) 才跑一次偵測,所以可以看到有點delay。但這個速度實在還差了一大截,每次推論要花到15 秒左右(1080ti)。

不過這篇paper 主要是提出一個雙向網路不同frame rate的概念來處理時間維度上的運動訊息,並證明了是有效的。讓我們繼續看看未來是否會研發出更方便好用的工具吧~

Reference

https://arxiv.org/abs/1812.03982

https://github.com/facebookresearch/SlowFast

--

--