[論文筆記] two-stream和two-stream fusion
論文概述
純屬個人理解,梳理自己思路用,僅供參考(可能會有標點錯誤或語句不通順 +_+)
這裡討論最原始的two-stream
,一篇是2014年的Two-Stream Convolutional Networks for Action Recognition in Videos
,另一篇是2016年的Convolutional Two-Stream Network Fusion for Video Action Recognition
。
Two-Stream
本文的貢獻點:1.提出two-stream ConvNet
來對時空特徵進行建模表示。2.提出了多幀光流作為輸入,對性能提升作用很大。
- 光流圖像中物體的運動可以用密集光流場來可視化描述,為了是cnn網路對motion建模,堆疊多幀光流作為輸入,訓練網路是一種可行的方法。光流描述了運動的矢量,因此在可視化時,可以分別可視化x和y兩個方向,如下圖所示:
- Temporal ConvNet的輸入
運動特徵作為網路的輸入,有以下幾種方式:
Optical flow stacking
: 輸入的大小為w×h×2L,L表示堆疊的幀數。可以描述輸入map某個位置的光流變化。Trajectory stacking
: 輸入大小為w×h×2L,L表示堆疊的幀數。用來描述一個對應特徵點連續的光溜變化。兩者區別如下圖所示:
Bi-directional optical flow
: 輸入大小為w×h×2L,由於是雙向的,L/2表示堆疊的幀數。Mean flow subtracion
: 用來去除部分相機運動對光流的影響。以上集中方式的實驗結果如下:
- Two-Stream 網路結構
雙流網路的結構,由兩個獨立的網路構成,
Spatial stream ConvNet
的輸入是單張圖像,用來對目標和場景的appearance
提取特徵(有些action的識別依賴單張圖像就夠,有些則必須依賴運動和時間特徵)。Temporal stream ConvNet
的輸入是多張相鄰幀的光流,對motion特徵進行表示。通過兩個網路的softmax輸出向量進行融合,來最終確定分類,如下圖所示:
由於當時的video數據集較少,數據集間有存在不小的差異,以此為了利用多個數據集,論文提出Multi-task learning
的方法,通過在對應數據集上設置最後分類層,其他層保持不變,進行fine-tuning
模型。
Temporal stream ConvNet
能夠學到部分運動變化,和部分外觀變化,如下圖所示。
Two-Stream Fusion
本文的貢獻點:1.特徵融合 詳細討論了不同的fusion方法,同時指出不在最後softmax層融合,而是增加conv layer進行融合。2.spatial network
在最後一層conv再添加一次融合,效果好。3.在spatio-temproal
的特徵上pooling效果會更好。
相對上一篇在softmax上進行fusion,這樣的不能提取有效時空特徵。
- Spatial fusion既然主觀上指導有效合理的特徵融合有助於最後的分類,那麼如何進行fusion?對於空間像素級的對應關係,在特徵融合中起重要作用,只要確保兩個網路特徵圖的尺寸大小相同就可以融合。那麼問題又來了,channel上怎麼辦?下面就介紹集中channel融合的方法。通道融合需要確定fusion函數,這裡假設兩個網路的通道數也是想等的。
Sum fusion
: 按對應channel進行矩陣對應位置元素加和,通道數為D。Max fusion
: 按對應channel進行矩陣對應位置元素取最大值,通道數為D。Concatenation fusion
: 將channel堆疊起來,通道數為2D。Conv fusion
: 先將channel堆疊起來,在用1×1的卷積做通道壓縮,通道數為D。Bilinear fusion
: 遍歷channel計算矩陣乘法,會導致通道數驟增,通道數為D×D。說好點是對所有信息融合,說壞點就是分不清主次。網路結構如下圖所示,左圖由於融合,上層只能有一個網路keep,另一個網路則被截斷。下表顯示各種fusion方法達到的效果。
- 在哪裡進行fusion根據上面的論述,應該在哪裡融合,又要保證輸入的H、W、D都一致?如上面的圖中右邊結構所示。先在conv5處進行融合,然後又在fc8進行融合。下表比較了
Conv fusion
在不同位置處效果。過早融合不好,過晚也不好。 - Temporal fusion作者思考如何將特徵在空間和時間上更好的融合,想到了
3D pooling
和3D conv
兩個操作。如下圖所示。3D pooling
利用3×3×3的max pooling
來實現。3D卷積的尺寸大小為3×3×3,即W×H×T×D×D。
- 模型結構網路結構基本上面圖中右邊的一致,只不過左邊的
spatail-temporal network
最後融合之前用了3D conv和3D pooling
。右邊的temporal network
也不用截斷了,最後一層用了3D pooling
。網路的輸入,每次輸入為時間精細fine temporal
,輸入間隔用了大的時間間隔coarse temporal
。訓練時通過spatail-temporal loss和temporal loss
分別訓練。
實驗結果如下表所示,詳細實驗結果與對比請參考文論。
推薦閱讀:
TAG:深度學習DeepLearning | 計算機視覺 |