TSM: Temporal Shift Module for Efficient Video Understanding(ICCV2019)
這是一篇關於視頻理解的文章,主要介紹了一種可以達到3DCNN的效果的,但是保持2DCNN計算量和參數量的方法,叫做TSM(Tempora Shift Module)也就是在一簇要處理的幀之間,把相鄰幀之間的channel進行了交替拼接!比如我把第一幀圖片的某個channel和第二幀之間的的某個channel進行了交替,這樣使得相鄰幀之間包含了對方的信息,因而保證了時間上的信息的獲取,也就是文章中說的時域建模!
這也就是爲什麼這個方法有效的原因了!
【摘要Abstract】
1. 當前的難點:
- 視頻流的大量增長導致了對視頻理解達到高準確率以及低消耗變得十分具有挑戰性;
- 傳統的2DCNN雖然計算量小,但是卻不能好好利用時域上的連續信息(而這又是非常重要的)
- 3DCNN雖然效果很好,但是卻不得不面臨密集的計算量,使得實際應用變得困難
2.本文的着力點:
提出了TSM模塊:能過兼顧良好效果表現以及計算量(Specifically, it can achieve the performance of 3D CNN but maintain 2D CNN’s complexity.)
- TSM做了什麼:在時間維度上,移動了幀與幀之間的一些channel,因此使得幀間的信息得到了交換
- TSM可以怎麼用:這個模塊是可以直接應用在傳統2DCNN的模型上,在以基本上近乎於零的運算量的消耗上使其獲得時域上的信息建模!
- TSM還怎麼用:本文坐着不但在一般視頻上做了工作,還進行了拓展工作,讓該方法可以實時在線運行,但是shift的方式和offline不同
- TSM的主要應用場景:Video recognition以及object detection!兩處!感覺很有作用啊~
【一、 介紹Introduction】
1.前面的鋪墊:
- 強調了時序的重要性:比如打開門的視頻正反播放那麼就是不一樣的結果
- 2DCNN的侷限性:僅僅利用單獨的frames,因此並不能對時序信息進行很好的建模
- 3DCNN的侷限性:儘管可以學習到時空信息,但是運算量巨大,使得應用困難
————————分割線,線下面就是TSM的主要思路——————
2.簡介TSM的思路和想法
- 對於視頻建模可以表示爲:
N: batch size
C: channels
T: temporal dimension
H和W分別是高和寬,也就是分辨率
-
這篇文章的動機:既然卷積操作包括了shift和multiply-accumulate, 所以考慮在時間維度上也進行相應的操作看看效果咋樣
-
(!!!這裏重要,也就是這篇文章主要做的事情,就是解決這兩個問題)文章提到的這種shift的方法在spatial中也有用到過,但是通常會面臨兩個問題,(1)並不高效,儘管shift操作是基本zero FLOP的,但是這也同時會導致數據移動,這一步會使得延遲產生並且增加,而且尤其在視頻文件中,該現象會更加顯著,因爲視頻是5個維度的,上面說過;(2)並不準確,這時第二個問題,如果shifting太多的channels的話將會損壞原有幀的空間新,也就是移動了,那麼就不完整了,並不包含所有的該張圖片本身應該具有的信息!
-
上面兩個問題的解決:(1)改進的shifts策略:並不是shift所有的channels,而是隻選擇性的shift其中的一部分,該策略能夠有效的減少數據移動所帶來的時間複雜度;(2)TSM並不是直接被插入到從前往後的幹道中的,而是以旁路的形式進行,如下圖(b),因此在獲得了時序信息的同時不會對二維卷積的空間信息進行損害!(到這裏基本上聽起來就很靠譜啦!)
-
文章的貢獻:(1)shift策略好,同時捕獲視頻中的時空信息;(2)TSM移動一部分,是shift策略的改進版本;(3)雙向shift用來針對離線視頻理解人物;(4)單向shift用來針對在線視頻理解人物(因爲在線的下一刻的內容我們是不知道的),並且對資源友好,可以整合到edge 設備上進行運行!
【二、相關工作】
介紹了
(1)2D CNN
(2)3DCNN的方法
(3)可以利用兩種信息的Trade-off的方法(可以理解爲融合的方法)
【三、 TSM】!!!
TSM的設計也是圍繞着上面兩個問題展開的:
1.爲了降低shift移動太多會造成數據移動的開銷,只shift一部分channels(按照比例移動,1/8, 1/4, 1/2, 1)
結果如下(延時與shift的比例的關係)左邊圖:
2. 爲了保持特徵的空間完整性,採用了殘差模型,從旁路走TSM模塊,使得TSM還直接的卷積二者都存在
這樣只要控制好比例,就既保持了空間完整性,有增加了時序聯繫性。可以從上圖的(b)中看出residual模式的效果更好!
也可以從實驗結果中看出比例對準確性的影響(不能太大,也不能太小)
- shift比例太大,那麼空間特徵建模能力就會被削弱;
- shift比例太小,那麼時序建模信息能力就會收到損害;
【四、 TSM的網絡】
(1)Offline的雙向TSM 模型
- Backbone: ResNet-50
- TSM的加入模式:Residual Block
- 特點1:對於每個插入的TSM模塊,相當於其感受野得到了擴大2倍,因此可以獲得很好的時序建模!
- 特點2:TSM可以應用的任意的現成的2DCNN上面,使其具有3DCNN的效果但是同時維持2DCNN的計算量
(2)Online的單向TSM模型
- 方式:把之前的frames shifts到當前的frames上,從而也達到了時序信息建模的作用,從而實現在線的recognition功能!
- 推理圖如下:在推理的過程中,對於每一幀(比如Ft),只保存其首先的1/8的feature map。並且保存在cache中,對於下一幀(比如F t+1 ), 那麼就是用Ft上的保存的1/8和當前幀Ft+1上的7/8組合起來。從而生成下一層feature map。如此循環下去!
利用這樣的單向shift策略!
有以下特點: - 特點1:推理過程中的低時延;
- 特點2:低內存消耗
- 特點3:多層時序信息的融合(網絡的每一層都能得到融合!)
【五、實驗相關】
1.實驗設置:
訓練相關
訓練項 | 設置 |
---|---|
訓練數據集 | Kinetics |
epoch | 100(備註,對於其他數據集,epoch減半) |
Initial learning rate | 0.01(decays by 0.1 at epoch 40&80) |
weight decay | 1e-4 |
batchSize | 64 |
dropout | 0.5 |
Fine-tuned | 來自於ImageNet(對於大多數數據集來說) |
- 策略1:基於Kinetics上預訓練的權重進行fine-tune, 並且凍結BN層
測試相關:
- 設置:爲了獲取高準確率,每個視頻採樣多個小片段(其中10個來自Kinetics, 兩個來自於其他)
用到的模型:
- ResNet-50 用來說明本方法比簡單的2D CNN好了很多
用到的數據集:
- Kinetics: 類別繁多但是對時序信息並不是太敏感
- SomethingV1&V2 / Charades / Jester / 這些都是時序性比較強的
- UCF101 / HMDB51:對時序特徵不是那麼的敏感!
最後,個人理解和總結
感覺這篇文章是非常棒的一篇文章
- 最大的特點就是充分考慮了視頻序列中的時序信息!由此與spatial信息相結合,使得實驗效果得到了很大程度的提升
- 其次,設計的TSM模塊是一個很通用的模塊,可以應用在諸多的2D CNN結構上用以提高模型對時序信息的建模
- 後面還對offline和online的一些測試進行了驗證和實驗,值得期待!
最後論文地址:ICCV2019 TSM論文